Loading src/com/android/settings/biometrics/face/FaceSettings.java +21 −7 Original line number Diff line number Diff line Loading @@ -95,9 +95,20 @@ public class FaceSettings extends DashboardFragment { private final FaceSettingsEnrollButtonPreferenceController.Listener mEnrollListener = intent -> startActivityForResult(intent, ENROLL_REQUEST); public static boolean isAvailable(Context context) { /** * @param context * @return true if the Face hardware is detected. */ public static boolean isFaceHardwareDetected(Context context) { FaceManager manager = Utils.getFaceManagerOrNull(context); return manager != null && manager.isHardwareDetected(); boolean isHardwareDetected = false; if (manager == null) { Log.d(TAG, "FaceManager is null"); } else { isHardwareDetected = manager.isHardwareDetected(); Log.d(TAG, "FaceManager is not null. Hardware detected: " + isHardwareDetected); } return manager != null && isHardwareDetected; } @Override Loading Loading @@ -126,7 +137,7 @@ public class FaceSettings extends DashboardFragment { super.onCreate(savedInstanceState); final Context context = getPrefContext(); if (!isAvailable(context)) { if (!isFaceHardwareDetected(context)) { Log.w(TAG, "no faceManager, finish this"); finish(); return; Loading Loading @@ -273,7 +284,7 @@ public class FaceSettings extends DashboardFragment { @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { if (!isAvailable(context)) { if (!isFaceHardwareDetected(context)) { return null; } mControllers = buildPreferenceControllers(context, getSettingsLifecycle()); Loading Loading @@ -314,7 +325,7 @@ public class FaceSettings extends DashboardFragment { @Override public List<AbstractPreferenceController> createPreferenceControllers( Context context) { if (isAvailable(context)) { if (isFaceHardwareDetected(context)) { return buildPreferenceControllers(context, null /* lifecycle */); } else { return null; Loading @@ -323,7 +334,7 @@ public class FaceSettings extends DashboardFragment { @Override protected boolean isPageSearchEnabled(Context context) { if (isAvailable(context)) { if (isFaceHardwareDetected(context)) { return hasEnrolledBiometrics(context); } Loading @@ -333,7 +344,10 @@ public class FaceSettings extends DashboardFragment { @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (isAvailable(context)) { final boolean isFaceHardwareDetected = isFaceHardwareDetected(context); Log.d(TAG, "Get non indexable keys. isFaceHardwareDetected: " + isFaceHardwareDetected + ", size:" + keys.size()); if (isFaceHardwareDetected) { final boolean hasEnrolled = hasEnrolledBiometrics(context); keys.add(hasEnrolled ? PREF_KEY_ENROLL_FACE_UNLOCK : PREF_KEY_DELETE_FACE_DATA); Loading src/com/android/settings/biometrics/face/FaceSettingsAppPreferenceController.java +4 −4 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.content.Context; import android.hardware.face.FaceManager; import android.provider.Settings; import com.android.settings.Utils; import androidx.preference.Preference; import com.android.settings.Utils; /** * Preference controller for Face settings page controlling the ability to use * Face authentication in apps (through BiometricPrompt). Loading @@ -51,7 +51,7 @@ public class FaceSettingsAppPreferenceController extends FaceSettingsPreferenceC @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return false; } return Settings.Secure.getIntForUser( Loading @@ -67,7 +67,7 @@ public class FaceSettingsAppPreferenceController extends FaceSettingsPreferenceC @Override public void updateState(Preference preference) { super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { preference.setEnabled(false); Loading src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ public class FaceSettingsAttentionPreferenceController extends FaceSettingsPrefe @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return true; } // Set to disabled until we know the true value. Loading src/com/android/settings/biometrics/face/FaceSettingsConfirmPreferenceController.java +1 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.provider.Settings; import androidx.preference.Preference; import com.android.settings.Utils; import com.android.settings.core.TogglePreferenceController; /** * Preference controller giving the user an option to always require confirmation. Loading Loading @@ -65,7 +64,7 @@ public class FaceSettingsConfirmPreferenceController extends FaceSettingsPrefere @Override public void updateState(Preference preference) { super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { preference.setEnabled(false); Loading src/com/android/settings/biometrics/face/FaceSettingsKeyguardPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return false; } else if (getRestrictingAdmin() != null) { return false; Loading @@ -77,7 +77,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer public void updateState(Preference preference) { EnforcedAdmin admin; super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if ((admin = getRestrictingAdmin()) != null) { ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin); Loading Loading
src/com/android/settings/biometrics/face/FaceSettings.java +21 −7 Original line number Diff line number Diff line Loading @@ -95,9 +95,20 @@ public class FaceSettings extends DashboardFragment { private final FaceSettingsEnrollButtonPreferenceController.Listener mEnrollListener = intent -> startActivityForResult(intent, ENROLL_REQUEST); public static boolean isAvailable(Context context) { /** * @param context * @return true if the Face hardware is detected. */ public static boolean isFaceHardwareDetected(Context context) { FaceManager manager = Utils.getFaceManagerOrNull(context); return manager != null && manager.isHardwareDetected(); boolean isHardwareDetected = false; if (manager == null) { Log.d(TAG, "FaceManager is null"); } else { isHardwareDetected = manager.isHardwareDetected(); Log.d(TAG, "FaceManager is not null. Hardware detected: " + isHardwareDetected); } return manager != null && isHardwareDetected; } @Override Loading Loading @@ -126,7 +137,7 @@ public class FaceSettings extends DashboardFragment { super.onCreate(savedInstanceState); final Context context = getPrefContext(); if (!isAvailable(context)) { if (!isFaceHardwareDetected(context)) { Log.w(TAG, "no faceManager, finish this"); finish(); return; Loading Loading @@ -273,7 +284,7 @@ public class FaceSettings extends DashboardFragment { @Override protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { if (!isAvailable(context)) { if (!isFaceHardwareDetected(context)) { return null; } mControllers = buildPreferenceControllers(context, getSettingsLifecycle()); Loading Loading @@ -314,7 +325,7 @@ public class FaceSettings extends DashboardFragment { @Override public List<AbstractPreferenceController> createPreferenceControllers( Context context) { if (isAvailable(context)) { if (isFaceHardwareDetected(context)) { return buildPreferenceControllers(context, null /* lifecycle */); } else { return null; Loading @@ -323,7 +334,7 @@ public class FaceSettings extends DashboardFragment { @Override protected boolean isPageSearchEnabled(Context context) { if (isAvailable(context)) { if (isFaceHardwareDetected(context)) { return hasEnrolledBiometrics(context); } Loading @@ -333,7 +344,10 @@ public class FaceSettings extends DashboardFragment { @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (isAvailable(context)) { final boolean isFaceHardwareDetected = isFaceHardwareDetected(context); Log.d(TAG, "Get non indexable keys. isFaceHardwareDetected: " + isFaceHardwareDetected + ", size:" + keys.size()); if (isFaceHardwareDetected) { final boolean hasEnrolled = hasEnrolledBiometrics(context); keys.add(hasEnrolled ? PREF_KEY_ENROLL_FACE_UNLOCK : PREF_KEY_DELETE_FACE_DATA); Loading
src/com/android/settings/biometrics/face/FaceSettingsAppPreferenceController.java +4 −4 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.content.Context; import android.hardware.face.FaceManager; import android.provider.Settings; import com.android.settings.Utils; import androidx.preference.Preference; import com.android.settings.Utils; /** * Preference controller for Face settings page controlling the ability to use * Face authentication in apps (through BiometricPrompt). Loading @@ -51,7 +51,7 @@ public class FaceSettingsAppPreferenceController extends FaceSettingsPreferenceC @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return false; } return Settings.Secure.getIntForUser( Loading @@ -67,7 +67,7 @@ public class FaceSettingsAppPreferenceController extends FaceSettingsPreferenceC @Override public void updateState(Preference preference) { super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { preference.setEnabled(false); Loading
src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ public class FaceSettingsAttentionPreferenceController extends FaceSettingsPrefe @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return true; } // Set to disabled until we know the true value. Loading
src/com/android/settings/biometrics/face/FaceSettingsConfirmPreferenceController.java +1 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.provider.Settings; import androidx.preference.Preference; import com.android.settings.Utils; import com.android.settings.core.TogglePreferenceController; /** * Preference controller giving the user an option to always require confirmation. Loading Loading @@ -65,7 +64,7 @@ public class FaceSettingsConfirmPreferenceController extends FaceSettingsPrefere @Override public void updateState(Preference preference) { super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { preference.setEnabled(false); Loading
src/com/android/settings/biometrics/face/FaceSettingsKeyguardPreferenceController.java +2 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer @Override public boolean isChecked() { if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { return false; } else if (getRestrictingAdmin() != null) { return false; Loading @@ -77,7 +77,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer public void updateState(Preference preference) { EnforcedAdmin admin; super.updateState(preference); if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isFaceHardwareDetected(mContext)) { preference.setEnabled(false); } else if ((admin = getRestrictingAdmin()) != null) { ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin); Loading