Ich entwickle eine Anwendung, die folgende Anforderung hat: Wenn ein Kopfhörer an das Gerät angeschlossen ist und der Benutzer ihn entfernt, muss ich alle Streams stummschalten. Dazu muss ich den Broadcast AudioManager.ACTION_AUDIO_BECOMING_NOISY
abhören. Das ist in Ordnung! Hier besteht kein Problem.
Aber wenn der Benutzer den Kopfhörer wieder anschließt, muss ich das Gerät wieder stummschalten. Es gibt jedoch keinen entsprechenden Broadcast wie AudioManager.ACTION_AUDIO_BECOMING_NOISY
. Ich kann also nicht wissen, wann der Kopfhörer wieder angeschlossen wird.
Eine Lösung besteht darin, regelmäßig zu überprüfen, ob AudioManager.isWiredHeadsetOn()
true
ist, aber das scheint mir keine gute Lösung zu sein.
Gibt es eine Möglichkeit zu erkennen, wenn der Benutzer einen Kopfhörer an das Gerät anschließt?
Bearbeitet: Ich habe versucht, Intent.ACTION_HEADSET_PLUG
auf diese Weise zu verwenden, aber es hat nicht funktioniert.
In der Manifest.xml habe ich Folgendes hinzugefügt:
Und hier ist der Code meiner 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("Lass uns den Ton wieder einschalten!");
//andere Dinge, um die Streams wieder zu aktivieren
}
}
}
Gibt es eine andere Lösung, die ich ausprobieren kann?