Ath*_*hos 40 lifecycle android android-videoview
我是Android开发新手,我正在编写游戏.我的游戏在每个级别开始之前都有过程,并且通过视频查看完成过程.我的问题是,在应用程序暂停时,cutceen在恢复时从头开始.
@Override
public void onPause() {
super.onPause();
video.pause();
}
@Override
public void onResume()
{
super.onResume();
video.resume();
}
Run Code Online (Sandbox Code Playgroud)
我们的问题是视频实际上并没有从我们暂停的地方恢复,而是从一开始就恢复.
San*_*tel 58
你可以用它
@Override
public void onPause() {
Log.d(TAG, "onPause called");
super.onPause();
stopPosition = videoView.getCurrentPosition(); //stopPosition is an int
videoView.pause();
}
@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
}
Run Code Online (Sandbox Code Playgroud)
Kha*_*.NT 22
不应该使用video.pause(),video.resume(),因为当你调用它时,缓冲数据将会丢失.这也是为什么每当你调用video.resume()时,VideoView在BEGINNING播放的原因.看到它: VideoView onResume失去了视频的缓冲部分
解:
VideoView videoView;
MediaPlayer mp;
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
this.mp = mp;
}
});
public void pause(){
//NOT videoview.pause(); Needn't save Stop position
if (mp != null){
mp.pause();
}
}
public void resume(){
//NOT videoview.resume();
if (mp != null){
mp.start(); //Video will begin where it stopped
}
}
Run Code Online (Sandbox Code Playgroud)
Fly*_*n81 17
而不是resume()
,start()
再次使用.
它将从您暂停视频的位置开始播放.
小智 13
在OnPause中,您可以获得当前位置.
length=mVideoView.getCurrentPosition();
Run Code Online (Sandbox Code Playgroud)
和值长度在OnResume()中使用.
mVideoView.seekTo(length);
mVideoView.start()
Run Code Online (Sandbox Code Playgroud)
工作正常.
归档时间: |
|
查看次数: |
38792 次 |
最近记录: |