diff options
6 files changed, 22 insertions, 8 deletions
diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java index e665d0fcc836..63e2dc16f302 100644 --- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java +++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java @@ -61,7 +61,7 @@ public interface BiometricFingerprintConstants { BIOMETRIC_ERROR_RE_ENROLL, BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED, FINGERPRINT_ERROR_UNKNOWN, - FINGERPRINT_ERROR_BAD_CALIBARTION}) + FINGERPRINT_ERROR_BAD_CALIBRATION}) @Retention(RetentionPolicy.SOURCE) @interface FingerprintError {} @@ -185,7 +185,7 @@ public interface BiometricFingerprintConstants { * Error indicating that the fingerprint sensor has bad calibration. * @hide */ - int FINGERPRINT_ERROR_BAD_CALIBARTION = 18; + int FINGERPRINT_ERROR_BAD_CALIBRATION = 18; /** * @hide diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index 68dd62343eb0..9805bd20570a 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -1375,7 +1375,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing case BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED: return context.getString( com.android.internal.R.string.fingerprint_error_security_update_required); - case FINGERPRINT_ERROR_BAD_CALIBARTION: + case FINGERPRINT_ERROR_BAD_CALIBRATION: return context.getString( com.android.internal.R.string.fingerprint_error_bad_calibration); case FINGERPRINT_ERROR_VENDOR: { diff --git a/services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java b/services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java index 1f1309d4c48c..7b8f82441fd6 100644 --- a/services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java +++ b/services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java @@ -23,7 +23,9 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.os.SystemClock; import android.os.UserHandle; +import android.util.Slog; import com.android.internal.R; @@ -32,9 +34,12 @@ import com.android.internal.R; */ public class BiometricNotificationUtils { + private static final String TAG = "BiometricNotificationUtils"; private static final String RE_ENROLL_NOTIFICATION_TAG = "FaceService"; private static final String BAD_CALIBRATION_NOTIFICATION_TAG = "FingerprintService"; private static final int NOTIFICATION_ID = 1; + private static final long NOTIFICATION_INTERVAL_MS = 24 * 60 * 60 * 1000; + private static long sLastAlertTime = 0; /** * Shows a face re-enrollment notification. @@ -67,8 +72,17 @@ public class BiometricNotificationUtils { * Shows a fingerprint bad calibration notification. */ public static void showBadCalibrationNotification(@NonNull Context context) { - final NotificationManager notificationManager = - context.getSystemService(NotificationManager.class); + final long currentTime = SystemClock.elapsedRealtime(); + final long timeSinceLastAlert = currentTime - sLastAlertTime; + + // Only show the notification if not previously shown or a day has + // passed since the last notification. + if (sLastAlertTime != 0 && (timeSinceLastAlert < NOTIFICATION_INTERVAL_MS)) { + Slog.v(TAG, "Skipping calibration notification : " + timeSinceLastAlert); + return; + } + + sLastAlertTime = currentTime; final String name = context.getString(R.string.fingerprint_recalibrate_notification_name); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/AidlConversionUtils.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/AidlConversionUtils.java index 0ae2e381cf14..6eea83d31130 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/AidlConversionUtils.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/AidlConversionUtils.java @@ -47,7 +47,7 @@ final class AidlConversionUtils { } else if (aidlError == Error.VENDOR) { return BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR; } else if (aidlError == Error.BAD_CALIBRATION) { - return BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBARTION; + return BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION; } else { return BiometricFingerprintConstants.FINGERPRINT_ERROR_UNKNOWN; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java index 1825eda1375a..6a05ed470123 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java @@ -112,7 +112,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp public void onError(int errorCode, int vendorCode) { super.onError(errorCode, vendorCode); - if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBARTION) { + if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION) { BiometricNotificationUtils.showBadCalibrationNotification(getContext()); } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java index 01136d619a26..bf7775730a2c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java @@ -112,7 +112,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi public void onError(int errorCode, int vendorCode) { super.onError(errorCode, vendorCode); - if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBARTION) { + if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION) { BiometricNotificationUtils.showBadCalibrationNotification(getContext()); } |