安卓mediaplayer(2)

有两种方式(同步到异步)可以达到Prepared状态:一旦调用prepare()(同步),一旦方法调用返回,将对象传递到Prepared状态,或者调用prepareAsync()异步),在内部播放器引擎继续处理其余的准备工作直到准备工作完成之前,首先将对象传输到准备状态(这几乎正确地发生)。当准备完成或prepare()调用返回时,如果OnPreparedListener通过setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)事先注册,内部播放器引擎将调用OnPreparedListener接口的onPrepared()的用户提供的回调方法。


重要的是要注意,准备状态是一个暂态,而MediaPlayer对象处于准备状态时调用任何具有副作用的方法的行为是未定义的。


如果在任何其他状态下调用prepare()或prepareAsync()),则抛出IllegalStateException异常。


在Prepared状态下,可以通过调用相应的set方法来调整音频/音量,screenOnWhilePlaying,循环等属性。


要开始播放,必须调用start()。在start()成功返回后,MediaPlayer对象处于Started状态。可以调用isPlaying()来测试MediaPlayer对象是否处于“已启动”状态。

在“开始”状态下,如果已经通过setOnBufferingUpdateListener(OnBufferingUpdateListener)事先注册了OnBufferingUpdateListener,则内部播放器引擎将调用用户提供的OnBufferingUpdateListener.onBufferingUpdate()回调方法。此回调允许应用程序在流式传输音频/视频时跟踪缓冲状态。


调用start()对已处于“已启动”状态的MediaPlayer对象没有影响。


可以暂停和停止播放,并且可以调整当前的播放位置。播放可以通过pause()暂停。当调用pause()返回时,MediaPlayer对象进入“暂停”状态。请注意,从“起始”状态到“暂停”状态的转换(反之亦然)在播放器引擎中异步发生。在isPlaying()的调用状态更新之前,可能需要一段时间,而在流式传输内容的情况下可能需要几秒钟。
调用start()恢复播放暂停的MediaPlayer对象,并且恢复的播放位置与暂停的播放位置相同。当对start()的调用返回时,暂停的MediaPlayer对象将返回到Started状态。

调用pause()对已处于“已暂停”状态的MediaPlayer对象没有影响。


调用stop()停止播放,并使MediaPlayer处于“已启动”,“已暂停”,“准备”或“回放完成”状态,以进入“停止”状态。


一旦处于停止状态,播放无法启动,直到prepare()或prepareAsync()被调用来再次将MediaPlayer对象设置为“准备”状态。


调用stop()对已经处于停止状态的MediaPlayer对象没有影响。


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

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


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


此外,可以通过调用getCurrentPosition()来检索实际的当前播放位置,这有助于诸如需要跟踪播放进度的音乐播放器之类的应用。


当播放达到流的结束时,播放完成。


如果循环模式设置为truewith setLooping(boolean),MediaPlayer对象将保持在“已启动”状态。


如果循环模式设置为false,则如果通过setOnCompletionListener(OnCompletionListener)事先注册了OnCompletionListener,则播放器引擎将调用用户提供的回调方法OnCompletion.onCompletion()。回调的调用表明对象现在处于PlaybackCompleted状态。


在PlaybackCompleted状态下,调用start()可以从音频/视频源的开始重新开始播放。
发布了28 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qwe25878/article/details/76057918