Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 192acab1 authored by Diya Bera's avatar Diya Bera Committed by Android (Google) Code Review
Browse files

Merge "Check only connected cameras for biometrics" into main

parents 23abdc8a 069aff57
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -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)) {
        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;
        }
    }

    @Override