{
"uuid": "CBA1D466-344C-4BE3-AB3F-189F80DD7518",
"properties": {
"read": true,
"write": true,
"notify": true,
"indicate": true
}
}
uni.notifyBLECharacteristicValueChange({
state: true,
deviceId: deviceId, // 设备ID
serviceId: serviceId, // 服务UUID,
characteristicId: characteristicId, // 这里的特征值就是上方获取的,支持notify
success(res) {
listenValueChange()
},
fail(err) {
console.error(err)
}
})
function listenValueChange() {
uni.onBLECharacteristicValueChange(res => {
console.log('监听到数据了');
// 结果里有个value值,该值为 ArrayBuffer 类型,所以在控制台无法用肉眼观察到,必须将该值转换为16进制
let resHex = ab2hex(res.value)
// 最后将16进制转换为ascii码,就能看到对应的结果
let result = hexCharCodeToStr(resHex)
console.log(JSON.parse(result).diameter)
uni.$emit('diameter', JSON.parse(result).diameter)
})
}
- 发布:2023-11-20 13:59
- 更新:2024-01-20 08:51
- 阅读:625
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 3.96
手机系统: Android
手机系统版本号: Android 13
手机厂商: 小米
手机机型: 小米10
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
1:初始化蓝牙(√)
2:搜寻蓝牙(√)
3:连接蓝牙(√)
4:启用低功耗蓝牙设备特征值变化时的 notify 功能(√)
5:监听低功耗蓝牙设备的特征值变化事件(×)
1:初始化蓝牙(√)
2:搜寻蓝牙(√)
3:连接蓝牙(√)
4:启用低功耗蓝牙设备特征值变化时的 notify 功能(√)
5:监听低功耗蓝牙设备的特征值变化事件(×)
预期结果:
预期情况可以接收到特征值变化
预期情况可以接收到特征值变化
实际结果:
onBLECharacteristicValueChange回调函数不执行
onBLECharacteristicValueChange回调函数不执行
bug描述:
Android手机连接蓝牙设备后,蓝牙设备发送数据,app端特征值变化回调函数不执行,此功能在IOS端没有任何问题
8 个回复
久智环境 (作者)
1:在Android上使用BLE调试助手,发现没有问题,可以正常接收
2:改用plus api方式调用蓝牙,同样无法收到通知
久智环境 (作者)
开发过程中发现uni.startBluetoothDevicesDiscovery方法中的参数services必须使用大写的serviceId才可以搜寻到,不知道characteristicId,serviceId这些大小写是否有影响,硬件给到的这两个值都是小写的
久智环境 (作者)
有没有官方大佬看下
追梦随想
兄弟搞出来了吗
2023-12-07 16:45
追梦随想
确实收不到,他大爷的,折腾两天也没搞出来,就卡到最后一步了,实测,用苹果可以收到
久智环境 (作者)
没有解决,插件市场的也不行,plus api也用过了,没用,真的脑壳疼
2023-12-19 10:25
追梦随想
onBLECharacteristicValueChange android无返回值
【报Bug】蓝牙uni.onBLECharacteristicValueChange在安卓端微信小程序无效
去年就有这个问题了,一年多了还没修复
追梦随想
我解决了,官方太懒,文档不写清除点。。。
在蓝牙连接后加入代码
一点问题都没有
久智环境 (作者)
我加了这个还是不行,不知道是不是我的使用姿势不对,但ios好好的。。。
2023-12-21 10:13
追梦随想
回复 久智环境: IOS不用加就可以,你看看是不是加错地方了,同时在setBLEMTU内部打印执行结果看看有没有报错
2023-12-21 11:06
久智环境 (作者)
回复 追梦随想: setBLEMTU我是放在createBLEConnection成功的回调函数里执行的,ios确实不用加就可以,安卓的我加了也没用,我都怀疑是设备问题,但是我用其他的蓝牙工具又可以
2023-12-21 11:16
追梦随想
回复 久智环境: 可以问问硬件佬,或者推荐你一个测试蓝牙的小程序:易加蓝牙助手,图标是饿了么的。。。连接上去试试,如果能收到,那就是你代码问题,不能收到就是设备问题
2023-12-21 11:25
久智环境 (作者)
回复 追梦随想: 能给我看看你的代码吗,我的代码顺序是openBluetoothAdapter,startBluetoothDevicesDiscovery,onBluetoothDeviceFound,createBLEConnection,stopBluetoothDevicesDiscovery,setBLEMTU,notifyBLECharacteristicValueChange(这里是提前知道了serviceId和characteristicId),onBLECharacteristicValueChange,我代码看着没有任何问题呀
2023-12-27 13:37
2***@qq.com
我的是Android可以执行,ios时行时不行
追梦随想
不好意思,刚看到,这是全部代码,页面是用我的UI框架 dm-ui