Add pad animation for STAGE_CENTER & STAGE_GUIDED
1. STAGE_CENTER reference - String : security_settings_sfps_enroll_finger_center_title - raw : udfps_center_hint_lottie 2. STAGE_GUIDED - String : security_settings_fingerprint_enroll_repeat_message - raw : udfps_center_hint_lottie (Same with STAGE_CENTER) Bug: 228100413 Test: manually verified on Settings > Security > Face & Fingerprint Unlock > Fingerprint Unlock > Touch & Hold fingerprint sensor page Test: make RunSettingsRoboTests ROBOTEST_FILTER= "com.android.settings.biometrics.fingerprint .FingerprintEnrollEnrollingTest" Change-Id: Ic308b9bffee32b36f7280cf263c67adc3ca31c66
This commit is contained in:
1
res/raw/udfps_center_hint_lottie.json
Normal file
1
res/raw/udfps_center_hint_lottie.json
Normal file
File diff suppressed because one or more lines are too long
@@ -176,6 +176,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
private boolean mHaveShownUdfpsTipLottie;
|
private boolean mHaveShownUdfpsTipLottie;
|
||||||
private boolean mHaveShownUdfpsLeftEdgeLottie;
|
private boolean mHaveShownUdfpsLeftEdgeLottie;
|
||||||
private boolean mHaveShownUdfpsRightEdgeLottie;
|
private boolean mHaveShownUdfpsRightEdgeLottie;
|
||||||
|
private boolean mHaveShownUdfpsCenterLottie;
|
||||||
|
private boolean mHaveShownUdfpsGuideLottie;
|
||||||
private boolean mHaveShownSfpsNoAnimationLottie;
|
private boolean mHaveShownSfpsNoAnimationLottie;
|
||||||
private boolean mHaveShownSfpsCenterLottie;
|
private boolean mHaveShownSfpsCenterLottie;
|
||||||
private boolean mHaveShownSfpsTipLottie;
|
private boolean mHaveShownSfpsTipLottie;
|
||||||
@@ -503,18 +505,31 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
switch (getCurrentStage()) {
|
switch (getCurrentStage()) {
|
||||||
case STAGE_CENTER:
|
case STAGE_CENTER:
|
||||||
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
if (mIsAccessibilityEnabled || mIllustrationLottie == null) {
|
||||||
|
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
||||||
|
} else if (!mHaveShownUdfpsCenterLottie && mIllustrationLottie != null) {
|
||||||
|
mHaveShownUdfpsCenterLottie = true;
|
||||||
|
// Note: Update string reference when differentiate in between udfps & sfps
|
||||||
|
mIllustrationLottie.setContentDescription(
|
||||||
|
getString(R.string.security_settings_sfps_enroll_finger_center_title)
|
||||||
|
);
|
||||||
|
configureEnrollmentStage("", R.raw.udfps_center_hint_lottie);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STAGE_GUIDED:
|
case STAGE_GUIDED:
|
||||||
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
||||||
if (mIsAccessibilityEnabled) {
|
if (mIsAccessibilityEnabled || mIllustrationLottie == null) {
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_a11y_message);
|
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_a11y_message);
|
||||||
} else {
|
} else if (!mHaveShownUdfpsGuideLottie && mIllustrationLottie != null) {
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_message);
|
mHaveShownUdfpsGuideLottie = true;
|
||||||
|
mIllustrationLottie.setContentDescription(
|
||||||
|
getString(R.string.security_settings_fingerprint_enroll_repeat_message)
|
||||||
|
);
|
||||||
|
// TODO(b/228100413) Could customize guided lottie animation
|
||||||
|
configureEnrollmentStage("", R.raw.udfps_center_hint_lottie);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STAGE_FINGERTIP:
|
case STAGE_FINGERTIP:
|
||||||
setHeaderText(R.string.security_settings_udfps_enroll_fingertip_title);
|
setHeaderText(R.string.security_settings_udfps_enroll_fingertip_title);
|
||||||
if (!mHaveShownUdfpsTipLottie && mIllustrationLottie != null) {
|
if (!mHaveShownUdfpsTipLottie && mIllustrationLottie != null) {
|
||||||
@@ -525,7 +540,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
configureEnrollmentStage("", R.raw.udfps_tip_hint_lottie);
|
configureEnrollmentStage("", R.raw.udfps_tip_hint_lottie);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STAGE_LEFT_EDGE:
|
case STAGE_LEFT_EDGE:
|
||||||
setHeaderText(R.string.security_settings_udfps_enroll_left_edge_title);
|
setHeaderText(R.string.security_settings_udfps_enroll_left_edge_title);
|
||||||
if (!mHaveShownUdfpsLeftEdgeLottie && mIllustrationLottie != null) {
|
if (!mHaveShownUdfpsLeftEdgeLottie && mIllustrationLottie != null) {
|
||||||
|
@@ -31,13 +31,12 @@ import static org.mockito.Mockito.anyInt;
|
|||||||
import static org.mockito.Mockito.anyString;
|
import static org.mockito.Mockito.anyString;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.eq;
|
import static org.mockito.Mockito.eq;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
@@ -187,6 +186,38 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
verify(mActivity, never()).onCancelEnrollment(anyInt());
|
verify(mActivity, never()).onCancelEnrollment(anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fingerprintUdfpsOverlayEnrollment_PlaysAllAnimationsAssetsCorrectly() {
|
||||||
|
initializeActivityFor(TYPE_UDFPS_OPTICAL);
|
||||||
|
|
||||||
|
int totalEnrollSteps = 25;
|
||||||
|
int initStageSteps = -1, initStageRemaining = 0;
|
||||||
|
|
||||||
|
when(mSidecar.getEnrollmentSteps()).thenReturn(initStageSteps);
|
||||||
|
when(mSidecar.getEnrollmentRemaining()).thenReturn(initStageRemaining);
|
||||||
|
|
||||||
|
mActivity.onEnrollmentProgressChange(initStageSteps, initStageRemaining);
|
||||||
|
|
||||||
|
when(mSidecar.getEnrollmentSteps()).thenReturn(totalEnrollSteps);
|
||||||
|
|
||||||
|
for (int remaining = totalEnrollSteps; remaining > 0; remaining--) {
|
||||||
|
when(mSidecar.getEnrollmentRemaining()).thenReturn(remaining);
|
||||||
|
mActivity.onEnrollmentProgressChange(totalEnrollSteps, remaining);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Integer> expectedLottieAssetOrder = List.of(
|
||||||
|
R.raw.udfps_center_hint_lottie,
|
||||||
|
R.raw.udfps_tip_hint_lottie,
|
||||||
|
R.raw.udfps_left_edge_hint_lottie,
|
||||||
|
R.raw.udfps_right_edge_hint_lottie
|
||||||
|
);
|
||||||
|
|
||||||
|
ArgumentCaptor<Integer> lottieAssetCaptor = ArgumentCaptor.forClass(Integer.class);
|
||||||
|
verify(mIllustrationLottie, times(4)).setAnimation(lottieAssetCaptor.capture());
|
||||||
|
List<Integer> observedLottieAssetOrder = lottieAssetCaptor.getAllValues();
|
||||||
|
assertThat(observedLottieAssetOrder).isEqualTo(expectedLottieAssetOrder);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() {
|
public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() {
|
||||||
initializeActivityFor(TYPE_POWER_BUTTON);
|
initializeActivityFor(TYPE_POWER_BUTTON);
|
||||||
@@ -354,4 +385,4 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
return mContext;
|
return mContext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user