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 (), но не нашел там, где он просто перестанет расти. Большинство из тех, что я видел, также пытались воспроизвести аудио, а не видео.

Solutions Collecting From Web of "VideoView getCurrentPosition () неравномерность Acer Iconia A200"

Возможно, это связано с объемом свободной памяти устройства. Если штанга низкая, фоновая активность может возобновиться вместе с вашим счетчиком.

Освободить и сбросить видеоплейер в методе onpause активности и снова установить его в onstart mtd для Activity.for seekto u должен использовать хронометр, чтобы содержать временные рамки пользовательского времени videoview.set в поиске времени хронометра.

Возможно, это проблема с перегрузкой основного потока пользовательского интерфейса. Поскольку видео – это высокий элемент данных, а значок acer – отличное устройство, это может вызвать нехватку данных, аномалии и, возможно, даже сбой. Попробуйте добавить видео с помощью AsyncTask.