From 9d5b1f22e00167bd6f75fde20ace1c1d1e964318 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Wed, 1 Jun 2022 16:56:46 -0400 Subject: [PATCH 4/5] camera: Implement property to override default camera Complement to the frameworks/base patch. Change-Id: I002bfa974bafc2cc01365eeea31c7a5dcb5a2028 --- .../common/CameraProviderManager.cpp | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp index abaea6639f..59b59f44fb 100644 --- a/services/camera/libcameraservice/common/CameraProviderManager.cpp +++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -205,6 +206,15 @@ std::vector CameraProviderManager::getCameraDeviceIds() const { deviceIds.push_back(id); } } + + int32_t altPrimaryCamera = property_get_int32("persist.sys.alt_primary_camera", 0); + + if (altPrimaryCamera != 0 && deviceIds.size() > (size_t) altPrimaryCamera) { + const std::string origPrimary = deviceIds[0]; + deviceIds[0] = deviceIds[altPrimaryCamera]; + deviceIds[altPrimaryCamera] = origPrimary; + } + return deviceIds; } @@ -271,6 +281,18 @@ std::vector CameraProviderManager::getAPI1CompatibleCameraDeviceIds std::sort(systemDeviceIds.begin(), systemDeviceIds.end(), sortFunc); deviceIds.insert(deviceIds.end(), publicDeviceIds.begin(), publicDeviceIds.end()); deviceIds.insert(deviceIds.end(), systemDeviceIds.begin(), systemDeviceIds.end()); + + // Default camera ID hack should match with android.hardware.camera2.CameraManager.sortCameraIds + // Note that the alt primary camera may not be available here due to filterLogicalCameraIdsLocked() + // in which case we will just ignore it. + int altPrimaryCameraId = base::GetIntProperty("persist.sys.alt_primary_camera", -1); + + if (altPrimaryCameraId > 0 && altPrimaryCameraId < (int) deviceIds.size()) { + std::string origPrimary = deviceIds[0]; + deviceIds[0] = deviceIds[altPrimaryCameraId]; + deviceIds[altPrimaryCameraId] = origPrimary; + } + return deviceIds; } -- 2.37.2