Usa metadati temporizzati

È possibile utilizzare TimedMetadata quando il tempo di riproduzione corrente corrisponde all'ora di inizio.

Per utilizzare i file salvati TimedMetadata durante la riproduzione, utilizza gli oggetti salvati ArrayList da Archivia gli oggetti metadati temporizzati durante l’invio.

  1. Eseguire un timer ed eseguire ripetutamente una query sul tempo di riproduzione corrente.

  2. Trova tutte le TimedMetadata oggetti con orari di inizio corrispondenti al tempo di riproduzione corrente.

    È possibile utilizzare questi oggetti per completare varie azioni.

    IMPORTANTE

    Quando si controlla se il tempo di riproduzione corrente corrisponde a TimedMetadata oggetti, includi shouldTriggerSubscribedTagEvent come condizione.

    La timeline potrebbe cambiare a seguito di vari comportamenti pubblicitari. Ad esempio, una o più interruzioni pubblicitarie potrebbero essere spostate dalle posizioni originali sulla timeline, ma shouldTriggerSubscribedTagEvent garantisce che TimeMetadata l'ora di inizio dell'oggetto corrisponde all'ora di riproduzione corrente.

    Ad esempio:

     _playbackClockEventListener = new Clock.ClockEventListener() {
        @Override
        public void onTick(String name) {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    /* handle timedmetadata object list  */
                    if (_mediaPlayer != null && _timedMetadataList != null && _timedMetadataList.size() > 0) {
                        if (_lastKnownStatus == MediaPlayer.PlayerState.PLAYING) {
                            long localTime = _mediaPlayer.getLocalTime();
                            Iterator<TimedMetadata> iterator = _timedMetadataList.iterator();
                            while (iterator.hasNext()) {
                                TimedMetadata timedMetadata = iterator.next();
                                long diff = localTime - timedMetadata.getTime();
                                if (diff >= 0 &&
                                    diff <= PLAYBACK_CLOCK_INTERVAL &&
                                    _mediaPlayer.shouldTriggerSubscribedTagEvent()) {
                                    // use timed metadata object
                                }
                            }
                        }
                    }
                }
            });
        }
    };
    _playbackClock.addClockEventListener(_playbackClockEventListener);
    
  3. Svuotamento periodico non aggiornato TimedMetadata dall'elenco per impedire che la memoria cresca continuamente.

In questa pagina