From d6360405625d8c26e73445ec6be88b877cabfed2 Mon Sep 17 00:00:00 2001 From: camsim99 Date: Thu, 26 Sep 2024 17:54:46 +0100 Subject: [PATCH 1/6] Correct api 29 assumption --- packages/camera/camera_android_camerax/CHANGELOG.md | 6 ++++++ .../plugins/camerax/SystemServicesHostApiImpl.java | 12 ++++++------ .../flutter/plugins/camerax/SystemServicesTest.java | 4 ++-- .../lib/src/android_camera_camerax.dart | 4 ++++ packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index a6daff8fbbd..8e52b23bd65 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.6.9 + +* Corrects assumption about automatic preview correction happening on API >= 29 to API > 29, + based on the fact that the `ImageReader` Impeller backend is not used for the most part on + devices running API 29+. + ## 0.6.8+3 * Removes dependency on org.jetbrains.kotlin:kotlin-bom. diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java index cd048238ca9..3f7b4127538 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java @@ -106,16 +106,16 @@ public String getTempFilePath(@NonNull String prefix, @NonNull String suffix) { } /** - * Returns whether or not a {@code SurfaceTexture} backs the {@code Surface} provided to CameraX - * to build the camera preview. If it is backed by a {@code Surface}, then the transformation - * needed to correctly rotate the preview has already been applied. + * Returns whether or not Impeller uses an {@code ImageReader} backend to provide a {@code Surface} + * to CameraX to build hte preview. If it is backed by an {@code ImageReader}, then CameraX will not + * automatically apply the transformation needed to correct the preview. * - *

This is determined by the engine, who uses {@code SurfaceTexture}s on Android SDKs 29 and - * below. + *

This is determine by the engine, who approximately uses {@code SurfaceTexture}s on Android SDKs + * below 29. */ @Override @NonNull public Boolean isPreviewPreTransformed() { - return Build.VERSION.SDK_INT <= 29; + return Build.VERSION.SDK_INT < 29; } } diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java index 252d3a0a776..c72518e0b9f 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java @@ -146,7 +146,7 @@ public void isPreviewPreTransformed_returnsTrueWhenRunningBelowSdk29() { } @Test - @Config(sdk = 29) + @Config(sdk = 28) public void isPreviewPreTransformed_returnsTrueWhenRunningSdk29() { final SystemServicesHostApiImpl systemServicesHostApi = new SystemServicesHostApiImpl(mockBinaryMessenger, mockInstanceManager, mockContext); @@ -154,7 +154,7 @@ public void isPreviewPreTransformed_returnsTrueWhenRunningSdk29() { } @Test - @Config(sdk = 30) + @Config(sdk = 29) public void isPreviewPreTransformed_returnsFalseWhenRunningAboveSdk29() { final SystemServicesHostApiImpl systemServicesHostApi = new SystemServicesHostApiImpl(mockBinaryMessenger, mockInstanceManager, mockContext); diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 1d068eb24f1..43118c5d96d 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -913,6 +913,10 @@ class AndroidCameraCameraX extends CameraPlatform { naturalDeviceOrientationDegrees * signForCameraDirection + 360) % 360; + print('sensorOrientaiton: $sensorOrientation'); + print('naturalDeviceOrientationDegrees $naturalDeviceOrientationDegrees'); + print('signForCameraDirection: $signForCameraDirection'); + print('rotation $rotation'); int quarterTurnsToCorrectPreview = rotation ~/ 90; if (naturalOrientation == DeviceOrientation.landscapeLeft || diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 9a845bfc181..663a5893bf1 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.6.8+3 +version: 0.6.9 environment: sdk: ^3.5.0 From 902a67500012a227b9d5001bedcb2227db8bd4b9 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Mon, 30 Sep 2024 11:18:33 -0400 Subject: [PATCH 2/6] Update packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java Co-authored-by: Navaron Bracke --- .../io/flutter/plugins/camerax/SystemServicesHostApiImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java index 3f7b4127538..3a46c6d77e6 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java @@ -107,7 +107,7 @@ public String getTempFilePath(@NonNull String prefix, @NonNull String suffix) { /** * Returns whether or not Impeller uses an {@code ImageReader} backend to provide a {@code Surface} - * to CameraX to build hte preview. If it is backed by an {@code ImageReader}, then CameraX will not + * to CameraX to build the preview. If it is backed by an {@code ImageReader}, then CameraX will not * automatically apply the transformation needed to correct the preview. * *

This is determine by the engine, who approximately uses {@code SurfaceTexture}s on Android SDKs From 1e38d75dda08dca072f051768b87cf4b6e3163f2 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Mon, 30 Sep 2024 11:18:44 -0400 Subject: [PATCH 3/6] Update packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java Co-authored-by: Navaron Bracke --- .../io/flutter/plugins/camerax/SystemServicesHostApiImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java index 3a46c6d77e6..c39c611c101 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java @@ -110,7 +110,7 @@ public String getTempFilePath(@NonNull String prefix, @NonNull String suffix) { * to CameraX to build the preview. If it is backed by an {@code ImageReader}, then CameraX will not * automatically apply the transformation needed to correct the preview. * - *

This is determine by the engine, who approximately uses {@code SurfaceTexture}s on Android SDKs + *

This is determined by the engine, which approximately uses {@code SurfaceTexture}s on Android SDKs * below 29. */ @Override From 1a95f92e6cc7e45801349bf4060b5346a1108291 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Mon, 30 Sep 2024 11:19:16 -0400 Subject: [PATCH 4/6] Update packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java --- .../java/io/flutter/plugins/camerax/SystemServicesTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java index c72518e0b9f..3654e80c671 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java @@ -147,7 +147,7 @@ public void isPreviewPreTransformed_returnsTrueWhenRunningBelowSdk29() { @Test @Config(sdk = 28) - public void isPreviewPreTransformed_returnsTrueWhenRunningSdk29() { + public void isPreviewPreTransformed_returnsTrueWhenRunningSdk28() { final SystemServicesHostApiImpl systemServicesHostApi = new SystemServicesHostApiImpl(mockBinaryMessenger, mockInstanceManager, mockContext); assertTrue(systemServicesHostApi.isPreviewPreTransformed()); From fac23cc959bd5e44fdb7e681fb9851cc29250717 Mon Sep 17 00:00:00 2001 From: camsim99 Date: Tue, 1 Oct 2024 15:09:45 +0100 Subject: [PATCH 5/6] Remove prints, correct test name --- .../java/io/flutter/plugins/camerax/SystemServicesTest.java | 2 +- .../lib/src/android_camera_camerax.dart | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java index 3654e80c671..52d02e67f65 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java @@ -155,7 +155,7 @@ public void isPreviewPreTransformed_returnsTrueWhenRunningSdk28() { @Test @Config(sdk = 29) - public void isPreviewPreTransformed_returnsFalseWhenRunningAboveSdk29() { + public void isPreviewPreTransformed_returnsFalseWhenRunningAboveSdk28() { final SystemServicesHostApiImpl systemServicesHostApi = new SystemServicesHostApiImpl(mockBinaryMessenger, mockInstanceManager, mockContext); assertFalse(systemServicesHostApi.isPreviewPreTransformed()); diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 43118c5d96d..1d068eb24f1 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -913,10 +913,6 @@ class AndroidCameraCameraX extends CameraPlatform { naturalDeviceOrientationDegrees * signForCameraDirection + 360) % 360; - print('sensorOrientaiton: $sensorOrientation'); - print('naturalDeviceOrientationDegrees $naturalDeviceOrientationDegrees'); - print('signForCameraDirection: $signForCameraDirection'); - print('rotation $rotation'); int quarterTurnsToCorrectPreview = rotation ~/ 90; if (naturalOrientation == DeviceOrientation.landscapeLeft || From 5e3d07c086f5f0a22c39c97274f6f074c0aec566 Mon Sep 17 00:00:00 2001 From: camsim99 Date: Tue, 1 Oct 2024 15:26:35 +0100 Subject: [PATCH 6/6] Formatting --- .../plugins/camerax/SystemServicesHostApiImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java index c39c611c101..138e9259e02 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java @@ -106,12 +106,12 @@ public String getTempFilePath(@NonNull String prefix, @NonNull String suffix) { } /** - * Returns whether or not Impeller uses an {@code ImageReader} backend to provide a {@code Surface} - * to CameraX to build the preview. If it is backed by an {@code ImageReader}, then CameraX will not - * automatically apply the transformation needed to correct the preview. + * Returns whether or not Impeller uses an {@code ImageReader} backend to provide a {@code + * Surface} to CameraX to build the preview. If it is backed by an {@code ImageReader}, then + * CameraX will not automatically apply the transformation needed to correct the preview. * - *

This is determined by the engine, which approximately uses {@code SurfaceTexture}s on Android SDKs - * below 29. + *

This is determined by the engine, which approximately uses {@code SurfaceTexture}s on + * Android SDKs below 29. */ @Override @NonNull