0

如果我们看一下这个,它会说:

Android一次支持连接一个蓝牙耳机。

还有的解释getConnectedDevices()

返回处于状态的设备集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什么?

4

1 回答 1

1

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

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

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

于 2020-08-27T08:19:25.543 回答