暂停时更新MediaPlayer开始位置

Bri*_*njs 9 android android-mediaplayer

我正在播放实时音频并希望具有暂停媒体播放器的功能,然后从当前的实时位置开始.默认的Pause()和Start()只是从它停止的位置开始.关于如何保持当前位置的任何想法,以便Start()是即时的?

bug*_*ghi 7

你尝试过调用seekTo()吗?

您可以通过TimerTask每隔半秒左右调用seekTo()来保持更新,但我不知道我对此感觉如何.

编辑:如果你每隔500毫秒调用一次seekTo(),为了让它继续向前移动,你可以用自上次调用后的currentPosition +时间来调用它(在这种情况下是500毫秒).但我不知道这是不是最好的方法.另一种方法是创建一个OnSeekCompleteListener,它预先形成一个新的seekTo(currentPosition + timeEllapsed).在这种情况下,您需要像这样计算timeEllapsed:currentSystemTime - systemTimeOnLastCall

来自http://developer.android.com/reference/android/media/MediaPlayer.html:

可以通过调用seekTo(int)来调整播放位置.

尽管异步seekTo(int)调用以正确的方式返回,但实际的搜索操作可能需要一段时间才能完成,尤其是对于流式传输的音频/视频.当实际搜索操作完成时,如果事先通过setOnSeekCompleteListener(OnSeekCompleteListener)注册了OnSeekCompleteListener,则内部播放器引擎会调用用户提供的OnSeekComplete.onSeekComplete().

请注意,seekTo(int)也可以在其他状态中调用,例如Prepared,Paused和PlaybackCompleted状态.

此外,可以通过调用getCurrentPosition()来检索实际当前播放位置,这对于需要跟踪播放进度的音乐播放器等应用程序很有帮助.