Apps für Android programmieren leicht gemacht!
Auf gestoppte Musik reagieren

Auf gestoppte Musik reagieren

Bereits in einem voran gegangenem Artikel habe ich angesprochen, wie wir die Musikwiedergabe von einem fremdem Musikplayer stoppen können, um beim Start der eigenen App selber Musik abspielen zu können.

Bisher haben wir allerdings noch nicht geklärt, wie wir uns verhalten könnten/sollten, wenn unserer App der Saft abgedreht wird und wir selber keine Musik mehr abspielen können.

Holen wir diese Behandlung nun nach.
Wieder benötigen wir den Code aus dem vorigen Artikel. Dieses mal ersetzen wir allerdings das „null“ durch einen Listener, der immer dann reagiert, wenn etwas mit unserem Stream passiert.
So können wir darauf reagieren, dass uns der Fokus entzogen wird, wir ihn wiedererlangen, Benachrichtigungstöne abgespielt werden und Weiteres.

 

Programmierung

Wir holen uns den Fokus und registrieren einen Listener.

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

// Fordere den Fokus deine App an.
int result = am.requestAudioFocus(focusListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    // Der Fokus liegt nun auf dieser App. Die Musik sollte gestoppt haben.
}

 

Nun erstellen wir ein Objekt, dass den Listener enthält.

private AudioManager.OnAudioFocusChangeListener focusListener =
        new AudioManager.OnAudioFocusChangeListener() {
            public void onAudioFocusChange(int focusChange) {

                if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {

                    // Fokus wurde kurzzeitig verloren, sollte aber bald zurückkehren.
                    // Der neue Eigner des Fokus erlaubt allerdings, dass die Musik leiser im Hintergrund weiterlaufen darf.
                    // Beispiel: Benachrichtigungston wird abgespielt.

                }else if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){

                    // Fokus wurde kurzzeitig verloren, sollte aber bald zurückkehren.
                    // Die Musikwiedergabe sollte pausiert werden.
                    // Beispiel: Sprachnachricht in Whatsapp wird abgespielt.

                }else if(focusChange == AudioManager.AUDIOFOCUS_LOSS){

                    // Fokus ist auf unbestimmte Zeit verloren.
                    // Die Musikwiedergabe sollte gestoppt werden.
                    // Beispiel: Andere Musik App wird benutzt.

                }else if(focusChange == AudioManager.AUDIOFOCUS_GAIN) {

                    // Der Fokus ist wieder da.
                    // Die Musikwiedergabe sollte aus der Pause heraus wieder gestartet werden.
                    // Beispiel: Sprachnachricht in Whatsapp ist fertig abgespielt.

                }

            }
        };

 

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld