继续从onResume播放VideoView

时间:2012-08-14 21:06:03

标签: android android-videoview

我有一个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从停止的位置恢复。

2 个答案:

答案 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中的VideoViewpublic 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}}

非常简单而有效的解决方案。希望它有所帮助!