当我第一次点击播放列表中的任何歌曲时,它会播放下一首歌曲,只有在第二次或更多次点击播放列表中的任何歌曲时,第一次才会出现此问题,它工作正常。
但主要问题是,它无法在任何歌曲结束后随时播放下一首歌曲。
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.reset();
// play next song
if(listView_click_arg2 < (songPath.length - 1)){
listView_click_arg2=listView_click_arg2+1;
}
else{
// play first song
listView_click_arg2=0;
}
try {
playSong(songPath[listView_click_arg2]);
} catch (IOException e) {
e.printStackTrace();
}
}
});
private void playSong(String path) throws IllegalArgumentException, IllegalStateException, IOException {
startTime=0;
finalTime=0;
oneTimeOnly=0;
mediaPlayer.stop();
mediaPlayer=null;
mediaPlayer=new MediaPlayer();
mediaPlayer.setDataSource(path);
mediaPlayer.prepare();
mediaPlayer.start();
}
最佳答案
我发现您因 mediaPlayer.reset() 函数而遇到问题。它说
MediaPlayer对象刚使用new创建或调用reset()后,处于Idle状态;调用release()后,就处于End状态。这两个状态之间就是MediaPlayer对象的生命周期。
请浏览此链接。有一个很好的流程图: https://developer.android.com/reference/android/media/MediaPlayer.html
我相信,在 onCompletionListener 主体中删除 mediaPlayer.reset() 后,问题就会得到解决。
关于java - 我想在媒体播放器中自动播放下一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266318/