heesim
heesim
  • 发布:2020-06-11 19:25
  • 更新:2020-06-12 15:26
  • 阅读:2898

【报Bug】华为NOVA7 5G蓝牙onBluetoothDeviceFound接口无法发现设备

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 2.6.16

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: NOVA7 5G版

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

下载官方app “hello uni-app”
进入到蓝牙板块 ,初始化蓝牙模块=》开始搜索蓝牙设备=》选择设备
modal弹框显示已经发现0台设备(表现为搜索不到任何)

预期结果:

能够发现设备

实际结果:

发现设备0台

bug描述:

华为NOVA7 5G版无法发现设备。
问题排查
下载官方app “hello uni-app”
进入到蓝牙板块 ,初始化蓝牙模块=》开始搜索蓝牙设备=》选择设备
modal弹框显示已经发现0台设备(表现为搜索不到任何)
这是官方demo的表现。
自测时排查方案

    //开始搜索蓝牙设备  
            startBluetoothDevicesDiscovery() {  
                if(that.searchLoading){  
                    return   
                }  
                that.searchLoading = true;  
                uni.startBluetoothDevicesDiscovery({  
                    success(res) {  
                        console.log("正在搜索蓝牙2设备...,启动发现设备监听")  
                        setTimeout(function(){  
                            that.stopBluetoothDevicesDiscovery()  
                        },30000)  
                        that.onBluetoothDeviceFound();  
                    },  
                    fail(e) {  
                        that.searchLoading = false;  
                        console.log('搜索蓝牙失败,错误码:' + (e.errCode || e.errMsg));  
                        if (e.errCode === 10000) {  
                            this.initBle();  
                            return  
                        }  
                        if (e.errCode !== 0) {  
                            initTypes(e.errCode, e.errMsg);  
                        }  
                    }  
                })  
            },  
//监听发现蓝牙设备  
            onBluetoothDeviceFound() {  
                    console.log("启动发现设备监听")  
                uni.onBluetoothDeviceFound(devices => {  
                    console.log("发现到设备")  
                    this.getBluetoothDevices();  
                });  

            },

控制台打印:
正在搜索蓝牙2设备...,启动发现设备监听
启动发现设备监听
由此判断,startBluetoothDevicesDiscovery已进入成功回调,onBluetoothDeviceFound并未进入到“发现到设备”这一行。
同时调用getBluetoothAdapterState返回结果可查看到discovery:true。

可以定位onBluetoothDeviceFound接口可能不兼容NOVA7。

另外为了验证蓝牙能力是否正常,直接创建特与定设备的连接

creatConnect() {  

                var deviceId = "D6:0D:2E:41:FD:7A"  
                uni.createBLEConnection({  
                    // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接  
                    deviceId,  
                    success: res => {  
                        console.log(res);  
                        console.log('连接蓝牙成功:' + res.errMsg);  
                        // 连接设备后断开搜索 并且不能搜索设备  
                        uni.showToast({  
                            title: '连接成功',  
                            icon: 'success',  
                            duration: 2000  
                        });  

                    },  
                    fail: e => {  
                        console.log('连接低功耗蓝牙失败,错误码:' + e.errCode);  
                        if (e.errCode !== 0) {  
                            // initTypes(e.errCode);  
                        }  
                    }  
                });  
            },

createBLEConnection走进成功的回调,并且notifyBLECharacteristicValueChange,onBLECharacteristicValueChange都表现正常。能够订阅变化的特征值。

再另外,在NOVA7本机的蓝牙功能模块下,能够发现我需要连接的目标设备。证明NOVA7本身能够搜索到设备的。

2020-06-11 19:25 负责人:DCloud_Android_zl 分享
已邀请:
DCloud_Android_zl

DCloud_Android_zl

蓝牙搜索需要定位权限,检查是否申请定位权限,申请定位权限之后在搜索试一下。

  • heesim (作者)

    谢谢!!是这样的!

    2020-06-12 16:34

该问题目前已经被锁定, 无法添加新回复