2***@qq.com
2***@qq.com
  • 发布:2024-06-03 15:04
  • 更新:2024-06-03 19:53
  • 阅读:196

【报Bug】Android onBLECharacteristicValueChange 无法接收到回调信息

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版

HBuilderX类型: 正式

HBuilderX版本号: 4.15

手机系统: Android

手机系统版本号: Android 13

手机厂商: google

手机机型: plxel 4

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

使用writeBLECharacteristicValue接口改变特征值状态

预期结果:

获取onBLECharacteristicValueChange状态回调

实际结果:

没有获取到onBLECharacteristicValueChange回调

bug描述:

在调用writeBLECharacteristicValue写入特征值后 ,没有正常回调onBLECharacteristicValueChange。写入特征值之前已经调用了notifyBLECharacteristicValueChange接口。同样的代码,ios、小程序都可以正常回调。

2024-06-03 15:04 负责人:无 分享
已邀请:
2***@qq.com

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

2***@qq.com

2***@qq.com (作者)

刚验证了一下,安卓如果只检测一个特征值,是可以正常返回的。检测多个不能正常返回onBLECharacteristicValueChange。

要回复问题请先登录注册