Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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 在我的Androidstudio音乐播放器中,暂停按钮问题_Java_Android Studio 3.0_Android Music Player - Fatal编程技术网

Java 在我的Androidstudio音乐播放器中,暂停按钮问题

Java 在我的Androidstudio音乐播放器中,暂停按钮问题,java,android-studio-3.0,android-music-player,Java,Android Studio 3.0,Android Music Player,当我按下暂停按钮,然后按下播放按钮时,歌曲会从暂停位置播放。但当歌曲结束后,按下播放按钮,歌曲将从暂停位置播放,而不是从开始播放 在这里粘贴我的代码 public void play(View view){ if(mediaPlayer==null) { mediaPlayer = MediaPlayer.create(this, R.raw.ennasona); mediaPlayer.start(); } else if (!me

当我按下暂停按钮,然后按下播放按钮时,歌曲会从暂停位置播放。但当歌曲结束后,按下播放按钮,歌曲将从暂停位置播放,而不是从开始播放

在这里粘贴我的代码

 public void play(View view){
    if(mediaPlayer==null) {

        mediaPlayer = MediaPlayer.create(this, R.raw.ennasona);
        mediaPlayer.start();
    }

    else if (!mediaPlayer.isPlaying()){

        int nowMusicPosition = 0;

        if (nowMusicPosition == mediaPlayer.getDuration()){

            mediaPlayer = MediaPlayer.create(this, R.raw.ennasona);
            mediaPlayer.start();
        }
        else {
            mediaPlayer.seekTo(pauseCurrentPosition);
            mediaPlayer.start();
            nowMusicPosition = mediaPlayer.getCurrentPosition();

        }
    }
}
public void pause(View view){

    if(mediaPlayer!=null) {

        mediaPlayer.pause();

        pauseCurrentPosition = mediaPlayer.getCurrentPosition();

    }
}
public   void stop(View view){

    if (mediaPlayer!=null)

    mediaPlayer.stop();

    mediaPlayer = null;
}

这种情况有问题

if (nowMusicPosition == mediaPlayer.getCurrentPosition()){

        mediaPlayer = MediaPlayer.create(this, R.raw.ennasona);

    }
这不是执行。再检查一下。 即使您不需要重新创建媒体播放器实例,也只需使用

mediaPlayer.start();
用于在完成后从一开始播放


希望这能对您有所帮助。

看看API,我会说您做得太复杂了。您不必记住位置,因为如果暂停播放,MediaPlayer应该记住位置本身

所以只要使用play(),pause(),你就安全了。不要寻找()

您的代码存在以下问题:

else if (!mediaPlayer.isPlaying()){
    // this is called nowMusicPosition, down there you've used pauseCurrentPosition
    // this always gets 0, never changes
    int nowMusicPosition = 0;
    if (nowMusicPosition == mediaPlayer.getCurrentPosition()){
         // now you're recreating the MediaPlayer. why?
        mediaPlayer = MediaPlayer.create(this, R.raw.ennasona);
        mediaPlayer.start();
    } else {
        // if video at its end gets stopped, the
        // getCurrentPosition() delivers the last
        // position in the video and you get down
        // here and you're seeking to the paused
        // position again
        mediaPlayer.seekTo(pauseCurrentPosition);
        mediaPlayer.start();
        // now you're setting nowMusicPosition, but it gets 0 again if pressing play again, see above
        nowMusicPosition = mediaPlayer.getCurrentPosition();
    }
}

参考所有可能的状态:感谢您的回复。感谢您在我的代码中显示问题:)因为我使用的是停止按钮,所以我需要使用seekto。