STATE_CONNECTED не означает, что он действительно ПОДКЛЮЧЕН?

#android #bluetooth #android-bluetooth #bluetoothadapter #bluetoothheadset

#Android #bluetooth #android-bluetooth #адаптер bluetooth #bluetoothheadset

Вопрос:

Если мы посмотрим на это, там говорится :

Android одновременно поддерживает только одну подключенную Bluetooth-гарнитуру.

Также объяснение getConnectedDevices() :

Возвращает набор устройств, которые находятся в состоянии STATE_CONNECTED

Возвращаемый тип метода — List<BluetoothDevice> , и в моем случае он возвращает более одного. Один для Galaxy Watch, один для Galaxy Buds.

Я знаю, как определить, какой из них активен в данный момент. Тот, который используется в данный момент, вернет true при BluetoothHeadset.isAudioConnected() вызове. Итак, я не спрашиваю, как найти активное устройство Bluetooth-гарнитуры здесь. Я скорее пытаюсь понять, что STATE_CONNECTED на самом деле означает.

Я думаю, что это также полезно для других, потому что есть много ответов, подобных следующему, которые в некоторых случаях не будут работать должным образом :

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

Это неправильный вариант, если вы просто хотите проверить, разговаривает ли ваш пользователь по телефону.
Это потому, что Bluetooth-гарнитура пользователя станет STATE_CONNECTED сразу после включения Bluetooth-гарнитуры и синхронизации со смартфоном.

Итак, что STATE_CONNECTED именно?

Ответ №1:

Согласно документации, bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) возвращает текущее состояние подключения BluetoothProfile.HEADSET профиля.

Этот вызов возвращается BluetoothProfile.STATE_CONNECTED , если адаптер Bluetooth телефона в данный момент подключен к устройству с профилем гарнитуры.

Это не означает, что пользователь в данный момент использует гарнитуру для разговора. Это означает, что гарнитура готова поддерживать связь с телефоном.