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

标签 java android android-mediaplayer

当我第一次点击播放列表中的任何歌曲时,它会播放下一首歌曲,只有在第二次或更多次点击播放列表中的任何歌曲时,第一次才会出现此问题,它工作正常。

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

    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

enter image description here

我相信,在 onCompletionListener 主体中删除 mediaPlayer.reset() 后,问题就会得到解决。

关于java - 我想在媒体播放器中自动播放下一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266318/

相关文章:

java - 带有空可观察值列表的 RxJava zip

java - 应用程序关闭时如何播放音乐

Android媒体播放器: streaming audio file from HTTPS Url

java - 立即显示 Activity 而不是显示通知

java - 使用android studio获取两点之间的旅行时间的问题

java - 如何使用带有 selenium webdriver 的 Windows 文件资源管理器选择多个文件

Java:这怎么会返回空值?

android-service - MediaBrowserServiceCompat 方法

java - java 小程序错误

java.io.filenotfoundException 下载 zip 并解压