微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android BLE 蓝牙适配器状态

如何解决Android BLE 蓝牙适配器状态

我正在使用 Android BluetoothAdapter 类来扫描并连接到 BLE 设备。在测试时,来自此类的一个日志记录了“STATE_BLE_ON”的蓝牙适配器状态。经过一些研究,可以将适配器置于某些模式中,以便用户可以关闭经典蓝牙但保持 LE 开启。但是,当我深入研究BluetoothAdapter类的代码时,并没有办法访问到这个状态。唯一可以访问的状态是 STATE_ON、STATE_OFF、STATE_TURNING_ON、STATE_TURNING_OFF。那么测试设备是如何记录这个状态的呢?即使在 Android Developers 网站上,他们也没有提到 STATE_BLE_ON 状态。此状态在 BluetoothAdapter 类中,我只是看不到它被访问的任何地方,也不知道它如何在测试设备上记录此状态。 BluetoothAdapter.getState() 下面。


 * Get the current state of the local Bluetooth adapter.
 * <p>Possible return values are
 * {@link #STATE_OFF},* {@link #STATE_TURNING_ON},* {@link #STATE_ON},* {@link #STATE_TURNING_OFF}.
 *
 * @return current state of Bluetooth adapter
 

@RequiresPermission(Manifest.permission.BLUetoOTH)
@AdapterState
public int getState() {
    int state = getStateInternal();

    // Consider all internal states as OFF
    if (state == BluetoothAdapter.STATE_BLE_ON || state == BluetoothAdapter.STATE_BLE_TURNING_ON
            || state == BluetoothAdapter.STATE_BLE_TURNING_OFF) {
        if (VDBG) {
            Log.d(TAG,"Consider " + BluetoothAdapter.nameForState(state) + " state as OFF");
        }
        state = BluetoothAdapter.STATE_OFF;
    }
    if (VDBG) {
        Log.d(TAG,"" + hashCode() + ": getState(). Returning " + BluetoothAdapter.nameForState(
                state));
    }
    return state;
}***

解决方法

您绝对可以记录状态,因为它是一个 int

您无法访问 STATE_BLE_ON 的原因是它标有 @hide Javadoc 标记。

见:What does @hide mean in the Android source code?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。