2012-03-26 73 views
8

我现场直播音频,希望具有暂停媒体播放器功能,然后从当前活动位置开始。默认的Pause()和Start()从它停止的地方开始。关于如何保持当前位置更新以便Start()是即时的任何想法?更新MediaPlayer暂停时的开始位置

+0

刚刚编辑我的答案,希望它有帮助 – bughi 2012-03-26 18:58:38

回答

6

你试过调用seekTo()吗?

你可以通过每半秒调用一次seekTo()来保持它的永久更新,但是我不知道我对此有何感受。

编辑:如果调用seekTo()每500毫秒,以保持它的前进,你将与currentPosition +自上次调用(500毫秒在这种情况下)ellapsed调用它。但是我不知道这是否是最好的方法。另一种方法是创建一个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()来检索实际当前播放位置,这对于需要跟踪播放进度的音乐播放器等应用程序非常有用。

+0

看起来getCurrentPosition()返回暂停的位置,我将如何获得流结束位置(实时内容)seekTo()该位置。 – Brianjs 2012-03-26 01:38:56

+1

+1“虽然异步seekTo(int)调用返回正确方式,但实际的搜索操作可能需要一段时间才能完成”。这解决了我的问题。 – Tiago 2014-08-28 23:56:13

+0

调用seekTo(0);在stream.start()之后;为我工作 – aytek 2016-05-12 13:55:14

1

在您暂停的MediaPlayer,并呼吁MediaPlayer.seekTo当你重新启动它的位置设置回的MediaPlayer你叫MediaPlayer.getCurrentPosition

+0

当按下暂停按钮时,是否只是将我返回到流中的位置?至少当我测试它时,它就是这样。当我再次按下“开始”按钮时,我想直接转到实时内容的结尾处。 – Brianjs 2012-03-26 01:33:07

+2

哦,对不起,我没有注意到'live'。由于您正在流式传输现场音频,因此您可以在用户暂停时停止MediaPlayer,当用户重新启动时重置MediaPlayer并“启动”MediaPlayer。您将始终处于直播的结尾。 – neevek 2012-03-26 03:48:18

相关问题