Videoview Pausing and resuming
You can use this
@Overridepublic void onPause() { Log.d(TAG, "onPause called"); super.onPause(); stopPosition = videoView.getCurrentPosition(); //stopPosition is an int videoView.pause();}@Overridepublic 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}
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 } }
Instead of resume()
, use start()
again.
It will start the playback from the point where you paused the video.