Android 2.1 Detect Bluetooth аудио подключить / отключить - PullRequest
8 голосов
/ 08 июля 2011

Я чешу голову, пытаясь найти способ обнаружить события подключения и отключения Bluetooth-гарнитуры для Android 2.1.В API Level 11 я вижу, что есть некоторые явные, но как мне сделать это в API Level 7?Я просто хочу знать, когда пользователь подключает или отключает гарнитуру или автомобильную стереосистему, способную воспроизводить звук, чтобы я мог приостановить воспроизводимые звуки.

Ответы [ 4 ]

5 голосов
/ 11 июля 2011

Общедоступных API нет. Этот ответ может помочь , когда автор использовал частные API с использованием отражений.

Автор также разместил комментарий о том, как он заставил его работать.

1 голос
/ 06 августа 2012

Не уверен, что это работает в 2.1, но работает в 2.2 и 2.3.

Будет фиксировать изменения состояния подключения Bluetooth-гарнитуры:

Объявите следующий фильтр намерений

        <intent-filter >
            <action android:name="android.bluetooth.headset.action.AUDIO_STATE_CHANGED" />
        </intent-filter>

и в вашем Получателе в onReceive проверьте:

if ("android.bluetooth.headset.action.AUDIO_STATE_CHANGED".equals(intent.getAction())) {
  headsetAudioState = intent.getIntExtra("android.bluetooth.headset.extra.AUDIO_STATE", -2);
}

и сохраните int как статическую переменную. Получите доступ к нему в любое время, когда хотите узнать, подключено ли аудио BT (1) / отключено (0). Не красиво, но выполняет свою работу.

Также проверьте: https://github.com/android/platform_frameworks_base/blob/gingerbread/core/java/android/bluetooth/BluetoothHeadset.java

1 голос
/ 17 июля 2011

Этот выглядит как хороший вариант для обнаружения подключения / отключения Bluetooth.

Если это не сработало, другой хороший вариант - установить таймер в службе, которая вызывает AudioManager.isBluetoothA2dpOn() проверить, подключен ли Bluetooth или отключен.

0 голосов
/ 30 сентября 2011

Вы должны настроить BroadcastReceiver для действия android.bluetooth.headset.action.STATE_CHANGED.Дополнительный android.bluetooth.headset.extra.STATE Intent содержит текущее состояние (отключен, подключен, подключен).Подробнее Исходный код Android

...