Я транслирую аудио в прямом эфире и хочу иметь возможность приостановить медиаплеер, а затем начать с текущей позиции в реальном времени. По умолчанию Pause() и Start() просто начинаются с того места, где они были остановлены. Любые идеи о том, как обновлять текущую позицию, чтобы Start () был мгновенным?
Обновить начальную позицию MediaPlayer при паузе
Ответы (2)
Вы пытались вызвать seekTo()?
Вы можете постоянно обновлять его, вызывая seekTo() каждые полсекунды или около того с помощью TimerTask., но я не знаю, как я к этому отношусь.
EDIT: Если вы вызываете seekTo() каждые 500 миллисекунд, чтобы он продолжал двигаться вперед, вы должны вызывать его с currentPosition + временем, прошедшим с момента последнего вызова (в данном случае 500 миллисекунд). Но опять же, я не знаю, лучший ли это подход. Другой способ — создать OnSeekCompleteListener, который предварительно формирует новый seekTo(currentPosition + timeEllapsed). В этом случае вам нужно рассчитать timeEllapsed следующим образом: currentSystemTime - systemTimeOnLastCall
Из http://developer.android.com/reference/android/media/MediaPlayer. HTMLа>:
Позицию воспроизведения можно настроить с помощью вызова seekTo(int).
Хотя асинхронный вызов seekTo(int) возвращает правильное значение, фактическая операция поиска может занять некоторое время, особенно для потоковой передачи аудио/видео. Когда фактическая операция поиска завершается, внутренний механизм проигрывателя вызывает предоставленный пользователем OnSeekComplete.onSeekComplete(), если OnSeekCompleteListener был зарегистрирован заранее с помощью setOnSeekCompleteListener(OnSeekCompleteListener).
Обратите внимание, что seekTo(int) также может вызываться в других состояниях, например, в состояниях Prepared, Paused и PlaybackCompleted.
Кроме того, фактическую текущую позицию воспроизведения можно получить с помощью вызова getCurrentPosition(), что полезно для таких приложений, как музыкальный проигрыватель, которым необходимо отслеживать ход воспроизведения.
Вы вызываете MediaPlayer.getCurrentPosition, когда ставите на паузу MediaPlayer и вызовите MediaPlayer.seekTo, чтобы установить верните позицию в MediaPlayer при его перезапуске.
live
. Поскольку вы транслируете живое аудио, вы можете просто stop
использовать MediaPlayer, когда пользователь приостанавливает его, reset
и start
MediaPlayer, когда пользователь перезапускает его. Вы всегда будете в конце прямой трансляции.
- person neevek; 26.03.2012