Reanudar la reproducción de VideoView desde onResume

Tengo un VideoView y es una pausa cuando comienzo un intento de correo electrónico. Cuando finalice la intención del correo electrónico, quiero que el videoView continúe jugando, sin embargo, se reinicia desde el principio.

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

¿Cómo puedo obtener el videoView para reanudar desde donde lo dejó.

¿Qué pasa con esto:

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

A continuación, en su onCreate (), llame a stopPosition desde el paquete y configúrelo globalmente

 @Override protected void onCreate(Bundle args) { super.onCreate(args); if( args != null ) { stopPosition = args.getInt("position"); } 

El uso de seekTo da un ligero efecto flickering mientras se reanuda el video. Un mejor enfoque sería utilizar los métodos pause() y start() de la clase MediaPlayer lugar de utilizar métodos de VideoView . El método start() de VideoView reinicia el vídeo desde el principio, pero el método start() de MediaPlayer reanuda el vídeo si el método pause() se había llamado anteriormente.

Esto es lo que dice el oficial android doc

Public void start ()

Se agrega en el nivel de API 1 Inicia o reanuda la reproducción. Si la reproducción se había pausado previamente, la reproducción continuará desde donde se pausó. Si la reproducción se había detenido, o nunca había comenzado antes, la reproducción comenzará al principio.

Puede obtener el MediaPlayer asociado con un VideoView en OnPreparedListener de 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; } }); } } 

A continuación, los siguientes métodos pause() y resume() pueden ser llamados al objeto MediaPlayer .

 //To pause the video mMediaPlayer.pause(); //To resume the video mMediaPlayer.start(); 

Solución muy simple pero eficiente. ¡Espero eso ayude!

  • VideoView flash negro antes y después de jugar
  • Problema con la vista de vídeo en android 4.0 y superior
  • Llamar a MediaPlayer.PrepareAsync de VideoView
  • Android: ¿Por qué no puedo dar un onClickListener a un VideoView?
  • Mostrar y ocultar un botón de reproducción sobre un VideoView en Android
  • Cómo modificar el ancho de videoview programatically
  • Android 2.2 VideoView problema
  • Cómo crear círculo o videoView redondo en android?
  • Tamaño de la memoria intermedia de Android VideoView
  • Detectar cuándo la reproducción de vídeo deja de reproducirse
  • ¿Cómo ejecutar varios videos con diferentes VideoViews en una actividad en android 2.2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.