From d0b45fd76d7a45f72c1a057b5e16a56490fe6f14 Mon Sep 17 00:00:00 2001 From: Tony Rewin Date: Fri, 30 Sep 2016 01:02:24 +0300 Subject: [PATCH 1/3] rn-0.31+ events, local assets support --- .../player/ReactMediaPlayerViewManager.java | 16 +++++++++------- ios/react-native-media-kit/RCTMediaPlayerView.m | 14 +++++++++++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java index dca94eb..e53bf9f 100644 --- a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java +++ b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java @@ -50,6 +50,8 @@ protected ReactMediaPlayerView createViewInstance(ThemedReactContext reactContex @ReactProp(name = "src") public void setSrc(ReactMediaPlayerView view, @Nullable String uri) { + String appId = view.getContext().getPackageName(); + if (!uri.startsWith("http")) { uri = "android.resource://"+appId+"" + uri; } Log.d(TAG, "setSrc...src=" + uri); view.setUri(uri); } @@ -92,7 +94,7 @@ protected void addEventEmitters(final ThemedReactContext reactContext, final Rea @Override public void onPlayerPlaying() { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_PLAYING; @@ -108,7 +110,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { @Override public void onPlayerPaused() { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_PAUSED; @@ -124,7 +126,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { @Override public void onPlayerFinished() { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_FINISHED; @@ -140,7 +142,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { @Override public void onPlayerBuffering() { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_BUFFERING; @@ -156,7 +158,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { @Override public void onPlayerBufferReady() { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_BUFFER_OK; @@ -172,7 +174,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { @Override public void onPlayerProgress(final long current, final long total, final long buffered) { reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_PROGRESS; @@ -190,7 +192,7 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { if (buffered > 0 && this.buffered != buffered) { this.buffered = buffered; reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher() - .dispatchEvent(new Event(view.getId(), SystemClock.uptimeMillis()) { + .dispatchEvent(new Event(view.getId()) { @Override public String getEventName() { return EVENT_ON_PLAYER_BUFFER_CHANGE; diff --git a/ios/react-native-media-kit/RCTMediaPlayerView.m b/ios/react-native-media-kit/RCTMediaPlayerView.m index 37474be..04fea89 100644 --- a/ios/react-native-media-kit/RCTMediaPlayerView.m +++ b/ios/react-native-media-kit/RCTMediaPlayerView.m @@ -47,9 +47,21 @@ - (void)willMoveToSuperview:(UIView *)newSuperview { } } + - (void)initPlayerIfNeeded { if(!player) { - player = [AVPlayer playerWithURL:[NSURL URLWithString:self.src]]; + NSURL *url; + NSString *httpPrefix = @"http"; + if ([self.src hasPrefix:httpPrefix]) { + url = [NSURL URLWithString:self.src]; + } else { + NSString *resourceType = [self.src pathExtension]; + NSString *resource = [[self.src lastPathComponent] stringByDeletingPathExtension]; + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *file = [mainBundle pathForResource:resource ofType:resourceType]; + url = [NSURL fileURLWithPath:file]; + } + player = [AVPlayer playerWithURL:url]; [self setPlayer:player]; [self addProgressObserver]; [self addObservers]; From 71b99ac31faaa98dfcffe410ad44b526d3bb9a75 Mon Sep 17 00:00:00 2001 From: Tony Rewin Date: Fri, 30 Sep 2016 21:22:48 +0300 Subject: [PATCH 2/3] smallest fix --- .../reactnative/media/player/ReactMediaPlayerViewManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java index e53bf9f..454c366 100644 --- a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java +++ b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java @@ -51,7 +51,7 @@ protected ReactMediaPlayerView createViewInstance(ThemedReactContext reactContex @ReactProp(name = "src") public void setSrc(ReactMediaPlayerView view, @Nullable String uri) { String appId = view.getContext().getPackageName(); - if (!uri.startsWith("http")) { uri = "android.resource://"+appId+"" + uri; } + if (!uri.startsWith("http")) { uri = "android.resource://" + appId + "/" + uri; } Log.d(TAG, "setSrc...src=" + uri); view.setUri(uri); } From 2ec9529c00e196f3d3854943764d69cf74045e4b Mon Sep 17 00:00:00 2001 From: Tony Rewin Date: Fri, 30 Sep 2016 22:04:10 +0300 Subject: [PATCH 3/3] android local asset fix --- .../media/player/ReactMediaPlayerViewManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java index 454c366..042a8c0 100644 --- a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java +++ b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java @@ -50,8 +50,9 @@ protected ReactMediaPlayerView createViewInstance(ThemedReactContext reactContex @ReactProp(name = "src") public void setSrc(ReactMediaPlayerView view, @Nullable String uri) { - String appId = view.getContext().getPackageName(); - if (!uri.startsWith("http")) { uri = "android.resource://" + appId + "/" + uri; } + if (!uri.startsWith("http")) { + uri = "asset:///" + uri; // app/src/main/assets/ + } Log.d(TAG, "setSrc...src=" + uri); view.setUri(uri); }