57 votes

Comment détectez-vous quand un fichier son est terminé ?

Je joue un fichier son en utilisant ce code dans une activité de récepteur de diffusion :

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

Je voudrais détecter quand ce fichier a fini de jouer.

J'ai essayé une boucle comme celle-ci mais je pense que ce n'est bon que pour le lecteur multimédia car c'est toujours = faux même si je me suis assuré que le fichier son était toujours en cours de lecture :

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

Pouvez-vous me montrer ce que je dois utiliser au lieu de manager.isMusicActive() ?

136voto

Ronny Points 559

Vous pouvez utiliser la classe MediaPlayer et ajouter un écouteur d'achèvement à activer lorsque le son se termine

 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();

3voto

Ne fonctionne pas avec le récepteur de diffusion, mais c'est ce qui a fonctionné pour mon projet actuel utilisant Kotlin pour suivre la fin de la lecture du fichier audio.

 playButton.setOnClickListener {

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

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

isPlaying est booléen, j'expliquerai plus si quelqu'un est confus. J'espère que cela aidera quelqu'un d'autre à l'avenir. Bon codage !

1voto

Michael Frans Points 595

essayez d'utiliser le service pour jouer de la musique. après avoir joué une fois, arrêtez votre service et vous pouvez ajouter votre programme sur la méthode de service onDestroy(). J'espère que ça aide :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X