TVSDK supporta la ricerca in una posizione specifica (tempo) in cui il flusso è una playlist a finestra scorrevole, sia in streaming video on-demand (VOD) che live.
La ricerca in uno streaming live è consentita solo per DVR.
Imposta i callback per la ricerca.
La ricerca è asincrona, pertanto TVSDK invia i seguenti eventi correlati alla ricerca:
QOSEventListener.onSeekStart
- Ricerca iniziale.QOSEventListener.onSeekComplete
- Ricerca riuscita.QOSEventListener.onOperationFailed
- Ricerca non riuscita.Attendi che il lettore si trovi in uno stato valido per la ricerca.
Gli stati validi sono READY, COMPLETE, PAUSED e PLAY.
Utilizzare la barra di ricerca nativa per impostare OnSeekBarChangeListener
per vedere quando l’utente esegue lo scorrimento.
Ascolta QOSEventListener.onOperationFailed
e adotta le misure appropriate.
Questo evento trasmette l’avviso appropriato. L’applicazione determina come procedere, ad esempio, tentando di nuovo la ricerca o continuando la riproduzione dalla posizione precedente.
Attendi che TVSDK chiami QOSEventListener.onSeekComplete
callback.
Recuperate la posizione finale di riproduzione regolata utilizzando il parametro di posizione del callback.
Questo è importante perché la posizione di inizio effettiva dopo la ricerca può essere diversa dalla posizione richiesta. Il comportamento di riproduzione potrebbe essere influenzato se una ricerca o un altro riposizionamento termina al centro di un’interruzione pubblicitaria o salta un’interruzione pubblicitaria.
Utilizzare le informazioni sulla posizione quando si visualizza una barra di scorrimento di ricerca.
Esempio di ricerca
In questo esempio, l’utente pulisce la barra di ricerca per cercare la posizione desiderata.
// Use the native SeekBar to set OnSeekBarChangeListener to
//see when the user is scrubbing.
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean isFromUser) {
if (isFromUser) {
// Update the seek bar thumb, with the position provided by the user.
setPosition(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isSeeking = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
isSeeking = false;
// Retrieve the playback range.
TimeRange playbackRange = mediaPlayer.getPlaybackRange();
// Make sure to seek inside the playback range.
long seekPosition = Math.min(Math.round(seekBar.getProgress()),
playbackRange.getDuration());
// Perform seek.
seek(playbackRange.getBegin() + seekPosition);
}
};