uniapp中微信小程序——蓝牙连接并通信

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

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

初始化蓝牙模块
openBluetoothAdapter

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

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

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

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

监听蓝牙低功耗连接状态改变事件。包括开发者主动连接或断开连接,设备丢失,连接异常断开等等
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. 调用onBLEConnectionStateChange,用来监听蓝牙连接是否断开。
  9. 调用getBLEDeviceServices,获取当前蓝牙设备的所有服务,这里需要注意的是每个蓝牙设备的服务不同,需要拿到你需要的服务,这个就需要跟蓝牙模块的技术联系,看他们是哪个服务。**
  10. 调用getBLEDeviceCharacteristics,根据服务拿到它里面的特征,因为我是对蓝牙设备进行通信,需要发送数据所以这里我需要根据这个接口拿到对应写入的服务Id。**
  11. 调用notifyBLECharacteristicValueChange,这个Api用来开启蓝牙特征值变化时的回调,在上一个接口中拿到的服务,当服务属性notify或indicate为true时,我们才需要真正调用这个Api。**
  12. 调用onBLECharacteristicValueChange,我这里是向蓝牙发送数据后再调用,蓝牙设备如果回复了会进行回调,你就可以在里面处理你拿到的数据,这里需要注意的是,它会有很多次回调,但是你要拿到你需要的服务的值,我是根据characteristicId进行判断的。**
  13. 调用offBLECharacteristicValueChange,
  14. 调用closeBLEConnection,与当前蓝牙设备断开连接。**

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

相关推荐
liangdabiao16 小时前
开源AI拼豆大升级 - 一键部署cloudflare page - 全免费 web和小程序
前端·人工智能·小程序
px不是xp18 小时前
DeepSeek API集成:让小程序拥有AI大脑
javascript·人工智能·小程序
小汪说干货19 小时前
2026年4月最新|公众号文章插入文档附件3种技术方案
javascript·小程序
QQ227923910219 小时前
Java springboot基于微信小程序的智慧旅游导游系统景点门票酒店预订(源码+文档+运行视频+讲解视频)
java·spring boot·微信小程序·maven·vuejs
小汪说干货1 天前
2026年4月优化版|公众号文档格式附件插入3种方案(推荐“附链”小程序)
小程序·微信公众平台
万岳科技系统开发1 天前
商城系统搭建自建平台与入驻第三方平台对比分析
数据库·小程序·架构
笨笨狗吞噬者2 天前
uni-app 运行时揭秘:styleIsolation 的转化
前端·微信小程序·uni-app
神の愛2 天前
JeecgBoot-Uniapp
uni-app
double_eggm2 天前
微信小程序3
微信小程序·小程序
杰建云1672 天前
小程序如何提升留存?
小程序·小程序制作