136 lines
6.1 KiB
Diff
136 lines
6.1 KiB
Diff
|
diff --git a/node_modules/expo-video/android/src/main/java/expo/modules/video/PlayerViewExtension.kt b/node_modules/expo-video/android/src/main/java/expo/modules/video/PlayerViewExtension.kt
|
||
|
index 9905e13..47342ff 100644
|
||
|
--- a/node_modules/expo-video/android/src/main/java/expo/modules/video/PlayerViewExtension.kt
|
||
|
+++ b/node_modules/expo-video/android/src/main/java/expo/modules/video/PlayerViewExtension.kt
|
||
|
@@ -11,6 +11,7 @@ internal fun PlayerView.applyRequiresLinearPlayback(requireLinearPlayback: Boole
|
||
|
setShowPreviousButton(!requireLinearPlayback)
|
||
|
setShowNextButton(!requireLinearPlayback)
|
||
|
setTimeBarInteractive(requireLinearPlayback)
|
||
|
+ setShowSubtitleButton(true)
|
||
|
}
|
||
|
|
||
|
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
||
|
@@ -27,7 +28,8 @@ internal fun PlayerView.setTimeBarInteractive(interactive: Boolean) {
|
||
|
|
||
|
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
||
|
internal fun PlayerView.setFullscreenButtonVisibility(visible: Boolean) {
|
||
|
- val fullscreenButton = findViewById<android.widget.ImageButton>(androidx.media3.ui.R.id.exo_fullscreen)
|
||
|
+ val fullscreenButton =
|
||
|
+ findViewById<android.widget.ImageButton>(androidx.media3.ui.R.id.exo_fullscreen)
|
||
|
fullscreenButton?.visibility = if (visible) {
|
||
|
android.view.View.VISIBLE
|
||
|
} else {
|
||
|
diff --git a/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoModule.kt b/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoModule.kt
|
||
|
index ec3da2a..5a1397a 100644
|
||
|
--- a/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoModule.kt
|
||
|
+++ b/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoModule.kt
|
||
|
@@ -43,7 +43,9 @@ class VideoModule : Module() {
|
||
|
View(VideoView::class) {
|
||
|
Events(
|
||
|
"onPictureInPictureStart",
|
||
|
- "onPictureInPictureStop"
|
||
|
+ "onPictureInPictureStop",
|
||
|
+ "onEnterFullscreen",
|
||
|
+ "onExitFullscreen"
|
||
|
)
|
||
|
|
||
|
Prop("player") { view: VideoView, player: VideoPlayer ->
|
||
|
diff --git a/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoView.kt b/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoView.kt
|
||
|
index a951d80..3932535 100644
|
||
|
--- a/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoView.kt
|
||
|
+++ b/node_modules/expo-video/android/src/main/java/expo/modules/video/VideoView.kt
|
||
|
@@ -36,6 +36,8 @@ class VideoView(context: Context, appContext: AppContext) : ExpoView(context, ap
|
||
|
val playerView: PlayerView = PlayerView(context.applicationContext)
|
||
|
val onPictureInPictureStart by EventDispatcher<Unit>()
|
||
|
val onPictureInPictureStop by EventDispatcher<Unit>()
|
||
|
+ val onEnterFullscreen by EventDispatcher()
|
||
|
+ val onExitFullscreen by EventDispatcher()
|
||
|
|
||
|
var willEnterPiP: Boolean = false
|
||
|
var isInFullscreen: Boolean = false
|
||
|
@@ -154,6 +156,7 @@ class VideoView(context: Context, appContext: AppContext) : ExpoView(context, ap
|
||
|
@Suppress("DEPRECATION")
|
||
|
currentActivity.overridePendingTransition(0, 0)
|
||
|
}
|
||
|
+ onEnterFullscreen(mapOf())
|
||
|
isInFullscreen = true
|
||
|
}
|
||
|
|
||
|
@@ -162,6 +165,7 @@ class VideoView(context: Context, appContext: AppContext) : ExpoView(context, ap
|
||
|
val fullScreenButton: ImageButton = playerView.findViewById(androidx.media3.ui.R.id.exo_fullscreen)
|
||
|
fullScreenButton.setImageResource(androidx.media3.ui.R.drawable.exo_icon_fullscreen_enter)
|
||
|
videoPlayer?.changePlayerView(playerView)
|
||
|
+ this.onExitFullscreen(mapOf())
|
||
|
isInFullscreen = false
|
||
|
}
|
||
|
|
||
|
diff --git a/node_modules/expo-video/build/VideoView.types.d.ts b/node_modules/expo-video/build/VideoView.types.d.ts
|
||
|
index cb9ca6d..60e9f4e 100644
|
||
|
--- a/node_modules/expo-video/build/VideoView.types.d.ts
|
||
|
+++ b/node_modules/expo-video/build/VideoView.types.d.ts
|
||
|
@@ -89,5 +89,8 @@ export interface VideoViewProps extends ViewProps {
|
||
|
* @platform ios 16.0+
|
||
|
*/
|
||
|
allowsVideoFrameAnalysis?: boolean;
|
||
|
+
|
||
|
+ onEnterFullscreen?: () => void;
|
||
|
+ onExitFullscreen?: () => void;
|
||
|
}
|
||
|
//# sourceMappingURL=VideoView.types.d.ts.map
|
||
|
diff --git a/node_modules/expo-video/ios/VideoModule.swift b/node_modules/expo-video/ios/VideoModule.swift
|
||
|
index c537a12..e4a918f 100644
|
||
|
--- a/node_modules/expo-video/ios/VideoModule.swift
|
||
|
+++ b/node_modules/expo-video/ios/VideoModule.swift
|
||
|
@@ -16,7 +16,9 @@ public final class VideoModule: Module {
|
||
|
View(VideoView.self) {
|
||
|
Events(
|
||
|
"onPictureInPictureStart",
|
||
|
- "onPictureInPictureStop"
|
||
|
+ "onPictureInPictureStop",
|
||
|
+ "onEnterFullscreen",
|
||
|
+ "onExitFullscreen"
|
||
|
)
|
||
|
|
||
|
Prop("player") { (view, player: VideoPlayer?) in
|
||
|
diff --git a/node_modules/expo-video/ios/VideoView.swift b/node_modules/expo-video/ios/VideoView.swift
|
||
|
index f4579e4..10c5908 100644
|
||
|
--- a/node_modules/expo-video/ios/VideoView.swift
|
||
|
+++ b/node_modules/expo-video/ios/VideoView.swift
|
||
|
@@ -41,6 +41,8 @@ public final class VideoView: ExpoView, AVPlayerViewControllerDelegate {
|
||
|
|
||
|
let onPictureInPictureStart = EventDispatcher()
|
||
|
let onPictureInPictureStop = EventDispatcher()
|
||
|
+ let onEnterFullscreen = EventDispatcher()
|
||
|
+ let onExitFullscreen = EventDispatcher()
|
||
|
|
||
|
public override var bounds: CGRect {
|
||
|
didSet {
|
||
|
@@ -163,6 +165,7 @@ public final class VideoView: ExpoView, AVPlayerViewControllerDelegate {
|
||
|
_ playerViewController: AVPlayerViewController,
|
||
|
willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator
|
||
|
) {
|
||
|
+ onEnterFullscreen()
|
||
|
isFullscreen = true
|
||
|
}
|
||
|
|
||
|
@@ -179,6 +182,7 @@ public final class VideoView: ExpoView, AVPlayerViewControllerDelegate {
|
||
|
if wasPlaying {
|
||
|
self.player?.pointer.play()
|
||
|
}
|
||
|
+ self.onExitFullscreen()
|
||
|
self.isFullscreen = false
|
||
|
}
|
||
|
}
|
||
|
diff --git a/node_modules/expo-video/src/VideoView.types.ts b/node_modules/expo-video/src/VideoView.types.ts
|
||
|
index 29fe5db..e1fbf59 100644
|
||
|
--- a/node_modules/expo-video/src/VideoView.types.ts
|
||
|
+++ b/node_modules/expo-video/src/VideoView.types.ts
|
||
|
@@ -100,4 +100,7 @@ export interface VideoViewProps extends ViewProps {
|
||
|
* @platform ios 16.0+
|
||
|
*/
|
||
|
allowsVideoFrameAnalysis?: boolean;
|
||
|
+
|
||
|
+ onEnterFullscreen?: () => void;
|
||
|
+ onExitFullscreen?: () => void;
|
||
|
}
|