Wie erkennen Sie, wann eine Sounddatei fertig ist?

Lesezeit: 2 Minuten

Benutzer-Avatar
Emad-ud-deen

Ich spiele eine Sounddatei mit diesem Code in einer Broadcast-Receiver-Aktivität ab:

notification.sound = Uri.parse("android.resource://emad.app/raw/seven_chimes");

Ich möchte feststellen, wann diese Datei die Wiedergabe beendet hat.

Ich habe eine Schleife wie diese ausprobiert, aber ich denke, das ist nur gut für den Mediaplayer, weil es immer = false ist, obwohl ich sichergestellt habe, dass die Sounddatei noch abgespielt wird:

/*
 * Stay here until the chime sound is finished.
 */
   while (manager.isMusicActive()){
   }

Können Sie mir zeigen, was ich stattdessen verwenden sollte manager.isMusicActive()?

Benutzer-Avatar
Ronny

Sie können die MediaPlayer-Klasse verwenden und einen Completion-Listener hinzufügen, der aktiviert wird, wenn die Wiedergabe des Sounds beendet ist

MediaPlayer mp = MediaPlayer.create(this,Uri.parse("android.resource://emad.app/raw/seven_chimes"));

mp.setOnCompletionListener(new OnCompletionListener() {

    @Override
    public void onCompletion(MediaPlayer mp) {
        performOnEnd();
    }

});

mp.start();

  • Hallo Ronny, ich habe den Code ausprobiert, bekomme aber eine Fehlermeldung, die besagt: MediaPlayer ist für die Argumente nicht anwendbar (neuer OnCompletionListener(){}).

    – Emad-ud-deen

    10. September 2011 um 9:13 Uhr

  • Hallo Emad, du musst import android.media.MediaPlayer.OnCompletionListener hinzufügen; so wird es erkannt.

    – Ronny

    10. September 2011 um 15:50 Uhr


  • Hallo Ronny, ich habe den Import hinzugefügt und musste “this” in “context” ändern, aber ich bekomme immer noch den gleichen Fehler in der OnCletionListener-Zeile. Fehlt noch etwas? Vielen Dank. Wirklich, Emad

    – Emad-ud-deen

    10. September 2011 um 20:15 Uhr

  • Hallo, das ist seltsam, weil es ein sehr direkter Ansatz ist. Welche API-Version verwenden Sie? was ist die fehlermeldung? und was sind die Eclipse-Vorschläge, wenn Sie Strg + 1 (oder Befehl + 1) drücken? Sie können “this” als Argument übergeben, mp.setOnCompletionListener(this); und es wird Ihnen vorgeschlagen, den OnCompletionListener zu implementieren, und Sie können die onCompletion-Methode zu Ihrer Klasse hinzufügen. Ich hoffe es hilft 🙂

    – Ronny

    10. September 2011 um 22:11 Uhr


  • Hallo Ronny, es ist für Android 1.6 und innerhalb einer Broadcast-Receiver-Aktivität. Ich fand, dass ich auch “import android.media.MediaPlayer.OnCompletionListener;” einschließen musste. um es fehlerfrei zu bekommen. Vielen Dank für die Hilfe. Wirklich, Emad

    – Emad-ud-deen

    11. September 2011 um 2:57 Uhr


Funktioniert nicht mit Broadcast-Empfänger, aber das hat für mein aktuelles Projekt mit Kotlin funktioniert, um zu verfolgen, wann die Audiodatei abgespielt wurde.

playButton.setOnClickListener {

            if (isPlaying) {
                pauseSound()
            }else {
                playSound()
            }

            mediaPlayer.setOnCompletionListener {
                playButton.text = "Play"
                isPlaying = false
            }
        }

isPlaying ist boolesch, ich werde mehr erklären, wenn jemand verwirrt ist. Hoffe, es hilft jemand anderem in der Zukunft. Viel Spaß beim Codieren!

Versuchen Sie, die Musik mit dem Dienst abzuspielen. Nachdem sie einmal abgespielt wurde, stoppen Sie Ihren Dienst und Sie können Ihr Programm zur Dienstmethode onDestroy () hinzufügen. Hoffentlich hilft es 🙂

  • Hallo Michael, ich würde deinen Weg auch gerne ausprobieren. Können Sie mir ein Codebeispiel zum Ausprobieren zeigen? Vielen Dank. Wirklich, Emad

    – Emad-ud-deen

    10. September 2011 um 8:55 Uhr

1187720cookie-checkWie erkennen Sie, wann eine Sounddatei fertig ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy