[英]Playing songs one after another in Android(Java)
我想在我的音樂播放器應用程序中一首又一首地播放歌曲。 我檢查了這個問題,但我的音樂播放器只播放下一首歌一次。 之后它停止。 例如,它正在播放歌曲A,然后它會播放下一首歌曲B,但在歌曲B之后它不會播放歌曲C。
這是我的代碼:
OnCompleteListener:
//mp is MediaPlayer object, al is ArrayList of songs and their ids(R.raw.song), song_no is the index of the song in al
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
song_no = (song_no +1) % al.size();
playSong();
}
});
我對“下一個”按鈕有相同的代碼,它可以完美地工作,即使在到達列表末尾后它也會循環回來。 播放歌曲 function:
public void playSong()
{
song = Uri.parse("android.resource://" + getPackageName() + "/" + al.get(song_no).id());
try
{
mp.stop();
mp.reset();
mp.release();
mp = null;
}
catch(Exception e)
{
Log.d("playSong", e.toString();
}
mp = MediaPlayer.create(getApplicationContext(), song);
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
我嘗試刪除mp.reset()
、 mp.release()
和mp = null
但它仍然只播放了下一首歌曲。
看起來你想要一個Queue數據結構,希望它比跟蹤索引更容易處理。 您的al
變量將存儲要播放的歌曲隊列,在您的onCompletion
方法中,您可以調用playNextSong()
方法,該方法使用poll()
或remove()
處理隊列以獲取下一首歌曲並播放直到隊列為空。
如果您想保留您的 ArrayList,請嘗試調試您的song_no
和song
變量以縮小問題是否出在歌曲順序邏輯或 MediaPlayer 使用中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.