媒體播放器的狀態決定哪些動作是合法的。
使用媒體播放器狀態:
可以使用MediaPlayer.getStatus()
檢索MediaPlayer
對象的當前狀態。
狀態清單在MediaPlayerStatus列舉中定義。
MediaPlayer
實例生命週期的狀態轉移圖:
下表提供媒體播放器生命週期和狀態的詳細資訊:
狀態 | 發生於 |
---|---|
空閒 | 媒體播放器的初始狀態。 播放器已建立,且正等您指定媒體播放器項目。 |
初始化 | 您的應用程式會呼叫 MediaPlayer.replaceCurrentItem()。 正在載入媒體播放器項目。 |
已初始化 | TVSDK已成功設定媒體播放器項目。 |
準備 | 您的應用程式會呼叫 MediaPlayer.prepareToPlay()。 媒體播放器正在載入媒體播放器項目和任何相關資源。 |
準備好 | TVSDK已準備媒體串流,並嘗試執行廣告解析和廣告插入(如果已啟用)。 內容已準備好,廣告已插入時間軸,或廣告程式失敗。 可以開始緩衝或播放。 |
播放/暫停 | 當應用程式播放和暫停媒體時,媒體播放器會在這些狀態之間移動。 |
已暫停 | 如果應用程式在播放或暫停時導覽離開播放、關閉裝置或切換應用程式,媒體播放器就會暫停並釋放資源。 呼叫 MediaPlayer.restore()會將播放器傳回播放器暫停前的狀態。 例外情況是,如果呼叫暫停時播放器為SEEKING,則播放器會暫停,然後暫停。 重要: 請記住下列資訊:
如果您一律想在還原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;
...
}
...
}
});