s***@zhdbds.com
s***@zhdbds.com
  • 发布:2020-08-07 16:57
  • 更新:2023-08-28 15:02
  • 阅读:2293

【报Bug】startBluetoothDevicesDiscovery搜寻附近的蓝牙外围设备,services属性无效

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window10 版本1803 ,内部17134.407

HBuilderX类型: 正式

HBuilderX版本号: 2.8.4

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 荣耀v20

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
uni.startBluetoothDevicesDiscovery({  
        allowDuplicatesKey: true, //是否允许重复上报同一设备  
        interval: 200,  
        services: ['FFF0', 'FFB0'],  
            success: e => {  
          uni.setNavigationBarTitle({ title: '扫描蓝牙设备中' })  
                this.searchLoad = true;  
                !this.isListenFound && this.onBluetoothDeviceFound(); // 是否已经监听发现外围设备事件  
            },  
            fail: e => {  
                console.log('搜索蓝牙设备失败,错误码:' + e.errCode);  
                if (e.errCode !== 0) {  
                    initTypes(e.errCode);  
                }  
            }  
        });

操作步骤:

先不设置services,搜索所有设备,查看设备列表中的advertisServiceUUIDs,再根据其中的一个设置services

预期结果:

能够通过services直接在搜索中过滤,不需要自己在已经搜索到的列表根据advertisServiceUUIDs去过滤

实际结果:

services无效

bug描述:

uni.startBluetoothDevicesDiscovery搜索蓝牙设备,无法通过设置services属性过滤,只搜索广播包有对应 uuid 的主服务的蓝牙设备。

2020-08-07 16:57 负责人:DCloud_App_Array 分享
已邀请:
1***@qq.com

1***@qq.com

我也遇到了,过滤参数无效。。

1***@qq.com

1***@qq.com

uni.startBluetoothDevicesDiscovery({
services:['D973F2E0-B19E-11E2-9E96-0800200C9A66'],
allowDuplicatesKey:true,
success: res => {
console.log(res);
resolve(res)
},
fail: err => {
// self.showToast(搜索设备失败 + JSON.stringify(err));
reject(err);
}
})

1***@qq.com

1***@qq.com

还是一样,把所有设备给搜索出来了了

  • s***@zhdbds.com (作者)

    主服务的 UUID 没那么长的哦,你看文档,不过设置也没用。不如得到所有的设备列表,然后根据设备的advertisServiceUUIDs自己过滤吧

    2020-10-15 16:47

8***@qq.com

8***@qq.com

去年的问题,依然不解决

2***@qq.com

2***@qq.com

iOS可以进行过滤,安卓没效果,如果在iOS的services里面设置了非法字符,软件还会直接崩溃,慎用!

胸口碎大石

胸口碎大石

请问这个问题解决了吗?怎么解决的 ?

7***@qq.com

7***@qq.com

2023年了,安卓的过滤还是无效啊

要回复问题请先登录注册