Обнаружение подключенных наушников — isWiredHeadsetOn() работает только с гарнитурой

У меня есть одна проблема с обнаружением подключенных наушников. Я использую Intent. ACTION_HEADSET_PLUG и работает хорошо. Я запускаю службу и в методе onCreate() регистрирую получателя через registerReceiver(). В большинстве случаев я получаю трансляцию ACTION_HEADSET_PLUG сразу, поэтому я знаю, подключены наушники или нет.

Но иногда (не знаю почему) я не получаю эту трансляцию сразу после регистрации ресивера - поэтому я не знаю текущее состояние наушников. Может быть, я просто могу предположить, что в таком случае они не связаны, но я не уверен, что это 100% правда. Итак, я нашел метод AudioManager#isWiredHeadsetOn(). и я также добавил необходимое разрешение MODIFY_AUDIO_SETTINGS. Проблема в том, что он корректно работает только с гарнитурой (наушники + микрофон), когда просто подключены наушники, он каждый раз возвращает false. Пожалуйста, у вас есть идеи, как это решить? Я разрабатываю для Android 2.1.


person Perry_ml    schedule 14.07.2012    source источник
comment
Проверьте stackoverflow.com/questions/13610258/   -  person user3106119    schedule 08.07.2014