Questo esempio mostra il modo consigliato per includere le specifiche TimeRange nella timeline di riproduzione.
TimeRange
specifiche (ovvero istanze del TimeRange
classe).TimeRange
specifiche per compilare un'istanza del TimeRangeCollection
classe.TimeRangeCollection
istanza, al replaceCurrentItem
(parte dell'interfaccia MediaPlayer).PREPARED
attendendo il PlaybackEventListener#onPrepared
callback da attivare.play()
metodo (parte del metodo MediaPlayer
).TimeRange
le specifiche si sovrappongono sulla timeline di riproduzione. Ad esempio, il valore della posizione iniziale corrispondente a TimeRange
la specifica potrebbe essere inferiore al valore della posizione finale già posizionata. In questo caso, TVSDK regola automaticamente la posizione iniziale dell'offesa TimeRange
specifica per evitare conflitti nella timeline. Grazie a questa regolazione, il nuovo TimeRange
diventa più breve di quanto originariamente specificato. Se l'aggiustamento è così estremo da portare ad una TimeRange
con una durata di zero ms, TVSDK rilascia silenziosamente l’offensiva TimeRange
specifica.TimeRange
specifiche per le interruzioni pubblicitarie personalizzate, TVSDK tenta di tradurle in annunci raggruppati all’interno di interruzioni pubblicitarie. TVSDK cerca adiacenti TimeRange
e li raggruppa in interruzioni pubblicitarie separate. Se esistono intervalli di tempo non adiacenti a nessun altro intervallo di tempo, vengono convertiti in interruzioni pubblicitarie che contengono un singolo annuncio.TimeRange
specifiche che possono essere utilizzate solo nel contesto della funzione marcatori annuncio personalizzati. Se la risorsa sottostante non è di tipo VOD, la libreria TVSDK genera un’eccezione.Il seguente snippet di codice fornisce un semplice esempio in cui un set di tre specifiche TimeRange viene inserito sulla timeline come marcatori annuncio personalizzati.
// 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();
}
}