studio soportado setonpreparedlistener seekto reproducir puede play mediaplayer este contenido android videoview seek

android - soportado - Función VideoView seekto() extremadamente inconsistente



play video android (3)

Resolví este problema así

La función seekTo () no funciona en VideoView

Estoy tratando de buscar una ubicación en particular en un video en Android y estoy completamente atascado debido a las inconsistencias que muestra en su comportamiento. Aquí hay una lista de cosas que he hecho

  1. ¡VideoView.Seekto va a 5:19 para un video, 5:17 para un video y 5:32 para otro por los mismos milisegundos (326000 ms)!
  2. Dado que VideoView no admite onSeekListener, modifiqué la fuente VideoView y le agregué soporte. Sin embargo, no se detiene y comienza a buscar desde donde lo quiero, ¡siempre hay un retraso! El onSeekListener se llama inmediatamente unos 6 s antes de donde quiero que se detenga. En muchos casos, la barra de búsqueda muestra el momento adecuado y, de repente, retrocede unos segundos, aunque estoy llamando a video.start desde onSeekCompleteListener

¿Por qué es esto tan inconsistente? ¿Hay una forma definitiva de buscar a dónde quieres ir en milisegundos en videoview? Sé que debería usar MediaPLayer + Surface, pero como VideoView es solo una envoltura de los dos, lo estoy modificando en la fuente pero sin éxito.

Soy consciente de esto: http://code.google.com/p/android/issues/detail?id=9135 Pero hay alguna forma de evitar esto y tener una forma definitiva de

1.) Buscando la hora exacta en milisegundos.

2.) ¿Pausa y reanudación a la hora exacta?


Sé que esta no es la solución adecuada para su pregunta, pero eche un vistazo a esta biblioteca que se está realizando a través de la vista de video predeterminada de Google

https://github.com/brianwernick/ExoMedia

Tiene toda la funcionalidad y más que está soportada por la vista de video predeterminada.

Puede usar esta vista de video y emVideoView.seekTo(1000); Para saltar a 1000 milisegundos en el video. También puede tener setOnSeekCompletionListener para realizar el proceso cuando se complete la búsqueda.


Tienes que esperar a que la búsqueda se complete.

VideoView no tiene un OnSeekCompleteListener () pero puede acceder al MediaPlayer desde el método onPrepared del VideoView y luego configurar el OnSeekCompleteListener, de esta manera:

videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setOnSeekCompleteListener(new OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { //Seek completed. Move seekbar } }); } });