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?