h***@163.com
h***@163.com
  • 发布:2020-08-14 17:08
  • 更新:2024-04-28 13:07
  • 阅读:2064

【报Bug】安卓手机 app端 连接蓝牙设备无法同时监听几个characteristic 服务的value变化,只能监听到一个其他的都被覆盖

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.8.5

手机系统: Android

手机系统版本号: Android 10

手机厂商: vivo oppo 三星等,所有安卓机

手机机型: 所有安卓机

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

·1.uni.createBLEConnection()成功的回调里面
2.调用uni.onBLECharacteristicValueChange,
3.setTimeout 2秒后执行uni.getBLEDeviceCharacteristics 在成功回调里面
4.循环调用uni.notifyBLECharacteristicValueChange

预期结果:

app 安卓机 也能监听到多个 characteristic服务的变化指

实际结果:

在小程序 ios跟安卓机都能监听到多个 characteristic服务的变化指
在app ios也能监听到多个 characteristic服务的变化指
但是在app 安卓机就只能监听到一个 characteristic服务的变化指,无法监听到多个characteristic服务的变化指

bug描述:

·1.uni.createBLEConnection()成功的回调里面
2.调用uni.onBLECharacteristicValueChange,
3.setTimeout 2秒后执行uni.getBLEDeviceCharacteristics 在成功回调里面
4.循环调用uni.notifyBLECharacteristicValueChange
在小程序 ios跟安卓机都能监听到多个 characteristic服务的变化指
在app ios也能监听到多个 characteristic服务的变化指
但是在app 安卓机就只能监听到一个 characteristic服务的变化指,无法监听到多个characteristic服务的变化指
//已知有一下两个特征服务 app端: 安卓机只能监听到 2A36的服务返回值, ios能收到两个服务返回值, 小程序端也可以监听两个服务值
// 2A35服务主要负责实时的心率值回传
// 2A36服务主要负责最后测量结果的血压,收缩压值回传
/ {
"uuid": "00002A35-0000-1000-8000-00805F9B34FB",
"properties": {
"read": false,
"write": false,
"notify": false,
"indicate": true //-----------------------
}
}, {
"uuid": "00002A36-0000-1000-8000-00805F9B34FB",
"properties": {
"read": false,
"write": false,
"notify": true, //--------------------------
"indicate": false
}
}
/

2020-08-14 17:08 负责人:无 分享
已邀请:
jxtian

jxtian

为了快速定位问题,请提供一下可复现的示例工程

h***@163.com

h***@163.com (作者) - uni-app开发者

求回复

h***@163.com

h***@163.com (作者) - uni-app开发者

没人遇到这种情况吗?

  • Cris

    Android设备监听一个能实现?能分享一下不?

    2022-06-10 11:50

  • 魔人JOJO

    遇到了,这个问题你解决了嘛?

    2022-08-29 16:46

maskman

maskman

uni.onBLECharacteristicValueChange(CALLBACK)
监听低功耗蓝牙设备的特征值变化事件。必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送的 notification。

云风0214

云风0214 - 前端资深小学生

我也遇到了 有解决的吗

云风0214

云风0214 - 前端资深小学生

    Notify() {  

                setTimeout(() => {  
                    uni.notifyBLECharacteristicValueChange({  
                        deviceId: "DC:0D:30:00:1A:FA",  
                        serviceId: "0000FFF0-0000-1000-8000-00805F9B34FB",  
                        characteristicId: "0000FFF3-0000-1000-8000-00805F9B34FB",  
                        state: true,  
                        success: res => {  
                            console.log(res, '------读取数据111111');  
                            uni.onBLECharacteristicValueChange(res => {  
                                console.log('蓝牙设备特征值变化111111', res)  
                                // this.data.push(this.ab2str(res.value))  
                            })  
                            uni.notifyBLECharacteristicValueChange({  
                                deviceId: "DC:0D:30:00:1A:FA",  
                                serviceId: "0000FFF0-0000-1000-8000-00805F9B34FB",  
                                characteristicId: "0000FFF1-0000-1000-8000-00805F9B34FB",  
                                state: true,  
                                success: res => {  
                                    console.log(res, '------读取数据222222');  
                                    uni.onBLECharacteristicValueChange(res => {  
                                        console.log('蓝牙设备特征值变化222222', res)  
                                        // this.data.push(this.ab2str(res.value))  
                                    })  
                                    setTimeout(() => {  
                                        uni.writeBLECharacteristicValue({  
                                            deviceId: 'DC:0D:30:00:1A:FA',  
                                            serviceId: '0000FFF0-0000-1000-8000-00805F9B34FB',  

                                            characteristicId: '0000FFF2-0000-1000-8000-00805F9B34FB',  
                                            value: this.string2buffer(  
                                                'read:'),  
                                            writeType: 'write',  
                                            success: res => {  
                                                console.log('发送成功',  
                                                    res)  

                                            },  
                                            fail: err => {  
                                                console.log('发送失败',  
                                                    err)  

                                            }  
                                        })  
                                        uni.writeBLECharacteristicValue({  
                                            deviceId: 'DC:0D:30:00:1A:FA',  
                                            serviceId: '0000FFF0-0000-1000-8000-00805F9B34FB',  

                                            characteristicId: '0000FFF2-0000-1000-8000-00805F9B34FB',  
                                            value: this.string2buffer(  
                                                'read:'),  
                                            writeType: 'write',  
                                            success: res => {  
                                                console.log('发送成功',  
                                                    res)  

                                            },  
                                            fail: err => {  
                                                console.log('发送失败',  
                                                    err)  

                                            }  
                                        })  
                                    }, 1000);  
                                },  
                                fail: err => {  
                                    console.log('读取数据失败', err)  
                                }  
                            })  
                        },  
                        fail: err => {  
                            console.log('读取数据失败', err)  
                        }  
                    })  
                }, 3000);  
            },
  • 云风0214

    大佬们 怎么还是收不到蓝牙返回的数据啊 要死了呜呜

    2023-03-11 11:05

2***@qq.com

2***@qq.com

我也遇到了 相同得蓝牙设备 mac地址不一样 特征值 service服务值一样,开启两个监听 前者会被后者覆盖。数据都是后一个传递得,解决了嘛 请问

要回复问题请先登录注册