蓝牙连接并与设备进行通信

已下是我在实现蓝牙功能中使用到的所有Api,当然微信小程序中还有很多我没有用到的Api,如果下面没有满足你需求的Api可以去官方文档查看。

初始化蓝牙模块
openBluetoothAdapter

开始搜寻附近的蓝牙外围设备。
startBluetoothDevicesDiscovery

监听蓝牙适配器状态变化事件
onBluetoothAdapterStateChange

监听搜索到新设备的事件
onBluetoothDeviceFound

移除蓝牙适配器状态变化事件的全部监听函数
offBluetoothAdapterStateChange

连接蓝牙低功耗设备。
createBLEConnection

协商设置蓝牙低功耗的最大传输单元 (Maximum Transmission Unit, MTU)。需在 wx.createBLEConnection 调用成功后调用。仅安卓系统 5.1 以上版本有效,iOS 因系统限制不支持。
setBLEMTU

监听蓝牙低功耗连接状态改变事件。包括开发者主动连接或断开连接,设备丢失,连接异常断开等等
onBLEConnectionStateChange

停止搜寻附近的蓝牙外围设备。若已经找到需要的蓝牙设备并不需要继续搜索时,建议调用该接口停止蓝牙搜索。
stopBluetoothDevicesDiscovery

获取蓝牙低功耗设备所有服务 (service)。
getBLEDeviceServices

获取蓝牙低功耗设备某个服务中所有特征 (characteristic)。
getBLEDeviceCharacteristics

启用蓝牙低功耗设备特征值变化时的 notify 功能,订阅特征。注意:必须设备的特征支持 notify 或者 indicate 才可以成功调用。
另外,必须先启用 wx.notifyBLECharacteristicValueChange 才能监听到设备 characteristicValueChange 事件

notifyBLECharacteristicValueChange

监听蓝牙低功耗设备的特征值变化事件。必须先调用 wx.notifyBLECharacteristicValueChange 接口才能接收到设备推送的 notification。
onBLECharacteristicValueChange

断开与蓝牙低功耗设备的连接。
closeBLEConnection

大概描述一下以上所有Api的衔接关系:

  1. 调用onBluetoothAdapterStateChange,用来监听蓝牙适配器状态变化,因为要监听用户蓝牙开启还是关闭,如果中途关闭了则需要断开连接,再次打开蓝牙要开始继续搜索蓝牙设备。
  2. 调用openBluetoothAdapter,初始化蓝牙适配器,失败是用户蓝牙没开启。**
  3. 调用startBluetoothDevicesDiscovery,开始搜索附近的蓝牙设备,这里有个需要注意的点,就是allowDuplicatesKey接口参数,默认是为false,如果你是要显示每个蓝牙的信号值,那这里就必须要传true,这样它就会重复一直上报同一设备,才可以实现蓝牙信息强度实时显示。**
  4. 调用onBluetoothDeviceFound,监听搜索到的蓝牙设备,这里可以对监听到的蓝牙进行过滤,这里将拿到每个蓝牙设备的deviceId,后续调用createBLEConnection时需要用到。**
  5. 调用createBLEConnection,传入已经拿到的deviceId。**
  6. 调用offBluetoothAdapterStateChange,因为已经连接成功,这个时候不需要再监听蓝牙适配器状态了。
  7. 调用stopBluetoothDevicesDiscovery,因为已经连接成功,不需要再继续搜索蓝牙设备,并且一直处于搜索比较耗费系统资源。**
  8. 调用setBLEMTU,因为在安卓设备上可能传输不完整,目前此接口设置范围为 (22,512) 区间内,单位 bytes。**
  9. 调用onBLEConnectionStateChange,用来监听蓝牙连接是否断开。
  10. 调用getBLEDeviceServices,获取当前蓝牙设备的所有服务,这里需要注意的是每个蓝牙设备的服务不同,需要拿到你需要的服务,这个就需要跟蓝牙模块的技术联系,看他们是哪个服务。**
  11. 调用getBLEDeviceCharacteristics,根据服务拿到它里面的特征,因为我是对蓝牙设备进行通信,需要发送数据所以这里我需要根据这个接口拿到对应写入的服务Id。**
  12. 调用notifyBLECharacteristicValueChange,这个Api用来开启蓝牙特征值变化时的回调,在上一个接口中拿到的服务,当服务属性notify或indicate为true时,我们才需要真正调用这个Api。**
  13. 调用onBLECharacteristicValueChange,我这里是向蓝牙发送数据后再调用,蓝牙设备如果回复了会进行回调,你就可以在里面处理你拿到的数据,这里需要注意的是,它会有很多次回调,但是你要拿到你需要的服务的值,我是根据characteristicId进行判断的。**
  14. 调用offBLECharacteristicValueChange,
  15. 调用closeBLEConnection,与当前蓝牙设备断开连接。**

以上就是我所使用到的所有蓝牙Api,我后面有标识**都是必须要使用的APi,其它的Api就根据每个功能需求进行取舍。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐