【发布时间】:2020-06-28 13:51:39
【问题描述】:
我想在我的音乐播放器应用中依次播放歌曲。我检查了this question,但我的音乐播放器只播放下一首歌曲一次。之后它停止。例如,它正在播放歌曲 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();
}
});
我为“下一个”按钮提供了相同的代码,它完美地工作,即使在到达列表末尾后它也会循环回来。 播放歌曲功能:
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,但它仍然只播放了下一首歌曲。
【问题讨论】: