我正在尝试在调用Activity的onPause()时暂停视频。然后恢复它并在恢复活动时离开时继续播放。
我已经阅读了许多关于如何实现这一点的帖子,总结一下,我读过我应该在Activity的onPause()中调用mediaPlayer.pause(),在Activity的onResume()中调用mediaPlayer.play()。看起来很简单,但我在onResume中不断收到IllegalStateException:mediaPlayer.play()
这是我设置mediaplayer和videoview的地方:
videoView.setMediaController(mediaController);
videoView.setVideoURI(videoUri);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// Pass MediaPlayer to control playback speed
mediaController.setMediaPlayer(mp);
mp.start();
mediaPlayer = mp;
hideProgressBar();
}
});
在我从API调用中获取videoUri后调用此代码,此调用在onCreate()中完成。
在onResume()onPause():
@Override
protected void onResume() {
super.onResume();
if (mediaPlayer != null) {
mediaPlayer.start();
}
}
@Override
protected void onPause() {
super.onPause();
if (mediaPlayer != null ) {
mediaPlayer.pause();
}
}
答案 0 :(得分:1)
好的,我明白了。在onPreparedListener()中,我添加了一个验证来检查应用程序之前是否已暂停。如果它被暂停,我使用seekTo(),否则我只是从头开始播放视频。
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// Pass MediaPlayer to control playback speed
mediaController.setMediaPlayer(mp);
mediaPlayer = mp;
if (resumedActivity) {
mp.seekTo(pausedMilliSec);
}
mp.start();
hideProgressBar();
}
});
在onPause()中:
@Override
protected void onPause() {
super.onPause();
if (mediaPlayer != null) {
resumedActivity = true;
pausedMilliSec = mediaPlayer.getCurrentPosition();
}
}