微信小程序获取蓝牙流程
注意点:
wx.openBluetoothAdapter(Object object):初始化蓝牙模块。
其他蓝牙相关 API 必须在 wx.openBluetoothAdapter 调用之后使用。否则 API 会返回错误(errCode=10000)。
在用户蓝牙开关未开启或者手机不支持蓝牙功能的情况下,调用 wx.openBluetoothAdapter 会返回错误(errCode=10001),表示手机蓝牙功能不可用。此时小程序蓝牙模块已经初始化完成,可通过 wx.onBluetoothAdapterStateChange 监听手机蓝牙状态的改变,也可以调用蓝牙模块的所有API。
wx.startBluetoothDevicesDiscovery(Object object):
开始搜寻附近的蓝牙外围设备。此操作比较耗费系统资源,请在搜索并连接到设备后调用 wx.stopBluetoothDevicesDiscovery 方法停止搜索。
要搜索的蓝牙设备主 service 的 uuid 列表。某些蓝牙设备会广播自己的主 service 的 uuid。如果设置此参数,则只搜索广播包有对应 uuid 的主服务的蓝牙设备(满足电子烟的一个项目)。建议主要通过该参数过滤掉周边不需要处理的其他蓝牙设备。
wx.onBluetoothDeviceFound(function callback):监听寻找到新设备的事件。
若在 wx.onBluetoothDeviceFound 回调了某个设备,则此设备会添加到 wx.getBluetoothDevices 接口获取到的数组中。
wx.onBluetoothAdapterStateChange(function callback):监听蓝牙适配器状态变化事件。
注意点:
wx.createBLEConnection(Object object):连接低功耗蓝牙设备。若小程序在之前已有搜索过某个蓝牙设备,并成功建立连接,可直接传入之前搜索获取的 deviceId 直接尝试连接该设备,无需进行搜索操作。
请保证尽量成对的调用 createBLEConnection 和 closeBLEConnection 接口。安卓如果多次调用 createBLEConnection 创建连接,有可能导致系统持有同一设备多个连接的实例,导致调用 closeBLEConnection 的时候并不能真正的断开与设备的连接。蓝牙连接随时可能断开,建议监听 wx.onBLEConnectionStateChange 回调事件,当蓝牙设备断开时按需执行重连操作若对未连接的设备或已断开连接的设备调用数据读写操作的接口,会返回 10006 错误,建议进行重连操作。
wx.getBLEDeviceCharacteristics(Object object):获取蓝牙设备某个服务中所有特征值(characteristic)。
wx.readBLECharacteristicValue(Object object):读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用。
并行调用多次会存在读失败的可能性。
接口读取到的信息需要在 onBLECharacteristicValueChange 方法注册的回调中获取。
wx.writeBLECharacteristicValue(Object object):向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持 write 才可以成功调用。
wx.notifyBLECharacteristicValueChange(Object object):启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值。注意:必须设备的特征值支持 notify 或者 indicate 才可以成功调用。另外,必须先启用notifyBLECharacteristicValueChange 才能监听到设备 characteristicValueChange 事件。订阅操作成功后需要设备主动更新特征值的 value,才会触发 wx.onBLECharacteristicValueChange 回调。安卓平台上,在调用 notifyBLECharacteristicValueChange 成功后立即调用 writeBLECharacteristicValue 接口,在部分机型上会发生 10008 系统错误。
wx.onBLECharacteristicValueChange(function callback):监听低功耗蓝牙设备的特征值变化事件。必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送的 notification。