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 телефона в данный момент подключен к устройству с профилем гарнитуры.
Это не означает, что пользователь в настоящее время использует гарнитуру для разговора. Это означает, что гарнитура готова к общению с телефоном.