我有一个VideoView,当我启动电子邮件意图时,它会暂停。电子邮件意图完成后,我希望videoView继续播放,但是,它从头开始重新开始。
@Override
public void onPause() {
Log.d(TAG, "onPause called");
super.onPause();
videoView.pause();
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume called");
videoView.start();//resume() doesnt work
}
如何让videoView从停止的位置恢复。
答案 0 :(得分:28)
这个怎么样:
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume called");
videoView.seekTo(stopPosition);
videoView.start(); //Or use resume() if it doesn't work. I'm not sure
}
// This gets called before onPause so pause video here.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
stopPosition = videoView.getCurrentPosition();
videoView.pause();
outState.putInt("position", stopPosition);
}
然后在你的onCreate()中调用bundle中的stopPosition并将其全局设置
@Override
protected void onCreate(Bundle args) {
super.onCreate(args);
if( args != null ) {
stopPosition = args.getInt("position");
}
答案 1 :(得分:13)
使用seekTo
会在恢复视频时出现轻微的闪烁效果。更好的方法是使用pause()
类的start()
和MediaPlayer
方法,而不是使用VideoView
中的方法。 start()
VideoView
方法从头开始重新启动视频,但start()
方法MediaPlayer
如果之前已调用pause()
方法则恢复视频。< / p>
这是官方的android doc说的
public void start()
在API级别1中添加开始或恢复播放。如果播放了 之前已暂停播放,播放将从原来的位置继续播放 暂停。如果播放已经停止,或者从未开始播放, 播放将从头开始。
您可以MediaPlayer
VideoView
OnPreparedListener
中的VideoView
与public class MainActivity extends Activity {
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoView videoView = (VideoView) findViewById(R.id.videoView1);
videoView.setVideoPath(path);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer = mp;
}
});
}
}
相关联。
pause()
然后可以在resume()
对象本身上调用后续的MediaPlayer
和//To pause the video
mMediaPlayer.pause();
//To resume the video
mMediaPlayer.start();
方法。
{{1}}
非常简单而有效的解决方案。希望它有所帮助!