Wie erkenne ich, wenn ein Benutzer ein Headset an ein Android-Gerät anschließt? (Gegenteil von ACTION_AUDIO_BECOMING_NOISY)

Ich entwickle eine Anwendung mit den folgenden Voraussetzungen: Wenn ein Headset am Gerät angeschlossen ist und der Benutzer es entfernt, muss ich alle Streams stummschalten. Dazu muss ich mir das anhörenAudioManager.ACTION_AUDIO_BECOMING_NOISY Übertragung. Das ist in Ordnung! Kein Problem hier.

Aber wenn der BenutzerSteckt das Headset wieder einIch muss die Stummschaltung des Geräts aufheben. Aber es gibt keineAudioManager.ACTION_AUDIO_BECOMING_NOISY gegenüberliegende Sendung. Ich kann nicht wissen, wann das Headset wieder eingesteckt ist.

Eine Lösung besteht darin, regelmäßig zu prüfen, obAudioManager.isWiredHeadsetOn() isttrue aber das scheint mir keine gute Lösung zu sein.

Gibt es eine Möglichkeit zu erkennen, wann der Benutzer ein Headset an das Gerät anschließt?

Bearbeitet: Ich habe versucht zu verwendenIntent.ACTION_HEADSET_PLUG diesen Weg,aber es hat nicht funktioniert.

In die manifest.xml füge ich ein:

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

Und hier ist der Code von mirMusicIntentReceiver.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
        }
    }
}

Irgendeine andere Lösung zum Ausprobieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage