Visualizzare una barra di scorrimento con la posizione di riproduzione corrente

TVSDK supporta la ricerca di una posizione specifica (tempo) in cui il flusso è una playlist a finestra scorrevole, in video on demand (VOD) e flussi live.

SUGGERIMENTO

La ricerca in un flusso live è consentita solo per il DVR.

  1. Imposta i callback per la ricerca.

    La ricerca è asincrona, quindi TVSDK invia i seguenti eventi relativi alla ricerca:
    
    • MediaPlayerEvent.SEEK_BEGIN, dove inizia la ricerca.
    • MediaPlayerEvent.SEEK_END, dove la ricerca ha successo.
    • MediaPlayerEvent.OPERATION_FAILED, dove la ricerca ha fallito.
  2. Attendi che il lettore sia in uno stato valido per la ricerca.

    Gli stati validi sono PREPARATO, COMPLETO, PAUSED e PLAYING.

  3. Utilizza il SeekBar nativo per impostare OnSeekBarChangeListener, che determina quando l'utente esegue il lavaggio.

  4. Passa la posizione di ricerca richiesta (millisecondi) al metodo MediaPlayer.seek .

    void seek(long position) throws MediaPlayerException;
    

    Puoi cercare solo nella durata ricercabile della risorsa. Per i video on demand, da 0 a la durata della risorsa.

    SUGGERIMENTO

    Questo passaggio sposta la testina di riproduzione in una nuova posizione nel flusso, ma la posizione calcolata finale potrebbe differire dalla posizione di ricerca specificata.

  5. Ascolta MediaPlayerEvent.OPERATION_FAILED e adotta le azioni appropriate.

    Questo evento trasmette l'avviso appropriato. L'applicazione determina come procedere e le opzioni includono provare di nuovo la ricerca o continuare la riproduzione dalla posizione precedente.

  6. Attendi che TVSDK chiami il callback MediaPlayerEvent.SEEK_END .

  7. Recupera la posizione di riproduzione regolata finale utilizzando il parametro di posizione del callback.

    Questo è importante perché la posizione iniziale effettiva dopo la ricerca può essere diversa dalla posizione richiesta. Le regole, compreso il comportamento di riproduzione, sono influenzate se si può applicare una ricerca o un altro riposizionamento al centro di un’interruzione pubblicitaria o salta interruzioni pubblicitarie.

  8. Utilizza le informazioni sulla posizione quando visualizzi una barra di scorrimento della ricerca.

Esempio di ricerca

In questo esempio, l’utente sposta la barra di ricerca per cercare nella posizione desiderata.

//Use the native SeekBar to set an 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);
    }
};

In questa pagina