Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Videoview Pausing and resuming

I am new to android development and I am programming a game. My game has cutsceens that play before each level starts, cutsceens which are done through videoview. My problem is, that upon an application pause, the cutsceen starts from the beginning again when resumed.

    @Override public void onPause() {     super.onPause();     video.pause(); } @Override public void onResume() {     super.onResume();     video.resume(); } 

Our issue is that the video doesn't actually resume from where we paused it, but from the beginning.

like image 690
Athos Avatar asked Sep 02 '11 21:09

Athos


People also ask

How to pause and resume video in videoview android?

Just use onSaveInstanseState method instead of onPause and use onRestart instead of onResume. It will definitely work. Cheers !


2 Answers

You can use this

@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 } 

original post

like image 133
Sanket Patel Avatar answered Sep 21 '22 14:09

Sanket Patel


Shouldn't use video.pause(), video.resume(), because when you call it, the buffering data will be lost. That is also the reason WHY VideoView play at BEGINNING whenever you call video.resume(). See it: VideoView onResume loses buffered portion of the video

Solution:

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     }    } 
like image 28
Khang .NT Avatar answered Sep 19 '22 14:09

Khang .NT