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就根据每个功能需求进行取舍。

相关推荐
Chengbei1121 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
2601_949950631 天前
用练题簿小程序把课件做成可以在线刷题的内容
小程序·练习·小程序推荐
一几文1 天前
2026年上半年软考高级-系统架构设计师考试真题回顾与解析-综合知识选择题6
小程序·架构·系统架构·软考高级·软考·it证书
qq_316837751 天前
uniapp + Vite + ffmpeg-wasm 0.12.x 集成示例
ffmpeg·uni-app·wasm
zhangminghuan1 天前
微信小程序开发核心知识点全景解析(前端必备硬核基础)
前端·微信小程序·小程序
游戏开发爱好者81 天前
开心上架是什么,一站式 Apple 开发者工作台总览
android·小程序·https·uni-app·iphone·webview
年年CODE1 天前
uni-app 实现 AI 流式问答:H5 EventSource 与微信小程序 onChunkReceived 的兼容方案
uni-app
sltin1 天前
需求到落地:我如何在微信小程序里实现证件照换底、隐私打码与水印相机
数码相机·微信小程序·小程序
lhldsg1 天前
从匿名倾诉到树洞社交:基于Spring Boot与uniapp的多端匿名社交系统设计与实现
spring boot·后端·uni-app
风月说与山鬼1 天前
七、uni-app页面与组件生命周期
前端·uni-app