安卓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()可以從音頻/視頻源的開始重新開始播放。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章