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

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

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
        && bluetoothAdapter.isEnabled()
        && bluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) == BluetoothProfile.STATE_CONNECTED;
}

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

Итак, что такое STATE_CONNECTED?


person Jenix    schedule 25.08.2020    source источник


Ответы (1)


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

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

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

person matdev    schedule 27.08.2020