diff --git a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt index f669c7e..7c9924c 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt @@ -426,16 +426,18 @@ class CameraSession(private val context: Context, private val cameraManager: Cam val fps = configuration?.fps ?: 30 - // Get actual device rotation from WindowManager instead of relying on - // the orientation prop from React, which may not update on Android when - // rotating between landscape-left and landscape-right. + // Get actual device rotation from WindowManager since the React Native orientation hook + // doesn't update when rotating between landscape-left and landscape-right on Android. + // Map device rotation to the correct orientationHint for video recording: + // - Counter-clockwise (ROTATION_90) → 270° hint + // - Clockwise (ROTATION_270) → 90° hint val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val deviceRotation = windowManager.defaultDisplay.rotation - val actualOrientation = when (deviceRotation) { + val recordingOrientation = when (deviceRotation) { Surface.ROTATION_0 -> Orientation.PORTRAIT - Surface.ROTATION_90 -> Orientation.LANDSCAPE_LEFT + Surface.ROTATION_90 -> Orientation.LANDSCAPE_RIGHT Surface.ROTATION_180 -> Orientation.PORTRAIT_UPSIDE_DOWN - Surface.ROTATION_270 -> Orientation.LANDSCAPE_RIGHT + Surface.ROTATION_270 -> Orientation.LANDSCAPE_LEFT else -> Orientation.PORTRAIT }