1 关键字

蓝牙;可用设备;状态

2 问题描述

问题现象:快速关闭后开启蓝牙开关,界面没有显示可用设备列表,蓝牙扫描不到设备,并且蓝牙状态不对,一直处于4状态。

3 问题原因

3.1 正常机制

蓝牙的状态在开启与关闭之间快速切换时,蓝牙在开启状态时,可以显示可用设备列表。

3.2 异常机制

蓝牙的状态在开启与关闭之间快速切换时,蓝牙在开启状态时,无法显示可用设备列表。

4 解决方案

在XTS测试代码中,enablebluet和disablebluet之间会休眠3秒,避免出现蓝牙状态机的混乱。

所以只要避免快速在开启和关闭状态切换蓝牙状态即可。

    //文件路径test\xts\acts\communication\bluetooth_ble\src\main\js\default\test\BluetoothBle.test.js
    async function tryToEnableBt() {
        let sta = bluetooth.getState();
        switch(sta){
            case 0:
                console.info('[bluetooth_js] bt turn off:'+ JSON.stringify(sta));
                bluetooth.enableBluetooth();
                await sleep(3000);
                break;
            case 1:
                console.info('[bluetooth_js] bt turning on:'+ JSON.stringify(sta));
                await sleep(3000);
                break;
            case 2:
                console.info('[bluetooth_js] bt turn on:'+ JSON.stringify(sta));
                break;
            case 3:
                console.info('[bluetooth_js] bt turning off:'+ JSON.stringify(sta));
                bluetooth.enableBluetooth();
                await sleep(3000);
                break;
            default:
                console.info('[bluetooth_js] enable success');
        }
    }

 

5 定位过程

将上文代码中的await sleep(3000);注释掉后重新测试,发现在快速切换蓝牙状态的情况下会出现可用设备列表不显示的现象。

6 知识分享

目前ohos的蓝牙功能尚不完善,快速切换蓝牙状态会可能会导致蓝牙状态机混乱,造成可用设备列表不显示的问题。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐