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/CaptureModule.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/android/packages/apps/Camera2/src/com/android/camera/CaptureModule.java b/android/packages/apps/Camera2/src/com/android/camera/CaptureModule.java index fa4802d..f8b6d1f 100755 --- a/android/packages/apps/Camera2/src/com/android/camera/CaptureModule.java +++ b/android/packages/apps/Camera2/src/com/android/camera/CaptureModule.java @@ -23,6 +23,9 @@ import android.graphics.RectF; import android.graphics.SurfaceTexture; import android.location.Location; +import android.hardware.camera2.CameraAccessException; +import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CameraManager; import android.media.MediaActionSound; import android.net.Uri; import android.os.AsyncTask; @@ -354,6 +357,7 @@ public CaptureModule(AppController appController) { this(appController, false); } + private CameraManager mCameraManager; /** Constructs a new capture module. */ public CaptureModule(AppController appController, boolean stickyHdr) { @@ -414,6 +418,7 @@ mCameraHandler = new Handler(thread.getLooper()); mActivity = activity; mOneCameraOpener = mAppController.getCameraOpener(); + mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); try { mOneCameraManager = OneCameraModule.provideOneCameraManager(); @@ -429,6 +434,29 @@ Log.d(TAG,"SettingsManager cameraID = " + mSettingsManager.getInteger(mAppController.getModuleScope(), Keys.KEY_CAMERA_ID) + " facing = " + mCameraFacing); + + int cameraId = mSettingsManager.getInteger(mAppController.getModuleScope(), + Keys.KEY_CAMERA_ID); + try { + String[] cameraIds = mCameraManager.getCameraIdList(); + Log.d(TAG, "cameraIds len = " + cameraIds.length); + boolean foundCameraId = false; + for (String currentCameraId : cameraIds) { + Log.d(TAG,"Enumerate cameraId = " + currentCameraId); + if (Integer.parseInt(currentCameraId) == cameraId) { + Log.d(TAG, "find exists currentCameraId matches first camera id"); + foundCameraId = true; + break; + } + } + if (!foundCameraId && cameraIds.length > 0) { + cameraId = Integer.parseInt(cameraIds[0]); + Log.d(TAG,"cameraId sets to first id of cameraIds: " + cameraId); + } + } catch (CameraAccessException ex) { + Log.w(TAG, "Unable to get camera ID", ex); + } + mShowErrorAndFinish = !updateCameraCharacteristics(); if (mShowErrorAndFinish) { return; @@ -1398,6 +1426,30 @@ boolean useHdr = mHdrPlusEnabled && mCameraFacing == Facing.BACK; CameraId cameraId = mOneCameraManager.findFirstCameraFacing(mCameraFacing); + + int settingsCameraId = mSettingsManager.getInteger(mAppController.getModuleScope(), Keys.KEY_CAMERA_ID); + //check if settingsCameraId exists now + try { + String[] cameraIds = mCameraManager.getCameraIdList(); + boolean foundCameraId = false; + for (String currentCameraId : cameraIds) { + Log.d(TAG,"Enumerate cameraId = " + currentCameraId); + if (Integer.parseInt(currentCameraId) == settingsCameraId) { + Log.d(TAG, "find exists currentCameraId matches first camera id"); + foundCameraId = true; + if (Integer.parseInt(cameraId.getValue()) != settingsCameraId) { + cameraId = CameraId.from(String.valueOf(settingsCameraId)); + } + break; + } + } + if (!foundCameraId && cameraIds.length > 0) { + cameraId = CameraId.from(String.valueOf(cameraIds[0])); + Log.d(TAG,"cameraId sets to first id of cameraIds: " + cameraId); + } + } catch (CameraAccessException ex) { + Log.w(TAG, "Unable to get camera ID", ex); + } final String settingScope = SettingsManager.getCameraSettingScope(cameraId.getValue()); OneCameraCaptureSetting captureSetting; -- Gitblit v1.6.2