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

---
 android/frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/android/frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/android/frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
index 2fc4ad3..1da6ed0 100644
--- a/android/frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
+++ b/android/frameworks/ex/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
@@ -1292,6 +1292,7 @@
         private final int mNumberOfCameras;
         private final int mFirstBackCameraId;
         private final int mFirstFrontCameraId;
+        private final int mFirstExternalCameraId;
 
         public AndroidCamera2DeviceInfo(CameraManager cameraManager,
                                         String[] cameraIds, int numberOfCameras) {
@@ -1301,6 +1302,7 @@
 
             int firstBackId = NO_DEVICE;
             int firstFrontId = NO_DEVICE;
+            int firstExternalId = NO_DEVICE;
             for (int id = 0; id < cameraIds.length; ++id) {
                 try {
                     int lensDirection = cameraManager.getCameraCharacteristics(cameraIds[id])
@@ -1313,12 +1315,17 @@
                             lensDirection == CameraCharacteristics.LENS_FACING_FRONT) {
                         firstFrontId = id;
                     }
+                    if (firstFrontId == NO_DEVICE &&
+                            lensDirection == CameraCharacteristics.LENS_FACING_EXTERNAL) {
+                        firstExternalId = id;
+                    }
                 } catch (CameraAccessException ex) {
                     Log.w(TAG, "Couldn't get characteristics of camera '" + id + "'", ex);
                 }
             }
             mFirstBackCameraId = firstBackId;
             mFirstFrontCameraId = firstFrontId;
+            mFirstExternalCameraId = firstExternalId;
         }
 
         @Override
@@ -1347,6 +1354,11 @@
             return mFirstFrontCameraId;
         }
 
+        @Override
+        public int getFirstExternalCameraId() {
+            return mFirstExternalCameraId;
+        }
+
         private static class AndroidCharacteristics2 extends Characteristics {
             private CameraCharacteristics mCameraInfo;
 
@@ -1367,6 +1379,12 @@
             }
 
             @Override
+            public boolean isFacingExternal() {
+                return mCameraInfo.get(CameraCharacteristics.LENS_FACING)
+                    .equals(CameraCharacteristics.LENS_FACING_EXTERNAL);
+            }
+
+            @Override
             public int getSensorOrientation() {
                 return mCameraInfo.get(CameraCharacteristics.SENSOR_ORIENTATION);
             }

--
Gitblit v1.6.2