diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
index 79f716cd5ce95..2d46a4073809e 100644
--- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
@@ -60,7 +60,8 @@ public interface BiometricFingerprintConstants {
BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED,
BIOMETRIC_ERROR_RE_ENROLL,
BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED,
- FINGERPRINT_ERROR_UNKNOWN})
+ FINGERPRINT_ERROR_UNKNOWN,
+ FINGERPRINT_ERROR_BAD_CALIBARTION})
@Retention(RetentionPolicy.SOURCE)
@interface FingerprintError {}
@@ -180,6 +181,12 @@ public interface BiometricFingerprintConstants {
*/
int FINGERPRINT_ERROR_UNKNOWN = 17;
+ /**
+ * Error indicating that the fingerprint sensor has bad calibration.
+ * @hide
+ */
+ int FINGERPRINT_ERROR_BAD_CALIBARTION = 18;
+
/**
* @hide
*/
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index e5946663df471..688f9f1174dd6 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -1375,6 +1375,9 @@ 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:
+ context.getString(
+ com.android.internal.R.string.fingerprint_error_bad_calibration);
case FINGERPRINT_ERROR_VENDOR: {
String[] msgArray = context.getResources().getStringArray(
com.android.internal.R.array.fingerprint_error_vendor);
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index bdeff89352eab..d4ddab1ec502d 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1636,6 +1636,8 @@
This device does not have a fingerprint sensor.
Sensor temporarily disabled.
+
+ Sensor needs calibration
Finger %d
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 97a2a38bdab82..960bd639960e9 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2537,6 +2537,7 @@
+
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 66142bff04533..f1f94564c35dd 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
@@ -46,6 +46,8 @@ final class AidlConversionUtils {
return BiometricFingerprintConstants.FINGERPRINT_ERROR_UNABLE_TO_REMOVE;
} else if (aidlError == Error.VENDOR) {
return BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR;
+ } else if (aidlError == Error.BAD_CALIBRATION) {
+ return BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBARTION;
} else {
return BiometricFingerprintConstants.FINGERPRINT_ERROR_UNKNOWN;
}