diff options
| -rw-r--r-- | services/core/java/com/android/server/biometrics/BiometricCameraManagerImpl.java | 18 |
1 files 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<String, Boolean> 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 |