Я использую MediaPlayer для проигрывания единственной песни в формате MP3 из сети. Источником данных является URL HTTP.
Давайте предположим, что у нас есть следующее состояние воспроизведения.
Продолжительность песни: 1:00
Текущий прогресс: 0:10
Текущий прогресс буферизации 0:30
Скажем, я хочу пропустить некоторую часть песни и искать вперед. Я делаю это с MediaPlayer.seekTo () метод. Если я ищу на буферизированное положение (0:20), оно выполняется правильно. Но если я ищу на положение, которое еще не было буферизовано (0:40), MediaPlayer ведет себя нечетный. Это сразу указывает, что ослепило правильно, не ожидая буфера для заполнения. На самом деле это продолжает играть в том же положении, где это прежде искало. С этого времени MediaPlayer.getCurrentPosition () метод возвращает неправильное положение. Когда проигрывание достигает своего конца, и обратный вызов OnCompletionListener.onCompletion называют, текущее положение медиаплеера намного выше, чем вся продолжительность песни.
Какие-либо идеи для решения этого?
Вероятно, это связано с ошибкой, которая (ссылаясь на один из комментариев) в конечном итоге исправлена в 2.2. http://code.google.com/p/android/issues/detail?id=4124
Насколько мне известно, это было исправлено в Android 2.2 на некоторых устройствах.
Однако Android 2.2 не справляется с поиском буферизованной позиции. Хотя позиция уже находится в буфере, MediaPlayer отправляет запрос на сервер.