Mediaplayer正在播放随机歌曲

时间:2016-09-27 07:43:43

标签: android android-mediaplayer

我使用以下代码播放音乐。

if (mMediaPlayer.isPlaying()) {
            mMediaPlayer.reset();
            mMediaPlayer = new MediaPlayer();
            try {
                mMediaPlayer.setDataSource(MainActivity.localTrackList.get(MainActivity.currentOffset).getPath());
            } catch (IOException e) {
                e.printStackTrace();
            }
            mMediaPlayer.prepareAsync();

        } else {
            mMediaPlayer = new MediaPlayer();

            try {
                mMediaPlayer.setDataSource(MainActivity.localTrackList.get(MainActivity.currentOffset).getPath());
            } catch (IOException e) {
                e.printStackTrace();
            }
            mMediaPlayer.prepareAsync();
        }

解释

  • 当用户第一次点击一首歌时,否则循环将是 执行。
  • 如果用户在媒体播放器正在播放歌曲时单击一首歌曲,则会循环播放 执行
  • 在我的if循环中,我在设置数据源之前重置媒体播放器,以便调用onCompletion侦听器。

Follwing是我的onCompletionListener。

mMediaPlayer.setOnCompletionListener(mp -> {
                    MainActivity.nextTrackController.performClick();
        });

以下是我的nextTrackController onClickListener。

 MainActivity.nextTrackController.setOnClickListener(v -> {
            try {
                if (MainActivity.currentOffset < (MainActivity.localTrackList.size() - 1)) {
                    if (mMediaPlayer.isPlaying()) {
                        mMediaPlayer.stop();
                        mMediaPlayer.reset();
                    } else {
                        mMediaPlayer.reset();
                    }

                    MainActivity.currentOffset = MainActivity.currentOffset + 1;
                    mMediaPlayer.setDataSource(MainActivity.localTrackList.get(MainActivity.currentOffset).getPath());
                    mMediaPlayer.prepareAsync();
                } else {

                    if (mMediaPlayer.isPlaying()) {
                        mMediaPlayer.stop();
                        mMediaPlayer.reset();
                    }
                    MainActivity.currentOffset = 0;
                    mMediaPlayer.setDataSource(MainActivity.localTrackList.get(MainActivity.currentOffset).getPath());
                    mMediaPlayer.prepareAsync();
                }
            } catch (Exception ex) {

            }
        });

问题是,

  1. 如果媒体播放器正在播放,并且如果用户正在点击某首歌曲,则它不会播放已点击的特定歌曲,但会播放一些随机歌曲。
  2. 如果歌曲播放完毕,它会播放随机歌曲而不是下一首歌曲。我怎样才能解决这个问题?

0 个答案:

没有答案