使用計時中繼資料

當目前的播放時間符合開始時間時,您可以使用TimedMetadata。

若要在播放期間使用這些保存的TimedMetadata對象,請使用儲存調度的計時元資料對象中保存的ArrayList

  1. 執行計時器並重複查詢目前的播放時間。

  2. 尋找所有TimedMetadata物件,其開始時間與目前播放時間相符。

    您可以使用這些物件來完成各種動作。

    重要

    檢查當前播放時間是否與任何TimedMetadata對象匹配時,請將shouldTriggerSubscribedTagEvent作為條件。

    時間軸可能會因各種廣告行為而改變。 例如,一個或多個廣告插播可能會從它們在時間軸上的原始位置移動,但shouldTriggerSubscribedTagEvent可確保TimeMetadata物件的開始時間符合目前的播放時間。

    例如:

     _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. 定期刷新清單中的過時TimedMetadata實例,以防止記憶體持續增長。

本頁內容