详细问题描述
[内容]
***notifyBLECharacteristicValueChange
启用低功耗蓝牙设备特征值变化时的notify功能,订阅特征值
void plus.bluetooth.notifyBLECharacteristicValueChange(options);
说明:
蓝牙设备服务的特征值必须支持notify或indicate才可以成功调用。 另外,必须先启用notifyBLECharacteristicValueChange才能监听到设备characteristicValueChange事件,即特征值发生变化时通过onBLECharacteristicValueChange注册的事件回调。***
***onBLECharacteristicValueChange
监听低功耗蓝牙设备的特征值变化事件
void plus.bluetooth.onBLECharacteristicValueChange(callback);
参数:
callback: ( BLECharacteristicValueChangeCallback ) 必选 特征值变化回调函数
回调函数参数event对象包括以下属性: deviceId - String类型,蓝牙设备id; serviceId - String类型,蓝牙服务的uuid; characteristicId - String类型,蓝牙特征值的uuid; value - ArrayBuffer类型,特征值的最新值。***
这是文档原文。
在开发过程中发现: 订阅的特征值支持indicate(notify为false,indicate为true),订阅后监听不到value的变化;订阅的特征值支持notify(notify为true,indicate为false),订阅后可以监听到value的变化(虽然这两种特征值在执行notifyBLECharacteristicValueChange时都能成功回调success)。
重现步骤
[步骤] 连接蓝牙(createBLEConnection) → 获取设备服务(getBLEDeviceServices) → 订阅特征值(notifyBLECharacteristicValueChange,特征值写在配置文件中直接订阅) → 监听数据变化(onBLECharacteristicValueChange)
[结果] onBLECharacteristicValueChange 可以获取支持notify特征值的变化,但获取不到支持indicate特征值的变化
[期望] 可以获取支持indicate特征值的变化
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
[IDE版本号]
[windows版本号]
[mac版本号]
uni-app运行环境说明
[运行端是h5或app或某个小程序?]
[运行端版本号]
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
[编译模式是老模板模式还是新的自定义组件模式?]
App运行环境说明
[Android版本号]
[iOS版本号]
[手机型号]
[模拟器型号]
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]
联系方式
[QQ]
血魔东健 (作者)
蓝牙设备:鱼跃血压计
平台:Android
设备:荣耀5平板
2019-05-20 11:20
血魔东健 (作者)
能否给个支持indicate的特征值的数据读取demo?
2019-05-20 12:01
血魔东健 (作者)
我查了一下android原生调用蓝牙的资料,说是indicate特征值是有确认机制的,那文档中有反映确认机制的相关demo吗?
2019-05-20 14:03