studio play mediaplayer example ejemplo developer create android timestamp android-mediaplayer videoview seek

ejemplo - mediaplayer create android example



Irregularidad de VideoView getCurrentPosition() en Acer Iconia A200 (3)

Puede que tenga que ver con la cantidad de memoria libre del dispositivo. si el ariete es bajo, la actividad de fondo puede reiniciarse junto con su contador.

Tengo una aplicación con un VideoView en él, configuro un video para reproducirlo en el VideoView. En algún momento mientras se reproduce el video, se pausará. Luego, una vez que está en pausa por un tiempo, comenzará a reproducir el video nuevamente, pero busque el punto en que estaría el video si no se hubiera detenido. Así por ejemplo

El video comienza a reproducirse

Video en pausa a los 6 segundos

El video permanece en pausa durante 10 segundos.

El video comienza a reproducirse nuevamente <--- en este punto quiero que el video comience a reproducirse en la marca de 16 segundos.

Para lograr este efecto, he configurado marcas de tiempo para realizar los cálculos necesarios, así que sé cuánto tiempo se pausó el video, y luego, cuando lo vuelvo a iniciar, llamo a mVideoView.seekTo(timePlayed + timePaused);

Todo esto funciona según lo previsto en Toshiba Thrive y Motorola Xoom. Sin embargo, en Acer Iconia A200 Parece que desde el punto en que llamo seekTo () forward, el VideoView siempre regresará al mismo tiempo cuando llamo a getCurrentPosition() . Para ilustrar esto, configuro una tabla de ejecución que se dispara aproximadamente cada 1000 ms que registra la posición actual. Aquí hay algunos de los resultados de eso:

/**************** * These are from before it is paused/resumed * you can see that the current time is functioning * as expected. ******************/ Current Position = 0 Current Position = 734 Current Position = 1735 Current Position = 2703 Current Position = 3737 Current Position = 4738 Current Position = 5739 Current Position = 6740 Current Position = 7741 Current Position = 8742 Current Position = 9743 /********************************** * These are from the exact same runnable * after the video has been paused, and * started again after seekTo(). * The position is no longer increasing. * Note that the video is playing correctly on the screen * while these logs happen. **********************************/ Current Position = 23410 Current Position = 23410 Current Position = 23410 Current Position = 23410

23410 es la hora exacta en la que estoy pasando a seekTo (), por lo que parece que después de hacer esta llamada, el VideoView siempre devolverá lo que sea que pase, no importa si aún está en reproducción y la posición avanza.

¿Alguien más ha experimentado este error de VideoView / MediaPlayer antes? Vi algunas cosas en el grupo de problemas conocidos que hablaban de que MediaPlayer devolvía valores incorrectos para getCurrentPosition (), pero no encontraba ningún lugar donde simplemente dejara de aumentar de esta manera. La mayoría de los que sí vi, también intentaban reproducir audio en lugar de video.


Tal vez sea un problema con la sobrecarga del subproceso de la interfaz de usuario principal. Debido a que el video es un elemento de alta información y la acer iconia no es un gran dispositivo, podría causar una escasez de datos, anomalías y posiblemente incluso fallas. Intenta agregar el video usando AsyncTask.


libere y reinicie el reproductor de video en el método de actividad de pausa y configúrelo nuevamente en el inicio de una actividad. Para buscarlo, debe usar el cronómetro para contener el tiempo de video del usuario. Establezca el tiempo de búsqueda para el cronómetro.