此範例說明在播放時間軸上包含TimeRange規格的建議方式。
TimeRange
規格(亦即 TimeRange
類別)。TimeRange
用於填入 TimeRangeCollection
類別。TimeRangeCollection
例項,至 replaceCurrentItem
方法(MediaPlayer介面的一部分)。PREPARED
等候 PlaybackEventListener#onPrepared
要觸發的回呼。play()
方法(的一部分 MediaPlayer
介面)。TimeRange
規格與播放時間軸重疊。 例如,對應至起始位置的值 TimeRange
規格可能低於已放置的結束位置值。 在此情況下,TVSDK會以無訊息方式調整違規專案的開始位置 TimeRange
規格以避免時間表衝突。 透過此調整,新的 TimeRange
會比原先指定的時間更短。 如果調整太過極端,以致於會導致 TimeRange
持續時間為零毫秒的TVSDK會以無訊息方式捨棄違規 TimeRange
規格。TimeRange
提供自訂廣告插播的規格,TVSDK會嘗試將這些轉譯為分組在廣告插播中的廣告。 TVSDK會尋找相鄰的 TimeRange
規格並將它們叢集為個別的廣告插播。 如果時間範圍與任何其他時間範圍都不相鄰,則會將其轉譯為包含單一廣告的廣告插播。TimeRange
僅能用於自訂廣告標籤功能內容的規格。 如果基礎資產不是VOD型別,TVSDK程式庫會擲回例外狀況。下列程式碼片段提供簡單範例,說明一組三個TimeRange規格會作為自訂廣告標籤放置在時間軸上。
// Assume that the 3 timerange specs are obtained through external means: CMS, etc.
// Use these 3 timerange specs to populate the TimeRangeCollection instance
TimeRangeCollection timeRanges = new TimeRangeCollection();
timeRanges.addTimeRange(new TimeRange(0,10000));
timeRanges.addTimeRange(new TimeRange(15000,20000));
timeRanges.addTimeRange(new TimeRange(25000,30000));
// create and configure a MediaResource instance
MediaResource mediaResource =
MediaResource.createFromUrl("www.example.com/video/test_video.m3u8",
timeRanges.toMetadata(null));
// prepare the content for playback by creating
// NOTE: mediaPlayer is an instance of a properly configured MediaPlayer
mediaPlayer.replaceCurrentItem(mediaResource);
// wait for TVSDK to reach the PREPARED state
...
MediaPlayer.PlaybackEventListener playbackEventListener = new
MediaPlayer.PlaybackEventListener() {
@Override
public void onPrepared() {
// TVSDK in in the PREPARED state. We are allowed to start the playback
mediaPlayer.play();
}
}