Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mediaPlayer CompletionListener在歌曲完成之前播放下一首歌曲_Java_Android_Android Mediaplayer - Fatal编程技术网

Java mediaPlayer CompletionListener在歌曲完成之前播放下一首歌曲

Java mediaPlayer CompletionListener在歌曲完成之前播放下一首歌曲,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我已经编写了一个mediaPlayer应用程序,在该应用程序中,mediaPlayer.setOnCompletionListener在歌曲完成之前被调用,它会继续播放每首歌曲…它会继续播放下一首歌曲,直到到达播放列表中的最后一首歌曲。。。请帮忙 这是我的代码: tracksListViewForSpeakers.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override

我已经编写了一个mediaPlayer应用程序,在该应用程序中,
mediaPlayer.setOnCompletionListener
在歌曲完成之前被调用,它会继续播放每首歌曲…它会继续播放下一首歌曲,直到到达播放列表中的最后一首歌曲。。。请帮忙

这是我的代码:

 tracksListViewForSpeakers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Track track = playlistContents.get(position);
                String filepath = track.getFilePath();
                if (mediaPlayer.isPlaying()) {
                    mediaPlayer.stop();
                }
                mediaPlayer.reset();
                try {
                    mediaPlayer.setDataSource(filepath);
                    mediaPlayer.start();

//                    mediaPlayer.setVolume(0, 0);
                } catch (IOException e) {
                    e.printStackTrace();
                    for(int i=0;i<4;i++)
                        System.out.println("MediaPlayer Exception");
                }

            }
        });
OnNextClickedMethod

public void onNextClicked(MediaPlayer mp){
int val = myModel.getCurrentPlayingIndex();
val=val+1;
Track track = currentPlayList.get(val);
        String filepath = track.getFilePath();
if (mp.isPlaying()) {
            mp.stop();
        }
        mp.reset();
        try {
            mp.setDataSource(filepath);
            mp.start();
//            mediaPlayer.setVolume(0, 0);
        } catch (IOException e) {
            e.printStackTrace();
        }

  }

}
像这样试试

//set path
mediaPlayer.setDataSource("yourFilePath");
mediaPlayer.setOnPrepareListener(new OnPrepareListener(MediaPlayer mediaPlayer) {
       mediaPlayer.start();
});
mediaPlayer.prepareAsync();
public void  playSong(int songIndex){
        // Play song
        try {
            mp.reset();
            mp.setDataSource(songsList.get(songIndex).get("songPath"));
            mp.prepare();
            mp.start();
            // Displaying Song title
            String songTitle = songsList.get(songIndex).get("songTitle");
            songTitleLabel.setText(songTitle);

            // Changing Button Image to pause image
            btnPlay.setImageResource(R.drawable.btn_pause);

            // set Progress bar values
            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);

            // Updating progress bar
            updateProgressBar();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
没有
prepareAsync(),不要调用
start()
希望它能解决你的问题。

像这样试试

//set path
mediaPlayer.setDataSource("yourFilePath");
mediaPlayer.setOnPrepareListener(new OnPrepareListener(MediaPlayer mediaPlayer) {
       mediaPlayer.start();
});
mediaPlayer.prepareAsync();
public void  playSong(int songIndex){
        // Play song
        try {
            mp.reset();
            mp.setDataSource(songsList.get(songIndex).get("songPath"));
            mp.prepare();
            mp.start();
            // Displaying Song title
            String songTitle = songsList.get(songIndex).get("songTitle");
            songTitleLabel.setText(songTitle);

            // Changing Button Image to pause image
            btnPlay.setImageResource(R.drawable.btn_pause);

            // set Progress bar values
            songProgressBar.setProgress(0);
            songProgressBar.setMax(100);

            // Updating progress bar
            updateProgressBar();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
没有
prepareAsync(),不要调用
start()

希望它能解决你的问题。

完成后,用它播放下一首歌

@Override
    public void onCompletion(MediaPlayer arg0) {

        if (isRepeat) {
            // repeat is on play same song again
            playSong(currentSongIndex);
        } else if (isShuffle) {
            // shuffle is on - play a random song
            Random rand = new Random();
            currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
            playSong(currentSongIndex);
        } else {
            // no repeat or shuffle ON - play next song
            if (currentSongIndex < (songsList.size() - 1)) {
                playSong(currentSongIndex + 1);
                currentSongIndex = currentSongIndex + 1;
            } else {
                // play first song
                playSong(0);
                currentSongIndex = 0;
            }
        }

    }
或者你可以看到这个教程并实现它


完成后使用此按钮播放下一首歌曲

@Override
    public void onCompletion(MediaPlayer arg0) {

        if (isRepeat) {
            // repeat is on play same song again
            playSong(currentSongIndex);
        } else if (isShuffle) {
            // shuffle is on - play a random song
            Random rand = new Random();
            currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0;
            playSong(currentSongIndex);
        } else {
            // no repeat or shuffle ON - play next song
            if (currentSongIndex < (songsList.size() - 1)) {
                playSong(currentSongIndex + 1);
                currentSongIndex = currentSongIndex + 1;
            } else {
                // play first song
                playSong(0);
                currentSongIndex = 0;
            }
        }

    }
或者你可以看到这个教程并实现它


您能问个问题吗?先生,它不是在播放当前歌曲,而是在播放下一首歌曲。。从这首歌到下一首歌…你能问个问题吗?先生,它不是在播放当前歌曲而是在播放下一首歌。。从那里到下一首歌。。。