Loading core/java/android/hardware/fingerprint/FingerprintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -1376,7 +1376,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing return context.getString( com.android.internal.R.string.fingerprint_error_security_update_required); case FINGERPRINT_ERROR_BAD_CALIBARTION: context.getString( return context.getString( com.android.internal.R.string.fingerprint_error_bad_calibration); case FINGERPRINT_ERROR_VENDOR: { String[] msgArray = context.getResources().getStringArray( Loading core/res/res/values/strings.xml +9 −2 Original line number Diff line number Diff line Loading @@ -1638,8 +1638,8 @@ <string name="fingerprint_error_hw_not_present">This device does not have a fingerprint sensor.</string> <!-- Generic error message shown when fingerprint is not available due to a security vulnerability. [CHAR LIMIT=50] --> <string name="fingerprint_error_security_update_required">Sensor temporarily disabled.</string> <!-- Generic error message shown when fingerprint needs calibration [CHAR LIMIT=50] --> <string name="fingerprint_error_bad_calibration">Sensor needs calibration</string> <!-- Generic error message shown when fingerprint needs calibration [CHAR LIMIT=150] --> <string name="fingerprint_error_bad_calibration">Can\u2019t use fingerprint sensor. Visit a repair provider</string> <!-- Template to be used to name enrolled fingerprints by default. --> <string name="fingerprint_name_template">Finger <xliff:g id="fingerId" example="1">%d</xliff:g></string> Loading Loading @@ -1675,6 +1675,13 @@ <!-- Contents of a notification that directs the user to enroll a fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_setup_notification_content">Tap to add a fingerprint</string> <!-- Notification name shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_name">Fingerprint Unlock</string> <!-- Notification title shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_title">Can\u2019t use fingerprint sensor</string> <!-- Notification content shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_content">Visit a repair provider.</string> <!-- Message shown during face acquisition when the face cannot be recognized [CHAR LIMIT=50] --> <string name="face_acquired_insufficient">Couldn\u2019t capture accurate face data. Try again.</string> <!-- Message shown during face acquisition when the image is too bright [CHAR LIMIT=50] --> Loading core/res/res/values/symbols.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2541,6 +2541,9 @@ <java-symbol type="string" name="fingerprint_error_security_update_required" /> <java-symbol type="string" name="fingerprint_error_bad_calibration" /> <java-symbol type="string" name="fingerprint_acquired_immobile" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_name" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_title" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_content" /> <!-- Fingerprint config --> <java-symbol type="integer" name="config_fingerprintMaxTemplatesPerUser"/> Loading services/core/java/com/android/server/biometrics/sensors/face/ReEnrollNotificationUtils.java→services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java +63 −7 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package com.android.server.biometrics.sensors.face; package com.android.server.biometrics.sensors; import android.annotation.NonNull; import android.app.Notification; Loading @@ -27,11 +27,18 @@ import android.os.UserHandle; import com.android.internal.R; public class ReEnrollNotificationUtils { /** * Biometric notification helper class. */ public class BiometricNotificationUtils { private static final String NOTIFICATION_TAG = "FaceService"; 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; /** * Shows a face re-enrollment notification. */ public static void showReEnrollmentNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); Loading @@ -52,6 +59,42 @@ public class ReEnrollNotificationUtils { final String channelName = "FaceEnrollNotificationChannel"; showNotificationHelper(context, name, title, content, pendingIntent, channelName, RE_ENROLL_NOTIFICATION_TAG); } /** * Shows a fingerprint bad calibration notification. */ public static void showBadCalibrationNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); final String name = context.getString(R.string.fingerprint_recalibrate_notification_name); final String title = context.getString(R.string.fingerprint_recalibrate_notification_title); final String content = context.getString(R.string.fingerprint_recalibrate_notification_content); final Intent intent = new Intent("android.settings.FINGERPRINT_SETTINGS"); intent.setPackage("com.android.settings"); final PendingIntent pendingIntent = PendingIntent.getActivityAsUser(context, 0 /* requestCode */, intent, PendingIntent.FLAG_IMMUTABLE /* flags */, null /* options */, UserHandle.CURRENT); final String channelName = "FingerprintBadCalibrationNotificationChannel"; showNotificationHelper(context, name, title, content, pendingIntent, channelName, BAD_CALIBRATION_NOTIFICATION_TAG); } private static void showNotificationHelper(Context context, String name, String title, String content, PendingIntent pendingIntent, String channelName, String notificationTag) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); final NotificationChannel channel = new NotificationChannel(channelName, name, NotificationManager.IMPORTANCE_HIGH); final Notification notification = new Notification.Builder(context, channelName) Loading @@ -68,15 +111,28 @@ public class ReEnrollNotificationUtils { .build(); notificationManager.createNotificationChannel(channel); notificationManager.notifyAsUser(NOTIFICATION_TAG, NOTIFICATION_ID, notification, notificationManager.notifyAsUser(notificationTag, NOTIFICATION_ID, notification, UserHandle.CURRENT); } public static void cancelNotification(@NonNull Context context) { /** * Cancels a face re-enrollment notification */ public static void cancelReEnrollNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); notificationManager.cancelAsUser(NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); notificationManager.cancelAsUser(RE_ENROLL_NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); } /** * Cancels a fingerprint bad calibration notification */ public static void cancelBadCalibrationNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); notificationManager.cancelAsUser(BAD_CALIBRATION_NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); } } services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -40,11 +40,11 @@ import android.util.Slog; import com.android.internal.R; import com.android.server.biometrics.Utils; import com.android.server.biometrics.sensors.AuthenticationClient; import com.android.server.biometrics.sensors.BiometricNotificationUtils; import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter; import com.android.server.biometrics.sensors.LockoutCache; import com.android.server.biometrics.sensors.LockoutConsumer; import com.android.server.biometrics.sensors.LockoutTracker; import com.android.server.biometrics.sensors.face.ReEnrollNotificationUtils; import com.android.server.biometrics.sensors.face.UsageStats; import java.util.ArrayList; Loading Loading @@ -182,7 +182,7 @@ class FaceAuthenticationClient extends AuthenticationClient<ISession> implements } break; case BiometricConstants.BIOMETRIC_ERROR_RE_ENROLL: ReEnrollNotificationUtils.showReEnrollmentNotification(getContext()); BiometricNotificationUtils.showReEnrollmentNotification(getContext()); break; default: break; Loading Loading
core/java/android/hardware/fingerprint/FingerprintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -1376,7 +1376,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing return context.getString( com.android.internal.R.string.fingerprint_error_security_update_required); case FINGERPRINT_ERROR_BAD_CALIBARTION: context.getString( return context.getString( com.android.internal.R.string.fingerprint_error_bad_calibration); case FINGERPRINT_ERROR_VENDOR: { String[] msgArray = context.getResources().getStringArray( Loading
core/res/res/values/strings.xml +9 −2 Original line number Diff line number Diff line Loading @@ -1638,8 +1638,8 @@ <string name="fingerprint_error_hw_not_present">This device does not have a fingerprint sensor.</string> <!-- Generic error message shown when fingerprint is not available due to a security vulnerability. [CHAR LIMIT=50] --> <string name="fingerprint_error_security_update_required">Sensor temporarily disabled.</string> <!-- Generic error message shown when fingerprint needs calibration [CHAR LIMIT=50] --> <string name="fingerprint_error_bad_calibration">Sensor needs calibration</string> <!-- Generic error message shown when fingerprint needs calibration [CHAR LIMIT=150] --> <string name="fingerprint_error_bad_calibration">Can\u2019t use fingerprint sensor. Visit a repair provider</string> <!-- Template to be used to name enrolled fingerprints by default. --> <string name="fingerprint_name_template">Finger <xliff:g id="fingerId" example="1">%d</xliff:g></string> Loading Loading @@ -1675,6 +1675,13 @@ <!-- Contents of a notification that directs the user to enroll a fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_setup_notification_content">Tap to add a fingerprint</string> <!-- Notification name shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_name">Fingerprint Unlock</string> <!-- Notification title shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_title">Can\u2019t use fingerprint sensor</string> <!-- Notification content shown when the system requires the user to re-calibrate their fingerprint. [CHAR LIMIT=NONE] --> <string name="fingerprint_recalibrate_notification_content">Visit a repair provider.</string> <!-- Message shown during face acquisition when the face cannot be recognized [CHAR LIMIT=50] --> <string name="face_acquired_insufficient">Couldn\u2019t capture accurate face data. Try again.</string> <!-- Message shown during face acquisition when the image is too bright [CHAR LIMIT=50] --> Loading
core/res/res/values/symbols.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2541,6 +2541,9 @@ <java-symbol type="string" name="fingerprint_error_security_update_required" /> <java-symbol type="string" name="fingerprint_error_bad_calibration" /> <java-symbol type="string" name="fingerprint_acquired_immobile" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_name" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_title" /> <java-symbol type="string" name="fingerprint_recalibrate_notification_content" /> <!-- Fingerprint config --> <java-symbol type="integer" name="config_fingerprintMaxTemplatesPerUser"/> Loading
services/core/java/com/android/server/biometrics/sensors/face/ReEnrollNotificationUtils.java→services/core/java/com/android/server/biometrics/sensors/BiometricNotificationUtils.java +63 −7 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package com.android.server.biometrics.sensors.face; package com.android.server.biometrics.sensors; import android.annotation.NonNull; import android.app.Notification; Loading @@ -27,11 +27,18 @@ import android.os.UserHandle; import com.android.internal.R; public class ReEnrollNotificationUtils { /** * Biometric notification helper class. */ public class BiometricNotificationUtils { private static final String NOTIFICATION_TAG = "FaceService"; 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; /** * Shows a face re-enrollment notification. */ public static void showReEnrollmentNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); Loading @@ -52,6 +59,42 @@ public class ReEnrollNotificationUtils { final String channelName = "FaceEnrollNotificationChannel"; showNotificationHelper(context, name, title, content, pendingIntent, channelName, RE_ENROLL_NOTIFICATION_TAG); } /** * Shows a fingerprint bad calibration notification. */ public static void showBadCalibrationNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); final String name = context.getString(R.string.fingerprint_recalibrate_notification_name); final String title = context.getString(R.string.fingerprint_recalibrate_notification_title); final String content = context.getString(R.string.fingerprint_recalibrate_notification_content); final Intent intent = new Intent("android.settings.FINGERPRINT_SETTINGS"); intent.setPackage("com.android.settings"); final PendingIntent pendingIntent = PendingIntent.getActivityAsUser(context, 0 /* requestCode */, intent, PendingIntent.FLAG_IMMUTABLE /* flags */, null /* options */, UserHandle.CURRENT); final String channelName = "FingerprintBadCalibrationNotificationChannel"; showNotificationHelper(context, name, title, content, pendingIntent, channelName, BAD_CALIBRATION_NOTIFICATION_TAG); } private static void showNotificationHelper(Context context, String name, String title, String content, PendingIntent pendingIntent, String channelName, String notificationTag) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); final NotificationChannel channel = new NotificationChannel(channelName, name, NotificationManager.IMPORTANCE_HIGH); final Notification notification = new Notification.Builder(context, channelName) Loading @@ -68,15 +111,28 @@ public class ReEnrollNotificationUtils { .build(); notificationManager.createNotificationChannel(channel); notificationManager.notifyAsUser(NOTIFICATION_TAG, NOTIFICATION_ID, notification, notificationManager.notifyAsUser(notificationTag, NOTIFICATION_ID, notification, UserHandle.CURRENT); } public static void cancelNotification(@NonNull Context context) { /** * Cancels a face re-enrollment notification */ public static void cancelReEnrollNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); notificationManager.cancelAsUser(NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); notificationManager.cancelAsUser(RE_ENROLL_NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); } /** * Cancels a fingerprint bad calibration notification */ public static void cancelBadCalibrationNotification(@NonNull Context context) { final NotificationManager notificationManager = context.getSystemService(NotificationManager.class); notificationManager.cancelAsUser(BAD_CALIBRATION_NOTIFICATION_TAG, NOTIFICATION_ID, UserHandle.CURRENT); } }
services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -40,11 +40,11 @@ import android.util.Slog; import com.android.internal.R; import com.android.server.biometrics.Utils; import com.android.server.biometrics.sensors.AuthenticationClient; import com.android.server.biometrics.sensors.BiometricNotificationUtils; import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter; import com.android.server.biometrics.sensors.LockoutCache; import com.android.server.biometrics.sensors.LockoutConsumer; import com.android.server.biometrics.sensors.LockoutTracker; import com.android.server.biometrics.sensors.face.ReEnrollNotificationUtils; import com.android.server.biometrics.sensors.face.UsageStats; import java.util.ArrayList; Loading Loading @@ -182,7 +182,7 @@ class FaceAuthenticationClient extends AuthenticationClient<ISession> implements } break; case BiometricConstants.BIOMETRIC_ERROR_RE_ENROLL: ReEnrollNotificationUtils.showReEnrollmentNotification(getContext()); BiometricNotificationUtils.showReEnrollmentNotification(getContext()); break; default: break; Loading