Loading android/src/main/java/com/brentvatne/react/ReactVideoView.java +46 −2 Changes for android/src/main/java/com/brentvatne/react/ReactVideoView.java: 46 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.res.AssetFileDescriptor; import android.graphics.Matrix; import android.media.MediaPlayer; import android.media.TimedMetaData; import android.net.Uri; import android.os.Handler; import android.util.Log; Loading @@ -16,6 +17,8 @@ import com.android.vending.expansion.zipfile.ZipResourceFile; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableNativeArray; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.events.RCTEventEmitter; import com.yqritc.scalablevideoview.ScalableType; Loading @@ -24,19 +27,28 @@ import com.yqritc.scalablevideoview.ScaleManager; import com.yqritc.scalablevideoview.Size; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import java.lang.Math; @SuppressLint("ViewConstructor") public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer .OnErrorListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener, LifecycleEventListener, MediaController.MediaPlayerControl { public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnTimedMetaDataAvailableListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener, LifecycleEventListener, MediaController.MediaPlayerControl { public enum Events { EVENT_LOAD_START("onVideoLoadStart"), EVENT_LOAD("onVideoLoad"), EVENT_ERROR("onVideoError"), EVENT_PROGRESS("onVideoProgress"), EVENT_TIMED_METADATA("onTimedMetadata"), EVENT_SEEK("onVideoSeek"), EVENT_END("onVideoEnd"), EVENT_STALLED("onPlaybackStalled"), Loading Loading @@ -70,6 +82,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP public static final String EVENT_PROP_WIDTH = "width"; public static final String EVENT_PROP_HEIGHT = "height"; public static final String EVENT_PROP_ORIENTATION = "orientation"; public static final String EVENT_PROP_METADATA = "metadata"; public static final String EVENT_PROP_ERROR = "error"; public static final String EVENT_PROP_WHAT = "what"; Loading Loading @@ -181,6 +194,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnTimedMetaDataAvailableListener(this); mMediaPlayer.setOnInfoListener(this); } } Loading Loading @@ -444,6 +458,9 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP } }); } // Select track (so we can use it to listen to timed meta data updates) mp.selectTrack(0); } @Override Loading Loading @@ -478,6 +495,9 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { // Select track (so we can use it to listen to timed meta data updates) mp.selectTrack(0); mVideoBufferedDuration = (int) Math.round((double) (mVideoDuration * percent) / 100.0); } Loading Loading @@ -529,6 +549,30 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mEventEmitter.receiveEvent(getId(), Events.EVENT_END.toString(), null); } @Override public void onTimedMetaDataAvailable(MediaPlayer mp, TimedMetaData data) { WritableMap event = Arguments.createMap(); try { String rawMeta = new String(data.getMetaData(), "UTF-8"); WritableMap id3 = Arguments.createMap(); id3.putString("value", rawMeta.substring(rawMeta.lastIndexOf("\u0003") + 1)); id3.putString("identifier", "id3/TDEN"); WritableArray metadata = new WritableNativeArray(); metadata.pushMap(id3); event.putArray(EVENT_PROP_METADATA, metadata); event.putDouble("target", getId()); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } mEventEmitter.receiveEvent(getId(), Events.EVENT_TIMED_METADATA.toString(), event); } @Override protected void onDetachedFromWindow() { Loading Loading
android/src/main/java/com/brentvatne/react/ReactVideoView.java +46 −2 Changes for android/src/main/java/com/brentvatne/react/ReactVideoView.java: 46 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.res.AssetFileDescriptor; import android.graphics.Matrix; import android.media.MediaPlayer; import android.media.TimedMetaData; import android.net.Uri; import android.os.Handler; import android.util.Log; Loading @@ -16,6 +17,8 @@ import com.android.vending.expansion.zipfile.ZipResourceFile; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableNativeArray; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.events.RCTEventEmitter; import com.yqritc.scalablevideoview.ScalableType; Loading @@ -24,19 +27,28 @@ import com.yqritc.scalablevideoview.ScaleManager; import com.yqritc.scalablevideoview.Size; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import java.lang.Math; @SuppressLint("ViewConstructor") public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer .OnErrorListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener, LifecycleEventListener, MediaController.MediaPlayerControl { public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnTimedMetaDataAvailableListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener, LifecycleEventListener, MediaController.MediaPlayerControl { public enum Events { EVENT_LOAD_START("onVideoLoadStart"), EVENT_LOAD("onVideoLoad"), EVENT_ERROR("onVideoError"), EVENT_PROGRESS("onVideoProgress"), EVENT_TIMED_METADATA("onTimedMetadata"), EVENT_SEEK("onVideoSeek"), EVENT_END("onVideoEnd"), EVENT_STALLED("onPlaybackStalled"), Loading Loading @@ -70,6 +82,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP public static final String EVENT_PROP_WIDTH = "width"; public static final String EVENT_PROP_HEIGHT = "height"; public static final String EVENT_PROP_ORIENTATION = "orientation"; public static final String EVENT_PROP_METADATA = "metadata"; public static final String EVENT_PROP_ERROR = "error"; public static final String EVENT_PROP_WHAT = "what"; Loading Loading @@ -181,6 +194,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnTimedMetaDataAvailableListener(this); mMediaPlayer.setOnInfoListener(this); } } Loading Loading @@ -444,6 +458,9 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP } }); } // Select track (so we can use it to listen to timed meta data updates) mp.selectTrack(0); } @Override Loading Loading @@ -478,6 +495,9 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { // Select track (so we can use it to listen to timed meta data updates) mp.selectTrack(0); mVideoBufferedDuration = (int) Math.round((double) (mVideoDuration * percent) / 100.0); } Loading Loading @@ -529,6 +549,30 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mEventEmitter.receiveEvent(getId(), Events.EVENT_END.toString(), null); } @Override public void onTimedMetaDataAvailable(MediaPlayer mp, TimedMetaData data) { WritableMap event = Arguments.createMap(); try { String rawMeta = new String(data.getMetaData(), "UTF-8"); WritableMap id3 = Arguments.createMap(); id3.putString("value", rawMeta.substring(rawMeta.lastIndexOf("\u0003") + 1)); id3.putString("identifier", "id3/TDEN"); WritableArray metadata = new WritableNativeArray(); metadata.pushMap(id3); event.putArray(EVENT_PROP_METADATA, metadata); event.putDouble("target", getId()); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } mEventEmitter.receiveEvent(getId(), Events.EVENT_TIMED_METADATA.toString(), event); } @Override protected void onDetachedFromWindow() { Loading