Allow timed metadata to compile on older SDKs
This commit is contained in:
parent
aa89683785
commit
70d863e3d0
@ -37,7 +37,6 @@ public class ReactVideoView extends ScalableVideoView implements
|
|||||||
MediaPlayer.OnPreparedListener,
|
MediaPlayer.OnPreparedListener,
|
||||||
MediaPlayer.OnErrorListener,
|
MediaPlayer.OnErrorListener,
|
||||||
MediaPlayer.OnBufferingUpdateListener,
|
MediaPlayer.OnBufferingUpdateListener,
|
||||||
MediaPlayer.OnTimedMetaDataAvailableListener,
|
|
||||||
MediaPlayer.OnCompletionListener,
|
MediaPlayer.OnCompletionListener,
|
||||||
MediaPlayer.OnInfoListener,
|
MediaPlayer.OnInfoListener,
|
||||||
LifecycleEventListener,
|
LifecycleEventListener,
|
||||||
@ -197,8 +196,10 @@ public class ReactVideoView extends ScalableVideoView implements
|
|||||||
mMediaPlayer.setOnPreparedListener(this);
|
mMediaPlayer.setOnPreparedListener(this);
|
||||||
mMediaPlayer.setOnBufferingUpdateListener(this);
|
mMediaPlayer.setOnBufferingUpdateListener(this);
|
||||||
mMediaPlayer.setOnCompletionListener(this);
|
mMediaPlayer.setOnCompletionListener(this);
|
||||||
mMediaPlayer.setOnTimedMetaDataAvailableListener(this);
|
|
||||||
mMediaPlayer.setOnInfoListener(this);
|
mMediaPlayer.setOnInfoListener(this);
|
||||||
|
if (Build.VERSION.SDK_INT >= 23) {
|
||||||
|
mMediaPlayer.setOnTimedMetaDataAvailableListener(new TimedMetaDataAvailableListener());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,28 +553,33 @@ public class ReactVideoView extends ScalableVideoView implements
|
|||||||
mEventEmitter.receiveEvent(getId(), Events.EVENT_END.toString(), null);
|
mEventEmitter.receiveEvent(getId(), Events.EVENT_END.toString(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// This is not fully tested and does not work for all forms of timed metadata
|
||||||
public void onTimedMetaDataAvailable(MediaPlayer mp, TimedMetaData data) {
|
@TargetApi(23) // 6.0
|
||||||
WritableMap event = Arguments.createMap();
|
public class TimedMetaDataAvailableListener
|
||||||
|
implements MediaPlayer.OnTimedMetaDataAvailableListener
|
||||||
|
{
|
||||||
|
public void onTimedMetaDataAvailable(MediaPlayer mp, TimedMetaData data) {
|
||||||
|
WritableMap event = Arguments.createMap();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String rawMeta = new String(data.getMetaData(), "UTF-8");
|
String rawMeta = new String(data.getMetaData(), "UTF-8");
|
||||||
WritableMap id3 = Arguments.createMap();
|
WritableMap id3 = Arguments.createMap();
|
||||||
|
|
||||||
id3.putString(EVENT_PROP_METADATA_VALUE, rawMeta.substring(rawMeta.lastIndexOf("\u0003") + 1));
|
id3.putString(EVENT_PROP_METADATA_VALUE, rawMeta.substring(rawMeta.lastIndexOf("\u0003") + 1));
|
||||||
id3.putString(EVENT_PROP_METADATA_IDENTIFIER, "id3/TDEN");
|
id3.putString(EVENT_PROP_METADATA_IDENTIFIER, "id3/TDEN");
|
||||||
|
|
||||||
WritableArray metadata = new WritableNativeArray();
|
WritableArray metadata = new WritableNativeArray();
|
||||||
|
|
||||||
metadata.pushMap(id3);
|
metadata.pushMap(id3);
|
||||||
|
|
||||||
event.putArray(EVENT_PROP_METADATA, metadata);
|
event.putArray(EVENT_PROP_METADATA, metadata);
|
||||||
event.putDouble(EVENT_PROP_TARGET, getId());
|
event.putDouble(EVENT_PROP_TARGET, getId());
|
||||||
} catch(UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
mEventEmitter.receiveEvent(getId(), Events.EVENT_TIMED_METADATA.toString(), event);
|
||||||
}
|
}
|
||||||
|
|
||||||
mEventEmitter.receiveEvent(getId(), Events.EVENT_TIMED_METADATA.toString(), event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user