MediaPlayer物件的生命週期和狀態

媒體播放器的狀態決定哪些動作是合法的。

使用媒體播放器狀態:

  • 可以使用MediaPlayer.getStatus()檢索MediaPlayer對象的當前狀態。

  • 狀態清單在MediaPlayerStatus列舉中定義。

MediaPlayer實例生命週期的狀態轉移圖:

下表提供媒體播放器生命週期和狀態的詳細資訊:

狀態 發生於
空閒

媒體播放器的初始狀態。 播放器已建立,且正等您指定媒體播放器項目。

初始化

您的應用程式會呼叫 MediaPlayer.replaceCurrentItem()

正在載入媒體播放器項目。

已初始化

TVSDK已成功設定媒體播放器項目。

準備

您的應用程式會呼叫 MediaPlayer.prepareToPlay()。 媒體播放器正在載入媒體播放器項目和任何相關資源。

準備好

TVSDK已準備媒體串流,並嘗試執行廣告解析和廣告插入(如果已啟用)。 內容已準備好,廣告已插入時間軸,或廣告程式失敗。

可以開始緩衝或播放。

播放/暫停

當應用程式播放和暫停媒體時,媒體播放器會在這些狀態之間移動。

已暫停

如果應用程式在播放或暫停時導覽離開播放、關閉裝置或切換應用程式,媒體播放器就會暫停並釋放資源。

呼叫 MediaPlayer.restore()會將播放器傳回播放器暫停前的狀態。 例外情況是,如果呼叫暫停時播放器為SEEKING,則播放器會暫停,然後暫停。

重要:

請記住下列資訊:

  • MediaPlayer 只有當 MediaPlayerView 所使用的表面物件毀損時,才會自動呼叫暫停
  • MediaPlayer 僅在 MediaPlayerView 使用的新曲面物件建立時,才會自動呼叫 restore()

如果您一律想在還原MediaPlayer時暫停播放,請在Android活動的 onPause()方法中,讓您的應用程式呼叫 MediaPlayer.pause()

完成

播放器已到達串流的尾端,播放已停止。

已發佈

您的應用程式已發佈媒體播放器,而媒體播放器也會發佈任何相關資源。 您無法再使用此例項。

錯誤

進程期間發生錯誤。 錯誤也可能會影響應用程式的下一步動作。 如需詳細資訊,請參閱設定錯誤處理

秘訣

您可以使用狀態來提供有關程式的反饋,或者例如,在等待下一個狀態更改時提供微調器,或在播放媒體時採取後續步驟,例如在呼叫下一個方法之前等待適當的狀態。

例如:

mediaPlayer.addEventListener(MediaPlayerEvent STATUS_CHANGED, new StatusChangeEventListener() { 
    @Override  
    public void onStatusChanged(MediaPlayerStatusChangeEvent event) { 
        switch(event.getStatus()) { 
            case INITIALIZED: 
                mediaPlayer.prepareToPlay(); 
                break; 
            case PREPARING: 
                showBufferingSpinner(); 
                break; 
            case PREPARED: 
                hideBufferingSpinner(); 
                mediaPlayer.play(); 
                break; 
            ...                
        } 
        ... 
    } 
}); 

本頁內容