diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 3a5fafd070..c956dfdfa4 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -120,6 +121,7 @@ namespace android { using namespace camera3; using namespace camera3::SessionConfigurationUtils; +using base::SetProperty; using binder::Status; using companion::virtualnative::IVirtualDeviceManagerNative; using frameworks::cameraservice::service::V2_0::implementation::HidlCameraService; @@ -4386,6 +4388,15 @@ status_t CameraService::BasicClient::startCameraOps() { mOpsActive = true; + // Configure miui camera mode + if (strcmp(mClientPackageName.c_str(), "com.android.camera") == 0) { + SetProperty("sys.camera.miui.apk", "1"); + ALOGI("Enabling miui camera mode"); + } else { + SetProperty("sys.camera.miui.apk", "0"); + ALOGI("Disabling miui camera mode"); + } + // Transition device availability listeners from PRESENT -> NOT_AVAILABLE sCameraService->updateStatus(StatusInternal::NOT_AVAILABLE, mCameraIdStr); diff --git a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp index f507df9bf7..82549e2cde 100644 --- a/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp +++ b/services/camera/libcameraservice/device3/hidl/HidlCamera3Device.cpp @@ -29,6 +29,9 @@ #define CLOGE(fmt, ...) ALOGE("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \ ##__VA_ARGS__) +#define CLOGW(fmt, ...) ALOGW("Camera %s: %s: " fmt, mId.c_str(), __FUNCTION__, \ + ##__VA_ARGS__) + // Convenience macros for transitioning to the error state #define SET_ERR(fmt, ...) setErrorState( \ "%s: " fmt, __FUNCTION__, \ @@ -184,10 +187,19 @@ status_t HidlCamera3Device::initialize(sp manager, physicalId, /*overrideForPerfClass*/false, &mPhysicalDeviceInfoMap[physicalId], hardware::ICameraService::ROTATION_OVERRIDE_NONE); if (res != OK) { - SET_ERR_L("Could not retrieve camera %s characteristics: %s (%d)", + CLOGW("Could not retrieve camera %s characteristics: %s (%d)", physicalId.c_str(), strerror(-res), res); - session->close(); - return res; + // HACK for ginkgo - check camera id 20 for depth sensor + physicalId = "20"; + CLOGW("Trying physical camera %s if available", physicalId.c_str()); + res = manager->getCameraCharacteristics( + physicalId, false, &mPhysicalDeviceInfoMap[physicalId], true); + if (res != OK) { + SET_ERR_L("Could not retrieve camera %s characteristics: %s (%d)", + physicalId.c_str(), strerror(-res), res); + session->close(); + return res; + } } bool usePrecorrectArray =