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

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

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

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

Вернуть комплект устройств, находящихся в состоянии STATE_CONNECTED

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

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

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

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

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

Итак, что есть STATE_CONNECTED в яблочко?

1 ответ

Решение

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

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

Это не означает, что пользователь в настоящее время использует гарнитуру для разговора. Это означает, что гарнитура готова к общению с телефоном.

Другие вопросы по тегам