From 786ff4f4ca2374bdd9177f2e24b503d43e7a3b93 Mon Sep 17 00:00:00 2001
From: liyujie <2352380935@qq.com>
Date: Thu, 28 Aug 2025 12:04:21 +0000
Subject: [PATCH] [4/4]解决USB摄像头打开相机预览界面绿屏

---
 android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java b/android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java
old mode 100755
new mode 100644
index 964b970..3ea3d3f
--- a/android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java
+++ b/android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java
@@ -144,7 +144,6 @@
                 pictureSize.width() > 0 && pictureSize.height() > 0;
 
         if (!isPictureSizeSettingSet || isPictureSizeBlacklisted || !isPictureSizeFromSettingsValid) {
-            final Rational aspectRatio = ResolutionUtil.ASPECT_RATIO_4x3;
 
             OneCameraCharacteristics cameraCharacteristics =
                     mOneCameraManager.getOneCameraCharacteristics(cameraId);
@@ -153,8 +152,25 @@
                     ResolutionUtil.filterBlackListedSizes(
                             cameraCharacteristics.getSupportedPictureSizes(ImageFormat.JPEG),
                             blacklist);
-            final Size fallbackPictureSize =
-                    ResolutionUtil.getLargestPictureSize(aspectRatio, supportedPictureSizes);
+            for (Size size: supportedPictureSizes) {
+                Log.v(TAG, "supportedPictureSizes size w = " + size.getWidth() +" h = " + size.getHeight());
+            }
+
+            //provide 4x3 and 16x9 selections, compare them and choose larger one.
+            //The chosen size must achieve 16bit aligned requirement.
+            Size fallbackPictureSize;
+            Size LargestPictureSize_4x3 =
+                ResolutionUtil.getLargestPictureSize(ResolutionUtil.ASPECT_RATIO_4x3,
+                        supportedPictureSizes);
+            Size LargestPictureSize_16x9 =
+                ResolutionUtil.getLargestPictureSize(ResolutionUtil.ASPECT_RATIO_16x9,
+                        supportedPictureSizes);
+            if (LargestPictureSize_4x3.getWidth() > LargestPictureSize_16x9.getWidth()) {
+                fallbackPictureSize = LargestPictureSize_4x3;
+            } else {
+                fallbackPictureSize = LargestPictureSize_16x9;
+            }
+
             mSettingsManager.set(
                     SettingsManager.SCOPE_GLOBAL,
                     pictureSizeSettingKey,

--
Gitblit v1.6.2