Camera: fix number of cameras logic

Test: no Camera CTS regression
Bug: 36289841
Change-Id: I7218347a0f2e8184dd43a9f35acc0554b761e15e
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index f8b2908..562e6c9 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -22,6 +22,7 @@
 
 #include <chrono>
 #include <inttypes.h>
+#include <set>
 #include <hidl/ServiceManagement.h>
 
 namespace android {
@@ -75,7 +76,7 @@
     std::lock_guard<std::mutex> lock(mInterfaceMutex);
     int count = 0;
     for (auto& provider : mProviders) {
-        count += provider->mDevices.size();
+        count += provider->mUniqueDeviceCount;
     }
     return count;
 }
@@ -85,7 +86,7 @@
     int count = 0;
     for (auto& provider : mProviders) {
         if (kStandardProviderTypes.find(provider->getType()) != std::string::npos) {
-            count += provider->mDevices.size();
+            count += provider->mUniqueDeviceCount;
         }
     }
     return count;
@@ -471,6 +472,12 @@
         }
     }
 
+    std::set<std::string> uniqueCameraIds;
+    for (auto& device : mDevices) {
+        uniqueCameraIds.insert(device->mId);
+    }
+    mUniqueDeviceCount = uniqueCameraIds.size();
+
     ALOGI("Camera provider %s ready with %zu camera devices",
             mProviderName.c_str(), mDevices.size());