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/CameraSettingsActivity.java | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 40 insertions(+), 7 deletions(-) diff --git a/android/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java b/android/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java old mode 100755 new mode 100644 index 15307c0..59ced65 --- a/android/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java +++ b/android/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java @@ -203,13 +203,31 @@ loadSizes(); // Send loaded sizes to additional preferences. - CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.backCameraSizes, - new ListPreferenceFiller() { - @Override - public void fill(List<Size> sizes, ListPreference preference) { - setEntriesForSelection(sizes, preference); - } - }); + if (!mPictureSizes.backCameraSizes.isEmpty()) { + CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.backCameraSizes, + new ListPreferenceFiller() { + @Override + public void fill(List<Size> sizes, ListPreference preference) { + setEntriesForSelection(sizes, preference); + } + }); + } else if (!mPictureSizes.frontCameraSizes.isEmpty()) { + CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.frontCameraSizes, + new ListPreferenceFiller() { + @Override + public void fill(List<Size> sizes, ListPreference preference) { + setEntriesForSelection(sizes, preference); + } + }); + } else { + CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.externalCameraSizes, + new ListPreferenceFiller() { + @Override + public void fill(List<Size> sizes, ListPreference preference) { + setEntriesForSelection(sizes, preference); + } + }); + } // Make sure to hide settings for cameras that don't exist on this // device. @@ -309,6 +327,12 @@ recursiveDelete(resolutions, findPreference(Keys.KEY_VIDEO_QUALITY_FRONT)); } + if (mPictureSizes.externalCameraSizes.isEmpty()) { + recursiveDelete(resolutions, + findPreference(Keys.KEY_PICTURE_SIZE_EXTERNAL)); + recursiveDelete(resolutions, + findPreference(Keys.KEY_VIDEO_QUALITY_EXTERNAL)); + } } /** @@ -382,10 +406,14 @@ setEntriesForSelection(mPictureSizes.backCameraSizes, listPreference); } else if (listPreference.getKey().equals(Keys.KEY_PICTURE_SIZE_FRONT)) { setEntriesForSelection(mPictureSizes.frontCameraSizes, listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_PICTURE_SIZE_EXTERNAL)) { + setEntriesForSelection(mPictureSizes.externalCameraSizes, listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_BACK)) { setEntriesForSelection(mPictureSizes.videoQualitiesBack.orNull(), listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_FRONT)) { setEntriesForSelection(mPictureSizes.videoQualitiesFront.orNull(), listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_EXTERNAL)) { + setEntriesForSelection(mPictureSizes.videoQualitiesExternal.orNull(), listPreference); } } @@ -405,10 +433,15 @@ } else if (listPreference.getKey().equals(Keys.KEY_PICTURE_SIZE_FRONT)) { setSummaryForSelection(mPictureSizes.frontCameraSizes, listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_PICTURE_SIZE_EXTERNAL)) { + setSummaryForSelection(mPictureSizes.externalCameraSizes, + listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_BACK)) { setSummaryForSelection(mPictureSizes.videoQualitiesBack.orNull(), listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_FRONT)) { setSummaryForSelection(mPictureSizes.videoQualitiesFront.orNull(), listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_EXTERNAL)) { + setSummaryForSelection(mPictureSizes.videoQualitiesExternal.orNull(), listPreference); } else { listPreference.setSummary(listPreference.getEntry()); } -- Gitblit v1.6.2