Ошибка VideoView getCurrentPosition () на Acer Iconia A200

У меня есть приложение с VideoView, я установил воспроизведение видео в VideoView. В какой-то момент воспроизведение видео будет приостановлено. Затем, после некоторой паузы, он снова начнет воспроизводить видео, но будет двигаться вперед до точки, в которой видео было бы, если бы оно не было приостановлено. Так, например,

Видео начинает воспроизводиться

Видео приостанавливается на 6 секунд

видео остается в паузе в течение 10 секунд

Видео начинает воспроизводиться снова <--- в этот момент я хочу, чтобы видео начало проигрываться на 16 вторая отметка.

Для достижения этого эффекта я установил временные метки для выполнения необходимых вычислений, чтобы я знал, на сколько видео было приостановлено, а затем, когда я снова запускаю его, я вызываю mVideoView.seekTo (timePlayed + timePaused);

Все это работает должным образом на Toshiba Thrive и Motorola Xoom. Однако на Acer Iconia A200 Кажется, что с момента, когда я вызываю seekTo () вперед, VideoView всегда будет возвращать одно и то же время, когда я вызываю getCurrentPosition () .Чтобы проиллюстрировать это, я установил runnable, который запускается примерно каждые 1000 мс и регистрирует текущую позицию. Вот некоторые из результатов этого:

/****************
* 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 - это точное время, когда я передаю seekTo (), поэтому кажется, что после того, как я сделаю этот вызов, VideoView всегда будет возвращать все, что я ему передаю, независимо от того, если он на самом деле все еще играет и позиция продвигается.

Кто-нибудь еще сталкивался с этой ошибкой VideoView / MediaPlayer раньше? Я видел некоторые вещи в группе известных проблем, в которых говорилось о том, что MediaPlayer возвращает неверные значения для getCurrentPosition (), но не нашел ни одного места, где бы оно просто перестало увеличиваться таким образом. Большинство из тех, что я видел, также пытались воспроизводить аудио, а не видео.

31
задан Jonik 27 January 2014 в 22:17
поделиться