從您建立MediaPlayer例項的那一刻到您終止(重複使用或移除)它的那一刻,此例項會完成狀態之間的一系列轉換。
只有播放器處於特定狀態時,才允許進行某些操作。 例如,呼叫 play
在 IDLE
是不允許的。 只有在播放器達到 PREPARED
州別。
若要使用狀態:
您可以擷取 MediaPlayer
物件與 MediaPlayer.getStatus
.
PlayerState getStatus() throws IllegalStateException;
狀態清單定義於 MediaPlayer.PlayerState
.
生命週期的狀態轉換圖 MediaPlayer
例項:
下表提供其他詳細資訊:
MediaPlayer.PlayerState | 發生於 |
---|---|
閒置 | 您的應用程式呼叫來要求新的媒體播放器 DefaultMediaPlayer.create . 新建立的播放器正等待您指定媒體播放器專案。 這是媒體播放器的初始狀態。 |
正在初始化 | 您的應用程式已呼叫 MediaPlayer.replaceCurrentItem ,且媒體播放器正在載入。 |
已初始化 | TVSDK已成功設定媒體播放器專案。 |
正在準備 | 您的應用程式已呼叫 MediaPlayer.prepareToPlay . 媒體播放器正在載入媒體播放器專案和相關資源。 提示:可能會發生主要媒體的某些緩衝。 TVSDK正在準備媒體串流,並嘗試執行廣告解析和廣告插入(如果已啟用)。 提示:若要將開始時間設為非零值,請呼叫 prepareToPlay(startTime) 以毫秒為單位的時間。 |
已準備 | 內容已準備且廣告已插入時間軸中,或廣告程式失敗。 緩衝或播放可以開始。 |
正在播放 | 您的應用程式已呼叫 play ,因此TVSDK正在嘗試播放視訊。 在視訊實際播放之前,可能會發生一些緩衝。 |
已暫停 | 當您的應用程式播放和暫停媒體時,媒體播放器會在此狀態與「正在播放」之間移動。 |
已暫停 | 您的應用程式在播放器播放或暫停時離開播放、關閉裝置或切換應用程式。 媒體播放器已暫停,資源已釋放。 若要繼續,請還原媒體播放器。 |
完成 | 播放器到達資料流結尾,且播放已停止。 |
已發行 | 您的應用程式已發行媒體播放器,也會發行任何相關資源。 您無法再使用此例項 |
錯誤 | 處理期間發生錯誤。 錯誤也可能會影響您的應用程式下一步可以執行的動作。 |
您可以使用狀態來提供程式的意見回饋(例如,在等待下一個狀態變更時執行旋轉圖示),或是在播放媒體時執行下一個步驟,例如在呼叫下一個方法之前等待適當的狀態。
例如:
@Override
public void onStateChanged(MediaPlayer.PlayerState state,
MediaPlayerNotification notification) {
switch (state) {
// It is recommended that you call prepareToPlay() after receiving
// the INITIALIZED state.
case INITIALIZED:
_mediaPlayer.prepareToPlay();
break;
case PREPARING:
showBufferingSpinner();
break;
case PREPARED:
hideBufferingSpinner();
.....
}
}