Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d69192de authored by Grace Cheng's avatar Grace Cheng
Browse files

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
Change-Id: Ifa8788e78dce4c682ec4a9e2fe2c077418f8bddb
parent 1da1c7b1
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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(
        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++) {
+8 −0
Original line number Diff line number Diff line
@@ -4859,6 +4859,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 -->
+1 −1
Original line number Diff line number Diff line
@@ -2701,7 +2701,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" />
+1 −1
Original line number Diff line number Diff line
@@ -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"/>
 No newline at end of file