我正在播放实时音频并希望具有暂停媒体播放器的功能,然后从当前的实时位置开始。默认的Pause()和Start()只是从它停止的位置开始。关于如何更新当前位置的任何想法,以便Start()是即时的?
答案 0 :(得分: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()来检索实际当前播放位置,这对于需要跟踪播放进度的音乐播放器等应用程序很有用。
答案 1 :(得分:1)
暂停MediaPlayer时呼叫MediaPlayer.getCurrentPosition,并在重新启动时调用MediaPlayer.seekTo将位置设置为MediaPlayer。