2012-03-01 3 views
8

w moim ativity za onCreate(), ustawić MediaPlayer.OnCompletionListener, a następnie odtworzyć plik MP3:Jak rozpoznać, który plik MP3 zakończył się w MediaPlayer.OnCompletionListener?

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

A kiedy gra się kończy, ja po prostu obsłużyć to zdarzenie w:

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

Wszystko ładne i dandy, ale teraz chcę odtworzyć dwa różne pliki MP3 i zakończyć obsługę inaczej na podstawie , który został odtworzony w pliku.

Czy jest jakiś sposób odróżnienia od numeru MediaPlayer, który element został zakończony?

+0

Ustawienia zdarzenia ma parametr z http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html jako MediaPlayer, który zgodnie z Twój kod to "p". Każdy moduł OnCompletionListener identyfikuje odpowiednie "p" (lub nośnik, który się zakończył) – mozillanerd

Odpowiedz

3

Telefon zwrotny public void onCompletion(MediaPlayer mp) podaje odniesienie do 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

Nie szukam informacji, który obiekt/instancja odtwarzacza multimediów został uruchomiony, ale raczej, który ** plik mp3 ** zakończył odtwarzanie. – ateiob

+2

p odtwarza p.mp3 i q odtwarza q.mp3. Jeśli gracz p (q) się zatrzyma, wiesz, że skończyłeś p.mp3 (q.mp3). – Rayne

+0

@Raz +1 dla wyjaśnienia. Nie ma potrzeby stosowania podklas itp., Ale 'q' i' p' muszą być "globalne" na poziomie klasy (tj. Elementy danych, a nie zmienne automatyczne). – ateiob

2

Wyzwalacz OnSetCompletionListener określa, który MediaPlayer został zakończony. Jeśli chodzi o plik mp3, twój model danych powinien być wyrażony jako lista obiektów MediaPlayer (obiekty mogą być tworzone z podklasy MediaPlayer), które powinny znać plik mp3, który odtwarzają lub odtwarzają. Zobacz http://davanum.wordpress.com/2007/12/29/android-videomusic-player-sample-from-local-disk-as-well-as-remote-urls/ na przykład Jeśli chodzi o model, utwórz klasę dziedziczącą po MediaPlayer. W tej nowej klasie zachowaj nazwę pliku mp3 - np. "Fn". Tak więc p.fn podaje plik dla mp3