Adds null-check on finger animation in enrollment
Adds a null-check before setting the finger animation during SFPS
enrollment
Test: Change display size to highest setting (sets mShouldShowLottie to
false), and verify that user can enroll finger successfully
Fixes: 247044864
Change-Id: I3d7f0bd3078e3a4516f656a8ee897387b0ca15c6
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 64a08d3..90aad8c 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -757,11 +757,13 @@
public void onEnrollmentProgressChange(int steps, int remaining) {
updateProgress(true /* animate */);
final int percent = (int) (((float) (steps - remaining) / (float) steps) * 100);
- if (mCanAssumeSfps) {
- if (mIsAccessibilityEnabled) {
- CharSequence announcement = getString(
- R.string.security_settings_sfps_enroll_progress_a11y_message, percent);
- announceEnrollmentProgress(announcement);
+ if (mCanAssumeSfps && mIsAccessibilityEnabled) {
+ CharSequence announcement = getString(
+ R.string.security_settings_sfps_enroll_progress_a11y_message, percent);
+ announceEnrollmentProgress(announcement);
+ // mIllustrationLottie is only shown when current display density = default density,
+ // to prevent overlap with the settings header text.
+ if (mIllustrationLottie != null) {
mIllustrationLottie.setContentDescription(
getString(
R.string.security_settings_sfps_animation_a11y_label,
@@ -827,7 +829,7 @@
// Show nothing for subtitle when getting an error message.
setDescriptionText("");
if (mCanAssumeSfps) {
- applySfpsErrorDynamicColors(getApplicationContext(), mIllustrationLottie, true);
+ applySfpsErrorDynamicColors(getApplicationContext(), true);
}
} else {
mErrorText.setText(error);
@@ -857,7 +859,7 @@
private void clearError() {
if (mCanAssumeSfps) {
- applySfpsErrorDynamicColors(getApplicationContext(), mIllustrationLottie, false);
+ applySfpsErrorDynamicColors(getApplicationContext(), false);
}
if ((!(mCanAssumeUdfps || mCanAssumeSfps)) && mErrorText.getVisibility() == View.VISIBLE) {
mErrorText.animate()
@@ -875,10 +877,11 @@
* Applies dynamic colors corresponding to showing or clearing errors on the progress bar
* and finger lottie for SFPS
*/
- private void applySfpsErrorDynamicColors(Context context, LottieAnimationView composition,
- boolean isError) {
+ private void applySfpsErrorDynamicColors(Context context, boolean isError) {
applyProgressBarDynamicColor(context, isError);
- applyLottieDynamicColor(context, composition, isError);
+ if (mIllustrationLottie != null) {
+ applyLottieDynamicColor(context, isError);
+ }
}
private void applyProgressBarDynamicColor(Context context, boolean isError) {
@@ -894,19 +897,16 @@
}
}
- private void applyLottieDynamicColor(Context context, LottieAnimationView composition,
- boolean isError) {
- if (composition != null) {
- int error_color = context.getColor(R.color.sfps_enrollment_fp_error_color);
- int fp_captured_color = context.getColor(R.color.sfps_enrollment_fp_captured_color);
- int color = isError ? error_color : fp_captured_color;
- composition.addValueCallback(
- new KeyPath(".blue100", "**"),
- LottieProperty.COLOR_FILTER,
- frameInfo -> new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)
- );
- composition.invalidate();
- }
+ private void applyLottieDynamicColor(Context context, boolean isError) {
+ int error_color = context.getColor(R.color.sfps_enrollment_fp_error_color);
+ int fp_captured_color = context.getColor(R.color.sfps_enrollment_fp_captured_color);
+ int color = isError ? error_color : fp_captured_color;
+ mIllustrationLottie.addValueCallback(
+ new KeyPath(".blue100", "**"),
+ LottieProperty.COLOR_FILTER,
+ frameInfo -> new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)
+ );
+ mIllustrationLottie.invalidate();
}
private void listenOrientationEvent() {
@@ -1008,8 +1008,10 @@
}
private void updateOrientation(int orientation) {
- if (mCanAssumeSfps && mShouldShowLottie) {
- mIllustrationLottie = findViewById(R.id.illustration_lottie);
+ if (mCanAssumeSfps) {
+ if (mShouldShowLottie) {
+ mIllustrationLottie = findViewById(R.id.illustration_lottie);
+ }
} else {
switch(orientation) {
case Configuration.ORIENTATION_LANDSCAPE: {