From 069aff5702eda31389d9417b00393a88fbcac91f Mon Sep 17 00:00:00 2001 From: Diya Bera Date: Wed, 12 Feb 2025 22:51:04 +0000 Subject: Check only connected cameras for biometrics Flag: EXEMPT test fix Fixes: 394123247 Test: N/A (Unable to add test since CameraManager is a final class and cannot be mocked) Change-Id: Idc7ca5a789bc20a20ec489743038c6b503bf402d --- .../server/biometrics/BiometricCameraManagerImpl.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/biometrics/BiometricCameraManagerImpl.java b/services/core/java/com/android/server/biometrics/BiometricCameraManagerImpl.java index 000ee5446962..9f364677705e 100644 --- a/services/core/java/com/android/server/biometrics/BiometricCameraManagerImpl.java +++ b/services/core/java/com/android/server/biometrics/BiometricCameraManagerImpl.java @@ -20,12 +20,16 @@ import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import android.annotation.NonNull; import android.hardware.SensorPrivacyManager; +import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraManager; +import android.util.Log; import java.util.concurrent.ConcurrentHashMap; public class BiometricCameraManagerImpl implements BiometricCameraManager { + private static final String TAG = "BiometricCameraManager"; + private final CameraManager mCameraManager; private final SensorPrivacyManager mSensorPrivacyManager; private final ConcurrentHashMap mIsCameraAvailable = new ConcurrentHashMap<>(); @@ -52,12 +56,18 @@ public class BiometricCameraManagerImpl implements BiometricCameraManager { @Override public boolean isAnyCameraUnavailable() { - for (String cameraId : mIsCameraAvailable.keySet()) { - if (!mIsCameraAvailable.get(cameraId)) { - return true; + try { + for (String cameraId : mCameraManager.getCameraIdList()) { + if (!mIsCameraAvailable.getOrDefault(cameraId, true)) { + return true; + } } + return false; + } catch (CameraAccessException e) { + Log.e(TAG, "Camera exception thrown when trying to determine availability: ", e); + //If face HAL is unable to get access to a camera, it will return an error. + return false; } - return false; } @Override -- cgit v1.2.3-59-g8ed1b