To może wróćmy bardziej do podstaw?
public static MediaPlayer player; // muzyka w tle
Tworzymy playera. R.raw.muzyczka to ścieżka dostępu do pliku. Folder raw stwórz pod folderem res.
Dodajemy słuchacza, aby po zakończeniu odtwarzania coś dodatkowego zrobić.
player = MediaPlayer.create(this, R.raw.muzyczka);
player.setOnCompletionListener(mOnCompletionListener);
W tym wypadku uruchamiam metodę MuzyczkaWTle()
// muzyczka w tle
OnCompletionListener mOnCompletionListener = new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
MuzyczkaWTle();
}
}; // mOnCompletionListener
a tam mam:
public void MuzyczkaWTle() {
int i = (int)Math.round(Math.random()*(tablica_muzyki_w_tle.length-1));
player = MediaPlayer.create(this, tablica_muzyki_w_tle[i]);
player.setOnCompletionListener(mOnCompletionListener);
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
player.start();
}
});
Czyli losuje liczbę calkowitą z zakresu tablicy int z ścieżkami (R.raw.plik1, ...plik4), następnie wylosowaną liczbę wstawiam jako indeks do tablicy z ścieżkami, uruchamiam ponownie player z wylosowaną muzyczką, ponownie ustawiam słuchacza i całkowicie niepotrzebnie startuje z nowego uchwytu 🙂 Nie chciało mi się kasować, bo to kod z któregoś tam projektu.
Przy zabawie z MediaPlayer dobrze jest mieć przed oczami diagram stanów:
MediaPlayer | Android Developers
Jeszcze z tego co widzę musisz wyłączyć odtwarzanie muzyki na zakończenie używania aplikacji. Z tym sobie już poradzisz, nieprawdaż? 🙂