Error de VideoView getCurrentPosition () en Acer Iconia A200
Tengo una aplicación con un VideoView en él, que establece un video para reproducir en el VideoView. En algún momento mientras se reproduce el video, se detendrá. Luego, después de que se haya detenido durante algún tiempo, comenzará a reproducir el vídeo de nuevo, pero buscará avanzar hasta el punto en el que se encontraría el vídeo si no se hubiera detenido. Así por ejemplo
El video comienza a reproducirse
- Control de la velocidad de reproducción de vídeo en android
- Cómo prebuffer VideoView A mientras otro VideoView B está jugando - Android
- Cómo reproducir video de la carpeta en bruto con el dispositivo Android?
- Controles de reproducción de vídeo de Android Mostrar "Reproducir" Inicialmente en lugar de "Pausa" Aunque el archivo ya está jugando
- ¿Puede VideoView desmontarse y volver a unirse sin detener el flujo?
El video se detuvo a los 6 segundos
El video se detiene durante 10 segundos
El video comienza a reproducirse de nuevo <— en este punto quiero que el video empiece a reproducirse en la marca de 16 segundos.
Para lograr este efecto he configurado sellos de tiempo para hacer las matemáticas necesarias para saber cuánto tiempo se detuvo el video, y luego cuando lo vuelvo a iniciar, llamo 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 que llamo seekTo () adelante el VideoView siempre volverá al mismo tiempo cuando llamo getCurrentPosition()
. Para ilustrar esto, establezco un runnable que se dispara aproximadamente cada 1000ms que registra la posición actual. Aquí hay algo de la salida 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 el tiempo exacto en que estoy pasando a seekTo (), así que parece que después de hacer esta llamada, el VideoView siempre devolverá lo que yo pase a él, no importa si realmente está jugando y la posición está avanzando.
¿Alguien más ha experimentado este error de VideoView / MediaPlayer antes? Vi algunas cosas en el grupo de problemas conocidos que estaban hablando de MediaPlayer devolver valores incorrectos para getCurrentPosition (), pero no encontró ningún lugar que sólo dejar de aumentar como este. La mayoría de los que vi, también estaban tratando de reproducir audio en lugar de vídeo.
- Android: No se puede establecer el fondo de VideoView a transparente
- Streaming de vídeos de Youtube
- Obtener el camino real para Uri Android
- Posicionamiento de MediaController
- ¿Cómo transmitir vídeo desde url y jugar en android?
- Cambio de modo VideoView en línea / pantalla completa
- VideoView no reproduce vídeo en bucle solo en Galaxy s4
- ANDROID - Cómo utilizar un video como fondo en Andengine
Puede tener que ver con la cantidad de memoria libre del dispositivo. Si el carnero está bajo la actividad de fondo puede reiniciarse junto con su contador.
Lanzar y reajustar el videoplayer en el método de la onpause de la actividad y fijar otra vez en mtd de onstart de una actividad. Para seekto u debe utilizar el cronómetro para contener la sincronización del tiempo videoview.set del usuario en seekto al tiempo del cronómetro.
Tal vez sea un problema con la sobrecarga del hilo principal de la interfaz de usuario. Dado que el vídeo es un elemento de datos de alta y la icónica acer no es un gran dispositivo, podría causar algunos datos escasez, anomalías y, posiblemente, incluso estrellarse. Intente agregar el video usando AsyncTask.
- Android studio 2.3: No se pudo inicializar la clase org.jetbrains.kotlin.android.actions.NewKotlinActivityAction
- Android Firebase, simplemente obtiene los datos de un objeto secundario