Add support for external lazy camera HALs

 The lazy camera provider HAL will be started when
 a device is attached (USB hotplug) or opened and
 then shut down when there are no active clients using it.
 When a USB device is unplugged, the provider removes the camera
 devices associated with it.

Test: atest CtsCameraTestCases
Test: atest cameraservice_test
Test: -Boot device with/without camera attached.
      -(plug-in camera)
      -Open app that uses camera
      -adb shell ps | grep camera
        -> shows "android.hardware.camera.provider@2.7-external-service-lazy"
      - Close app and wait 5-10 seconds
      - adb shell ps | grep camera
       -> does not show "android.hardware.camera.provider@2.7-external-service-lazy"

Bug: 191248460

Change-Id: I5eba8392f17919ed26c1d888cedb4c5428e881c4
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index b3db66b..7795fa3 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -2333,6 +2333,13 @@
             doUserSwitch(/*newUserIds*/ args);
             break;
         }
+        case ICameraService::EVENT_USB_DEVICE_ATTACHED:
+        case ICameraService::EVENT_USB_DEVICE_DETACHED: {
+            // Notify CameraProviderManager for lazy HALs
+            mCameraProviderManager->notifyUsbDeviceEvent(eventId,
+                                                        std::to_string(args[0]));
+            break;
+        }
         case ICameraService::EVENT_NONE:
         default: {
             ALOGW("%s: Received invalid system event from system_server: %d", __FUNCTION__,