2011-09-09 22 views
34

estoy jugando un archivo de sonido que utiliza este código dentro de una actividad de receptor de radiodifusión:¿Cómo se detecta cuando un archivo de sonido ha terminado?

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

quisiera detectar cuando el archivo ha terminado de jugar.

He intentado un bucle como este, pero creo que esto es sólo bueno para el reproductor de medios, ya que siempre = false a pesar de que he hecho de que el archivo de sonido seguía tocando:

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

¿Me puede mostrar lo Debería usar en lugar de manager.isMusicActive()

Gracias.

En verdad, Emad

+3

la solución obvia sería por la oreja xD – orlp

+3

:-) Deseo que la programación sea así de simple. –

Respuesta

86

Usted puede utilizar la clase MediaPlayer y añadir un detector de finalización para ser activado cuando el sonido finaliza la reproducción

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

Hola Ronny, gracias por el código. Lo intentaré y te dejaré saber cómo resulta. Verdaderamente, Emad –

+0

Hola Ronny, probé el código pero recibo un error que dice: MediaPlayer no es aplicable para los argumentos (nuevo OnCompletionListener() {}). –

+3

Hola Emad, debes agregar importación android.media.MediaPlayer.OnCompletionListener; entonces lo reconocerá – Ronny

1

intenta usar el servicio para reproducir la música .. después de jugar una vez, y luego se detiene su servicio y se puede añadir a su programa en el método de servicio OnDestroy() .. creo que sirve :)

+0

Hola Michael, me gustaría probar tu camino también. ¿Puedes mostrar un ejemplo de código para probar? Gracias. Verdaderamente, Emad –

Cuestiones relacionadas