我想在媒体播放器中自动播放下一首歌

时间:2017-07-23 14:41:57

标签: java android android-mediaplayer

当我点击播放列表第一次中的任何一首歌时,它会播放下一首歌曲,这个问题只发生在第二次或更多次点击播放列表中的任何一首歌时它正常工作。< / p>

但是主要问题是,任何时候任何歌曲结束后都无法播放下一首歌。

    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();
}

2 个答案:

答案 0 :(得分:0)

由于mediaPlayer.reset()函数,我发现您遇到了问题。它说

当使用new创建MediaPlayer对象或者在调用reset()之后,它处于空闲状态;并且在调用release()之后,它处于End状态。在这两个状态之间是MediaPlayer对象的生命周期。

请浏览此链接。有一个很好的流程图: https://developer.android.com/reference/android/media/MediaPlayer.html

enter image description here

我相信,在你删除了onCompletionListener体内的mediaPlayer.reset()之后,它就会得到解决。

答案 1 :(得分:0)

尝试添加release()。它看起来像一个内存不足的问题。

unread-char