uni-app uni.startBluetoothDevicesDiscovery搜索不到已连接过的设备
uni-app uni.startBluetoothDevicesDiscovery搜索不到已连接过的设备
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
操作步骤:
我目前测试是以前能搜到的设备,现在搜不到了。这个设备以前是连接过手机的。其他设备正常
预期结果:
我目前测试是以前能搜到的设备,现在搜不到了。这个设备以前是连接过手机的。其他设备正常
实际结果:
我目前测试是以前能搜到的设备,现在搜不到了。这个设备以前是连接过手机的。其他设备正常
bug描述:
安卓ble搜索不到设备。看到有人说搜索不到已连接过的设备,目前我就一台设备,测试好像也是这个问题,其他的ble设备都是可以搜到的。同样的代码ios是好的。这个代码以前也是好的。就最近突然发现不行了。也试过先关闭蓝牙适配器和关闭蓝牙连接。再搜索。也是不行。就是之前连接过的搜索不到
uni.startBluetoothDevicesDiscovery services这个字段,如果你没有数据,那就不要写这个字段,否则就会出现我这个问题。直接字段删掉就好了。艹
链接上的设备你搜索能搜得到吗 ?
刚试了3.8.4,sdk是3.9.6打爆了之后也不行,我找了7月份打包的apk就可以搜到
在ios手机上开发测试,第一次搜索到指定的蓝牙设备,连接成功后断开;之后重新搜索时,就无法再搜索到之前搜索出来的设备!但是在android手机上就没有这个问题!!!
请问是什么原因?指导下解决方案,谢谢
请问你解决了吗
在使用 uni.startBluetoothDevicesDiscovery
进行蓝牙设备搜索时,如果搜索不到已连接过的设备,可能有以下几种原因和解决方法:
1. 设备未开启蓝牙或未处于可发现模式
- 原因:蓝牙设备可能未开启蓝牙,或者未处于可发现模式。
- 解决方法:确保蓝牙设备已开启蓝牙,并且处于可发现模式(通常蓝牙设备会有指示灯闪烁表示处于可发现状态)。
2. 设备不在搜索范围内
- 原因:蓝牙设备可能超出了搜索范围(通常为10米左右)。
- 解决方法:将蓝牙设备靠近手机,确保在搜索范围内。
3. 设备已被其他设备连接
- 原因:如果蓝牙设备已经被其他设备连接,可能不会出现在搜索列表中。
- 解决方法:断开其他设备的连接,或者将设备重置为可发现模式。
4. uni-app 的权限问题
- 原因:应用可能没有获取到蓝牙相关的权限。
- 解决方法:确保在
manifest.json
中正确配置了蓝牙权限,并且在运行时获取了用户的蓝牙权限。
{
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于蓝牙设备搜索"
}
}
}
在代码中请求权限:
uni.authorize({
scope: 'scope.userLocation',
success() {
uni.startBluetoothDevicesDiscovery({
success(res) {
console.log('蓝牙设备搜索成功', res);
},
fail(err) {
console.error('蓝牙设备搜索失败', err);
}
});
},
fail() {
console.error('授权失败');
}
});
5. 设备缓存问题
- 原因:有时设备的缓存可能导致无法搜索到已连接过的设备。
- 解决方法:尝试清除蓝牙缓存或重启手机。
6. uni.startBluetoothDevicesDiscovery 参数设置问题
- 原因:
uni.startBluetoothDevicesDiscovery
的参数设置可能不正确。 - 解决方法:检查参数设置,确保
allowDuplicatesKey
和interval
等参数设置合理。
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false, // 是否允许重复上报同一设备
interval: 0, // 上报设备的间隔,单位为ms,0表示实时上报
success(res) {
console.log('蓝牙设备搜索成功', res);
},
fail(err) {
console.error('蓝牙设备搜索失败', err);
}
});