diff --git a/services/camera/libcameraservice/Android.bp b/services/camera/libcameraservice/Android.bp index 53fc1be7eb..5888d329d1 100644 --- a/services/camera/libcameraservice/Android.bp +++ b/services/camera/libcameraservice/Android.bp @@ -131,7 +131,8 @@ cc_library_shared { "android.hardware.camera.device@3.3", "android.hardware.camera.device@3.4", "android.hardware.camera.device@3.5", - "android.hardware.camera.device@3.6" + "android.hardware.camera.device@3.6", + "vendor.lineage.camera.motor@1.0" ], static_libs: [ diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 5f71b80fe1..309acc2074 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -77,6 +77,8 @@ #include "utils/TagMonitor.h" #include "utils/CameraThreadState.h" +#include + namespace { const char* kPermissionServiceName = "permission"; }; // namespace anonymous @@ -94,6 +96,7 @@ using hardware::camera::common::V1_0::CameraDeviceStatus; using hardware::camera::common::V1_0::TorchModeStatus; using hardware::camera2::utils::CameraIdAndSessionConfiguration; using hardware::camera2::utils::ConcurrentCameraIdCombination; +using vendor::lineage::camera::motor::V1_0::ICameraMotor; // ---------------------------------------------------------------------------- // Logging support -- this is for debugging only @@ -1778,6 +1781,11 @@ Status CameraService::connectHelper(const sp& cameraCb, const String8& } else { // Otherwise, add client to active clients list finishConnectLocked(client, partial); + + sp cameraMotor = ICameraMotor::getService(); + if (cameraMotor != nullptr) { + cameraMotor->onConnect(cameraId.string()); + } } } // lock is destroyed, allow further connect calls @@ -2833,6 +2841,11 @@ binder::Status CameraService::BasicClient::disconnect() { } mDisconnected = true; + sp cameraMotor = ICameraMotor::getService(); + if (cameraMotor != nullptr) { + cameraMotor->onDisconnect(mCameraIdStr.string()); + } + sCameraService->removeByClient(this); sCameraService->logDisconnected(mCameraIdStr, mClientPid, String8(mClientPackageName)); sCameraService->mCameraProviderManager->removeRef(CameraProviderManager::DeviceMode::CAMERA,