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。