使用writeBLECharacteristicValue接口改变特征值状态
![2***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/f21d54ac9582470387bd8aa7717647bf.png)
- 发布:2024-06-03 15:04
- 更新:2024-06-03 19:53
- 阅读:196
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10 专业版
HBuilderX类型: 正式
HBuilderX版本号: 4.15
手机系统: Android
手机系统版本号: Android 13
手机厂商: google
手机机型: plxel 4
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
获取onBLECharacteristicValueChange状态回调
获取onBLECharacteristicValueChange状态回调
实际结果:
没有获取到onBLECharacteristicValueChange回调
没有获取到onBLECharacteristicValueChange回调
bug描述:
在调用writeBLECharacteristicValue写入特征值后 ,没有正常回调onBLECharacteristicValueChange。写入特征值之前已经调用了notifyBLECharacteristicValueChange接口。同样的代码,ios、小程序都可以正常回调。
![2***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/f21d54ac9582470387bd8aa7717647bf.png)
2***@qq.com (作者)
解决了。Android 不要并行调用notifyBLECharacteristicValueChange接口。使用串行延时100毫秒进行调用。
但是最好在程序实现的时候,不要使用多个特征值进行实现。
notifyBLECharacteristicValueChange(deviceId) {
return new Promise((resolve, reject) => {
uni.notifyBLECharacteristicValueChange({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId, //特征值UUID
state: true,
}).then(res => {
console.log('注册2');
setTimeout(() => {
uni.notifyBLECharacteristicValueChange({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId2,
state: true,
}).then(res => {
console.log('注册3');
setTimeout(() => {
uni.notifyBLECharacteristicValueChange({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId3, //特征值UUID
state: true,
})
}, 100); // 设置延迟时间,这里是0.1秒(100毫秒)
})
}, 100); // 设置延迟时间,这里是0.1秒(100毫秒)
})
})
},
落英甘棠
蒸滴6啊,安卓哪哪哪都要延迟一下,真长记性了
2024-09-13 15:06