STATE_CONNECTED 不代表真的连接了吗?

STATE_CONNECTED doesn't mean it's really CONNECTED?

如果我们看一下 this,它说:

Android only supports one connected Bluetooth Headset at a time.

还有getConnectedDevices()的解释:

Return the set of devices which are in state STATE_CONNECTED

方法的return类型是List<BluetoothDevice>,在我的例子中return不止一种。 一款用于 Galaxy Watch,一款用于 Galaxy Buds。

我知道如何判断当前哪个处于活动状态。 当调用 BluetoothHeadset.isAudioConnected() 时,当前正在使用的将 return 为真。 所以我这里不是问如何找到活动的蓝牙耳机设备。 我更想了解 STATE_CONNECTED 的真正含义。

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

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

如果您只是想检查您的用户是否在 phone 上通话,那么这不是合适的方法。 这是因为用户的蓝牙耳机在蓝牙耳机开机并与智能phone同步后会立即变成STATE_CONNECTED

那么,STATE_CONNECTED 到底是什么?

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

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

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

的通信