Implement SFPS guided enrollment for T6

Reduces perception of long enrollment process by introducing new enrollment layout and stages for SFPS. Also adds user feedback via new animated assets with dynamic colors, and all associated strings and a11y labels.

Test: Observe new guided enrollment process on T6
Test: make RunSettingsRoboTests ROBOTEST_FILTER=FingerprintEnrollEnrollingTest
Fixes: 232024488
Fixes: 233091341
Fixes: 241165082
Fixes: 242218240
Fixes: 243813773
Change-Id: Ifa8788e78dce4c682ec4a9e2fe2c077418f8bddb
This commit is contained in:
Grace Cheng
2022-08-01 19:54:42 +00:00
parent 0162aec6c8
commit 7957047dd8
4 changed files with 20 additions and 5 deletions

View File

@@ -1433,10 +1433,17 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
}
@NonNull
private static float[] createEnrollStageThresholds(@NonNull Context context) {
@RequiresPermission(USE_BIOMETRIC_INTERNAL)
private float[] createEnrollStageThresholds(@NonNull Context context) {
// TODO(b/200604947): Fetch this value from FingerprintService, rather than internal config
final String[] enrollStageThresholdStrings = context.getResources().getStringArray(
com.android.internal.R.array.config_udfps_enroll_stage_thresholds);
final String[] enrollStageThresholdStrings;
if (isPowerbuttonFps()) {
enrollStageThresholdStrings = context.getResources().getStringArray(
com.android.internal.R.array.config_sfps_enroll_stage_thresholds);
} else {
enrollStageThresholdStrings = context.getResources().getStringArray(
com.android.internal.R.array.config_udfps_enroll_stage_thresholds);
}
final float[] enrollStageThresholds = new float[enrollStageThresholdStrings.length];
for (int i = 0; i < enrollStageThresholds.length; i++) {

View File

@@ -4886,6 +4886,14 @@
<item>0.875</item>
</string-array>
<!-- When each intermediate SFPS enroll stage ends, as a fraction of total progress. -->
<string-array name="config_sfps_enroll_stage_thresholds" translatable="false">
<item>0</item> <!-- [-1 // <0/25] No animation 1x -->
<item>0.36</item> <!-- [0 to 8 // <9/25] Pad center 9x -->
<item>0.52</item> <!-- [9 to 12 // <13/25] Tip 4x -->
<item>0.76</item> <!-- [13 to 18 // <19/25] Left 6x -->
</string-array> <!-- [19 to 24 // <25/25] Right 6x -->
<!-- Messages that should not be shown to the user during face auth enrollment. This should be
used to hide messages that may be too chatty or messages that the user can't do much about.
Entries are defined in android.hardware.biometrics.face@1.0 types.hal -->

View File

@@ -2702,7 +2702,7 @@
<java-symbol type="integer" name="config_udfps_illumination_transition_ms" />
<java-symbol type="bool" name="config_is_powerbutton_fps" />
<java-symbol type="array" name="config_udfps_enroll_stage_thresholds" />
<java-symbol type="array" name="config_sfps_enroll_stage_thresholds" />
<java-symbol type="array" name="config_face_acquire_enroll_ignorelist" />
<java-symbol type="array" name="config_face_acquire_vendor_enroll_ignorelist" />
<java-symbol type="array" name="config_face_acquire_keyguard_ignorelist" />

View File

@@ -23,4 +23,4 @@
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/sfps_pulse"
android:contentDescription="@string/accessibility_fingerprint_label"/>
android:importantForAccessibility="no"/>