Implementa listener di eventi e callback

I gestori di eventi consentono di rispondere agli eventi TVSDK.

Quando si verifica un evento, il meccanismo eventi di TVSDK chiama il gestore eventi registrato, trasmettendolo le informazioni sull'evento.

TVSDK definisce i listener come interfacce interne pubbliche all'interno dell'interfaccia MediaPlayer.

L’applicazione deve implementare listener di eventi per tutti gli eventi TVSDK che influiscono sull’applicazione.

  1. Determinare gli eventi che l'applicazione deve ascoltare.

    • Eventi richiesti: Ascoltare tutti gli eventi di riproduzione.

      IMPORTANTE

      Ascoltare l'evento di modifica dello stato, che si verifica quando lo stato del lettore cambia in modi che è necessario conoscere. Le informazioni fornite includono errori che potrebbero influenzare le operazioni successive del lettore.

    • Per altri eventi, a seconda dell’applicazione, consulta events-summary .

  2. Implementa e aggiungi un listener di eventi per ogni evento.

    NOTA

    Per la maggior parte degli eventi, TVSDK trasmette gli argomenti ai listener di eventi. Tali valori forniscono informazioni sull’evento che possono aiutarti a decidere cosa fare dopo. L'enumerazione MediaPlayerEvent elenca tutti gli eventi inviati da MediaPlayer. Per ulteriori informazioni, consulta Riepilogo eventi .

    Ad esempio, se mPlayer è un'istanza di MediaPlayer, puoi aggiungere e strutturare un listener di eventi in questo modo:

    mPlayer.addEventListener(MediaPlayerEvent.STATUS_CHANGED, new StatusChangeEventListener() {
        @Override
        public void onStatusChanged(MediaPlayerStatusChangeEvent event) {
            event.getMetadata();
            if (event.getMetadata() != null) {/* Do something */}
            if (event.getStatus() == MediaPlayerStatus.IDLE) {/* Do something */}
            else if (event.getStatus() == MediaPlayerStatus.INITIALIZED) {/* Do something */}
            else if (event.getStatus() == MediaPlayerStatus.PREPARED) {/* Do something */}
        }
    });
    

Ordine degli eventi di riproduzione

TVSDK invia eventi/notifiche nelle sequenze generalmente previste. Il lettore può implementare azioni in base agli eventi nella sequenza prevista.

Gli esempi seguenti mostrano l'ordine di alcuni eventi che si verificano durante la riproduzione.

Quando si carica correttamente una risorsa multimediale tramite MediaPlayer.replaceCurrentResource, l'ordine degli eventi è:

  1. MediaPlayerEvent.STATUS_CHANGED con stato MediaPlayerStatus.INITIALIZING

  2. MediaPlayerEvent.STATUS_CHANGED con stato MediaPlayerStatus.INITIALIZED

SUGGERIMENTO

Carica la risorsa multimediale sul thread principale. Se carichi una risorsa multimediale su un thread in background, questa operazione o le operazioni successive potrebbero generare un errore, ad esempio MediaPlayerException e uscire.

Durante la preparazione della riproduzione tramite MediaPlayer.prepareToPlay, l'ordine degli eventi è:

  1. MediaPlayerEvent.STATUS_CHANGED con stato MediaPlayerStatus.PREPARING

  2. MediaPlayerEvent.TIMELINE_UPDATED se sono stati inseriti annunci.

  3. MediaPlayerEvent.STATUS_CHANGED con stato MediaPlayerStatus.PREPARED

Per i flussi in tempo reale/lineare, durante la riproduzione con l'avanzamento della finestra di riproduzione e la risoluzione di ulteriori opportunità, l'ordine degli eventi è:

  1. MediaPlayerEvent.ITEM_UPDATED
  2. MediaPlayerEvent.TIMELINE_UPDATED se sono stati inseriti annunci

Ordine degli eventi pubblicitari

Quando la riproduzione include la pubblicità, TVSDK invia eventi/notifiche in sequenze generalmente previste. Il lettore può implementare azioni basate su eventi all’interno della sequenza prevista.

Durante la riproduzione degli annunci, l'ordine degli eventi è:

  • MediaPlayerEvent.AD_RESOLUTION_COMPLETE

I seguenti eventi vengono inviati per ogni annuncio all’interno dell’interruzione pubblicitaria:

  • MediaPlayerEvent.AD_BREAK_START
  • MediaPlayerEvent.AD_START
  • MediaPlayerEvent.AD_PROGRESS (multiple times)
  • MediaPlayerEvent.AD_CLICK (for each click)
  • MediaPlayerEvent.AD_COMPLETE
  • MediaPlayerEvent.AD_BREAK_COMPLETE

L’esempio seguente mostra una progressione tipica degli eventi di riproduzione di annunci:

mediaPlayer.addEventListener(MediaPlayerEvent.AD_RESOLUTION_COMPLETE, new AdResolutionCompleteEventListener() {
        @Override
        public void onAdResolutionComplete() { ... }
    });

mediaPlayer.addEventListener(MediaPlayerEvent.AD_BREAK_START, new AdBreakStartedEventListener() {
         @Override
        public void onAdBreakStarted(AdBreakPlaybackEvent adBreakPlaybackEvent) { ... }
    });

mediaPlayer.addEventListener(MediaPlayerEvent.AD_START, new AdStartedEventListener() {
         @Override
        public void onAdStarted(AdPlaybackEvent adPlaybackEvent) { ... }
    });

mediaPlayer.addEventListener(MediaPlayerEvent.AD_PROGRESS, new AdProgressEventListener() {
         @Override
         public void onAdProgress(AdPlaybackEvent adPlaybackEvent) { ... }
    });

mediaPlayer.addEventListener(MediaPlayerEvent.AD_COMPLETE, new AdCompletedEventListener() {
         @Override
         public void onAdCompleted(AdPlaybackEvent adPlaybackEvent) { ... }
    });

mediaPlayer.addEventListener(MediaPlayerEvent.AD_BREAK_COMPLETE, new AdBreakCompletedEventListener() {
         @Override
         public void onAdBreakCompleted(AdBreakPlaybackEvent adBreakPlaybackEvent) { ... }
    });

Below event is for tracking ad clicks.

mediaPlayer.addEventListener(MediaPlayerEvent.AD_CLICK, new AdClickedEventListener() {
         @Override
         public void onAdClicked(AdClickEvent adClickEvent) { ... }
    });

Ordine degli eventi DRM

TVSDK invia eventi di gestione dei diritti digitali (DRM) in risposta a operazioni relative a DRM, come quando nuovi metadati DRM diventano disponibili. Il lettore può implementare azioni in risposta a questi eventi.

Per ricevere notifiche su tutti gli eventi relativi a DRM, ascolta MediaPlayerEvent.DRM_METADATA. TVSDK invia eventi DRM aggiuntivi tramite la classe DRMManager .

Ordine degli eventi del caricatore

TVSDK invia MediaPlayerEvent.LOAD_INFORMATION_AVAILABLE quando si verificano eventi di caricamento.

In questa pagina