MediaPlayer物件的生命週期和狀態

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

使用媒體播放器狀態:

  • 您可以擷取 MediaPlayer 物件與 MediaPlayer.getStatus().

  • 狀態清單定義於 MediaPlayerStatus 列舉。

生命週期的狀態轉換圖 MediaPlayer 例項:

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

狀態 發生於
閒置

媒體播放器的初始狀態。 播放器已建立並正等候您指定媒體播放器專案。

正在初始化

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

正在載入媒體播放器專案。

已初始化

TVSDK已成功設定media-player專案。

正在準備

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

已準備

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

緩衝或播放可以開始。

播放/暫停

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

已暫停

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

通話 MediaPlayer.restore() 將播放器傳回至「暫停」前播放器的狀態。 例外情況是,如果呼叫暫停時播放器正在搜尋,則播放器會暫停然後暫停。

重要:

請記住以下資訊:

  • MediaPlayer 自動呼叫 暫停 只有當使用的曲面物件為 MediaPlayerView 已損毀。
  • MediaPlayer 自動呼叫 restore() 只有當新的曲面物件由使用時 MediaPlayerView 「 」已建立。

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

完成

播放器已到達資料流結尾,且播放已停止。

已發行

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

錯誤

處理期間發生錯誤。 錯誤也可能會影響應用程式後續的功能。 如需詳細資訊,請參閱 設定錯誤處理 .

秘訣

您可以使用狀態來提供程式的意見回饋,例如,在等候下一個狀態變更時提供進度環資訊,或在播放媒體時採取後續步驟,例如在呼叫下一個方法之前等候適當的狀態。

例如:

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;
            ...
        }
        ...
    }
});

本頁內容