diff --git a/android/src/main/java/com/brentvatne/react/ReactVideoView.java b/android/src/main/java/com/brentvatne/react/ReactVideoView.java index 4fd688f4..e4e8d1af 100644 --- a/android/src/main/java/com/brentvatne/react/ReactVideoView.java +++ b/android/src/main/java/com/brentvatne/react/ReactVideoView.java @@ -9,6 +9,8 @@ import com.facebook.react.uimanager.events.RCTEventEmitter; import com.yqritc.scalablevideoview.ScalableType; import com.yqritc.scalablevideoview.ScalableVideoView; +import java.io.IOException; + public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer .OnErrorListener, MediaPlayer.OnCompletionListener { @@ -82,6 +84,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mMediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setOnErrorListener(this); mMediaPlayer.setOnPreparedListener(this); + mMediaPlayer.setOnCompletionListener(this); } } @@ -89,6 +92,22 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnP mMediaPlayer.reset(); } + public void setSrc(final String uriString, final boolean isNetwork) throws IOException { + reset(); + + if (isNetwork) { + setDataSource(uriString); + } else { + setRawData(mThemedReactContext.getResources().getIdentifier( + uriString, + "raw", + mThemedReactContext.getPackageName() + )); + } + + prepare(this); + } + public void setResizeModeModifier(final ScalableType resizeMode) { mResizeMode = resizeMode; initializeMediaPlayerIfNeeded(); diff --git a/android/src/main/java/com/brentvatne/react/ReactVideoViewManager.java b/android/src/main/java/com/brentvatne/react/ReactVideoViewManager.java index 12fd4146..832a20aa 100644 --- a/android/src/main/java/com/brentvatne/react/ReactVideoViewManager.java +++ b/android/src/main/java/com/brentvatne/react/ReactVideoViewManager.java @@ -1,6 +1,5 @@ package com.brentvatne.react; -import android.content.Context; import com.brentvatne.react.ReactVideoView.Events; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReadableMap; @@ -70,15 +69,7 @@ public class ReactVideoViewManager extends SimpleViewManager { final String type = src.getString(PROP_SRC_TYPE); final boolean isNetwork = src.getBoolean(PROP_SRC_IS_NETWORK); - videoView.reset(); - - if (isNetwork) { - videoView.setDataSource(uriString); - } else { - Context context = videoView.getContext(); - videoView.setRawData(context.getResources().getIdentifier(uriString, "raw", context.getPackageName())); - } - + // TODO: Carry this inside videoView.setSrc WritableMap writableSrc = Arguments.createMap(); writableSrc.putString(PROP_SRC_URI, uriString); writableSrc.putString(PROP_SRC_TYPE, type); @@ -87,8 +78,10 @@ public class ReactVideoViewManager extends SimpleViewManager { event.putMap(PROP_SRC, writableSrc); eventEmitter.receiveEvent(videoView.getId(), Events.EVENT_LOAD_START.toString(), event); - videoView.prepare(); + videoView.setSrc(uriString, isNetwork); } catch (Exception e) { + // TODO: Send onError + // TODO: Carry inside videoView.setSrc e.printStackTrace(); } }