繁体   English   中英

STATE_CONNECTED 不代表真的是CONNECTED?

[英]STATE_CONNECTED doesn't mean it's really CONNECTED?

如果我们看看这个,它说:

安卓支持一个连接蓝牙耳机在同一时间

还有getConnectedDevices()的解释:

返回处于状态STATE_CONNECTED的设备STATE_CONNECTED

该方法的返回类型是List<BluetoothDevice> ,在我的情况下它返回多个。 一种用于 Galaxy Watch,一种用于 Galaxy Buds。

我知道如何判断目前哪个是活跃的。 当前使用的将在调用BluetoothHeadset.isAudioConnected()时返回 true。 所以我不是在这里问如何找到有源蓝牙耳机设备。 我更想了解STATE_CONNECTED真正含义。

我认为这对其他人也很有用,因为有很多类似以下的答案,在某些情况下不会按预期工作:

public static boolean isConnected() {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    return  bluetoothAdapter != null
        && bluetoothAdapter.isEnabled()
        && bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) == BluetoothProfile.STATE_CONNECTED;
}

如果您只想检查您的用户是否正在打电话,这不是正确的方法。 这是因为用户的蓝牙耳机在打开蓝牙耳机并与智能手机同步后会立即变为STATE_CONNECTED

那么,究竟什么是STATE_CONNECTED

根据文档, bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET)返回BluetoothProfile.HEADSET配置文件的当前连接状态。

如果手机的蓝牙适配器当前已连接到具有耳机配置文件的设备,则此调用将返回BluetoothProfile.STATE_CONNECTED

这并不意味着用户当前正在使用耳机通话。 这意味着耳机已准备好处理与手机的通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM