Use TimedMetadata when the current playback time matches the start time.
Use the saved ArrayList from the previous topic to actually use these saved TimedMetadata objects during playback.
_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
PMPDemoApp.logger.i(LOG_TAG + "#METADATA_CLOCK", "Local time: " + localTime
+" ; timed metadata start time: "
+ timedMetadata + ".");
}
}
}
}
}
});
}
};
_playbackClock.addClockEventListener(_playbackClockEventListener);