2012-03-01 14 views
8

En onCreate de mi atividad(), me puse un MediaPlayer.OnCompletionListener, a continuación, reproducir un archivo MP3:¿Cómo identificar qué archivo MP3 terminó en MediaPlayer.OnCompletionListener?

MediaPlayer p = MediaPlayer.create(this, R.raw.intro); 
    p.setOnCompletionListener(this); 
    p.start();  

Y cuando se juega extremos, que se encarga solamente de este evento en:

public void onCompletion(MediaPlayer mp) { 
     // handle completion 
    } 

Todo agradable y dandy, pero ahora quiero jugar dos diferentes archivos MP3 y manejar finalización diferente basado en el que se jugó archivo.

¿Hay alguna forma de saber a partir del parámetro MediaPlayer qué pieza ha finalizado?

+0

Bueno, la configuración del evento tiene el parámetro de http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html como el MediaPlayer que de acuerdo con tu código es 'p'. Cada OnCompletionListener identifica la 'p' apropiada (o el medio que ha terminado) – mozillanerd

Respuesta

3

La devolución de llamada public void onCompletion(MediaPlayer mp) le da una referencia al MediaPlayer.

public void onCompletion(MediaPlayer mp) { 
    if (mp.equals(p){ 
     //do action for media player p 

    } else if (mp.equals(q)){ 
     //do action for media player q 
    } 
} 
+0

No busco identificar qué reproductor/instancia de reproductor multimedia se ejecutó, sino qué ** archivo mp3 ** terminó de reproducirse. – ateiob

+2

p reproduce p.mp3 yq juega q.mp3. Si el jugador p (q) se detiene, sabrá ahora que p.mp3 (q.mp3) se completó. – Rayne

+0

@Raz +1 para la aclaración. Sin necesidad de subclases, etc., 'q' y' p' deben ser "globales" en el nivel de clase (es decir, miembros de datos, no variables automáticas). – ateiob

2

El OnSetCompletionListener desencadenado identifica qué MediaPlayer ha completado. En cuanto al archivo mp3, su modelo de datos debe expresarse como una lista de objetos MediaPlayer (los objetos pueden crearse a partir de la subclase MediaPlayer) que debe conocer el archivo mp3 que están reproduciendo o completando. Consulte http://davanum.wordpress.com/2007/12/29/android-videomusic-player-sample-from-local-disk-as-well-as-remote-urls/ por ejemplo En cuanto al modelo, cree una clase que herede de MediaPlayer. En esa nueva clase, mantenga el nombre del archivo mp3, como 'fn'. Entonces p.fn le da el archivo para el mp3

Cuestiones relacionadas