2011-09-09 18 views
34

sto riproduzione di un file audio utilizzando questo codice all'interno di un'attività ricevitore trasmissione:Come si rileva quando un file audio ha finito?

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

Vorrei rilevare quando il file ha finito di giocare.

ho provato un ciclo come questo, ma penso che questo è solo un bene per il lettore multimediale, perché = sempre falso anche se ho fatto che il file audio giocava ancora:

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

Puoi mostrarmi cosa Dovrei usare invece di manager.isMusicActive()

Grazie.

In verità, Emad

+3

la soluzione più ovvia sarebbe ad orecchio xD – orlp

+3

:-) Vorrei che la programmazione fosse così semplice. –

risposta

86

È possibile utilizzare la classe MediaPlayer e aggiungere un ascoltatore completamento per essere attivato quando il suono termina la riproduzione

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

Ciao Ronny, grazie per il codice. Ci proverò e ti farò sapere come andrà a finire. Davvero, Emad –

+0

Ciao Ronny, ho provato il codice ma ho ricevuto un errore che afferma: MediaPlayer non è applicabile per gli argomenti (new OnCompletionListener() {}). –

+3

Ciao Emad, è necessario aggiungere import android.media.MediaPlayer.OnCompletionListener; quindi lo riconoscerà. – Ronny

1

provare a utilizzare il servizio per riprodurre la musica .. dopo che giocare una volta, quindi arrestare il servizio ed è possibile aggiungere il vostro programma sul metodo di servizio OnDestroy() .. Speranza che aiuta :)

+0

Ciao Michael, vorrei anche provare la tua strada. Puoi mostrare un esempio di codice da provare? Grazie. Davvero, Emad –

Problemi correlati