У меня есть приложение с VideoView, я настроил воспроизведение видео в VideoView.В какой-то момент во время воспроизведения видео оно будет приостановлено.Затем, после того, как оно будет приостановлено на некоторое время, оно начнет воспроизводить видео снова, но будет стремиться к тому моменту, когда видео будет находиться в том случае, если оно не было приостановлено.Например,
Видео начинает воспроизводиться
Видео останавливается на 6 секунд
Видео остается на 10 секунд
Видео начинает воспроизводиться снова <--- прив этот момент я хочу, чтобы видео начало воспроизводиться с 16-секундной отметки. </p>
Чтобы добиться этого эффекта, я установил метки времени для выполнения необходимой математики, чтобы я знал, на какой срок видео было приостановлено, изатем, когда я запускаю его снова, я звоню 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 (), но не нашел ничего, где он просто перестал бы расти, как это.Большинство из тех, что я видел, также пытались воспроизводить аудио, а не видео.