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ó.
- VideoView: Evitar el flash negro de pantalla completa
- Cómo configurar la imagen de vista previa en videoview antes de jugar
- Cambiar el tamaño de VideoView
- ¿Por qué mi aplicación Android dice "No se puede reproducir el vídeo" después de la reproducción?
- Zooming VideoView para rellenar el ancho, manteniendo la relación de aspecto
- Cómo detectar si VideoView está reproduciendo video o Buffering?
- Android carga la animación antes de iniciar VideoView
- Cómo puedo reproducir video desde byte en android
- Transmisión de video con videoview
- Android: VideoView dentro de Fragmento sólo reproduce audio, no muestra vídeo
- VideoView en bucle de videos Replenish
- Problema de parpadeo de VideoView
- Android VideoView inicia muchos videos secuencialmente
¿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!
- Cómo aplicar un estilo de vista grande a una notificación mediante la biblioteca Parse
- Activación del modo avión a través de ADB