Если мы посмотрим на это, то увидим:
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
?