Как определить, когда пользователь подключает гарнитуру к устройству Android? (Напротив ACTION_AUDIO_BECOMING_NOISY)

Я занимаюсь разработкой приложения, которое имеет следующий реквизит: если к устройству подключена гарнитура, а пользователь удаляет ее, мне необходимо отключить звук всех потоков. Для этого мне нужно послушатьAudioManager.ACTION_AUDIO_BECOMING_NOISY Broadcast. Хорошо! Не проблема здесь.

Но когда пользовательснова подключает гарнитуруМне нужно включить звук устройства. Но нетAudioManager.ACTION_AUDIO_BECOMING_NOISY обратная трансляция. Я не могу знать, когда гарнитура снова подключена.

Одним из решений является периодически видеть, еслиAudioManager.isWiredHeadsetOn() являетсяtrue но это не кажется хорошим решением для меня.

Есть ли способ определить, когда пользователь подключает гарнитуру к устройству?

отредактированный: Я пытался использоватьIntent.ACTION_HEADSET_PLUG сюда,но он не работает.

В manifest.xml я положил:

<receiver android:name=".MusicIntentReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.HEADSET_PLUG" />
    </intent-filter>
</receiver>

И вот код моегоMusicIntentReceiver.java:

public class MusicIntentReceiver extends BroadcastReceiver {

    public void onReceive(Context ctx, Intent intent) {
        AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
        if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
            Log.d("Let's turn the sound on!");
            //other things to un-mute the streams
        }
    }
}

Любое другое решение попробовать?

Ответы на вопрос(2)

Ваш ответ на вопрос