Loading src/com/android/settings/biometrics/BiometricEnrollBase.java +0 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { public static final String EXTRA_FINISHED_ENROLL_FACE = "finished_enrolling_face"; public static final String EXTRA_FINISHED_ENROLL_FINGERPRINT = "finished_enrolling_fingerprint"; public static final String EXTRA_LAUNCHED_POSTURE_GUIDANCE = "launched_posture_guidance"; public static final String KEY_CALIBRATOR_UUID = "calibrator_uuid"; /** * Used by the choose fingerprint wizard to indicate the wizard is Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +14 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.BiometricsEnrollEnrolling; import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.display.DisplayDensityUtils; Loading Loading @@ -197,6 +198,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { @NonNull private SfpsEnrollmentFeature mSfpsEnrollmentFeature = new EmptySfpsEnrollmentFeature(); @Nullable private UdfpsEnrollCalibrator mCalibrator; @VisibleForTesting protected boolean shouldShowLottie() { Loading Loading @@ -245,6 +248,12 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setContentView(layout); setDescriptionText(R.string.security_settings_udfps_enroll_start_message); if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, getIntent()); } } else if (mCanAssumeSfps) { mSfpsEnrollmentFeature = FeatureFactory.getFeatureFactory() .getFingerprintFeatureProvider().getSfpsEnrollmentFeature(); Loading Loading @@ -364,6 +373,11 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { super.onSaveInstanceState(outState); outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled); outState.putInt(KEY_STATE_PREVIOUS_ROTATION, mPreviousRotation); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { mCalibrator.onSaveInstanceState(outState); } } } private void restoreSavedState(Bundle savedInstanceState) { Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +23 −63 Original line number Diff line number Diff line Loading @@ -25,8 +25,6 @@ import android.content.res.Resources; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.view.OrientationEventListener; import android.view.Surface; Loading @@ -35,15 +33,12 @@ import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.BiometricEnrollSidecar; import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.fingerprint.UdfpsEnrollCalibrator.Result; import com.android.settings.biometrics.fingerprint.UdfpsEnrollCalibrator.Status; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockSettingsHelper; Loading @@ -56,7 +51,6 @@ import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; import java.util.List; import java.util.UUID; /** * Activity explaining the fingerprint sensor location for fingerprint enrollment. Loading Loading @@ -85,8 +79,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements private boolean mIsReverseDefaultRotation; @Nullable private UdfpsEnrollCalibrator mCalibrator; @Nullable private Observer<Status> mCalibratorStatusObserver; @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -172,13 +164,15 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mCanAssumeUdfps) { if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator( (savedInstanceState != null) ? savedInstanceState.getParcelable(KEY_CALIBRATOR_UUID, UUID.class) : getIntent().getSerializableExtra(KEY_CALIBRATOR_UUID, UUID.class) .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, getIntent()); if (mCalibrator != null) { mCalibrator.onFindSensorPage( getLifecycle(), getSupportFragmentManager(), this::enableUdfpsLottieAndNextButton ); if (mCalibrator == null || mCalibrator.getStatusLiveData().getValue() == Status.FINISHED) { } else { enableUdfpsLottieAndNextButton(); } } else { Loading @@ -193,14 +187,19 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements } private void enableUdfpsLottieAndNextButton() { mFooterBarMixin.setPrimaryButton( new FooterButton.Builder(this) if (isFinishing()) { return; } if (mFooterBarMixin.getPrimaryButton() == null) { mFooterBarMixin.setPrimaryButton(new FooterButton.Builder(this) .setText(R.string.security_settings_udfps_enroll_find_sensor_start_button) .setListener(this::onStartButtonClick) .setButtonType(FooterButton.ButtonType.NEXT) .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary) .build() ); } if (mIllustrationLottie != null) { mIllustrationLottie.setOnClickListener(this::onStartButtonClick); } Loading Loading @@ -285,7 +284,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements outState.putBoolean(SAVED_STATE_IS_NEXT_CLICKED, mNextClicked); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { outState.putSerializable(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); mCalibrator.onSaveInstanceState(outState); } } } Loading Loading @@ -317,39 +316,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mAnimation != null) { mAnimation.startAnimation(); } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { final Status current = mCalibrator.getStatusLiveData().getValue(); if (current == Status.PROCESSING) { if (mCalibratorStatusObserver == null) { mCalibratorStatusObserver = status -> { if (status == Status.GOT_RESULT) { onGotCalibrationResult(); } }; } mCalibrator.getStatusLiveData().observe(this, mCalibratorStatusObserver); } else if (current == Status.GOT_RESULT) { onGotCalibrationResult(); } } } } private void onGotCalibrationResult() { if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { mCalibrator.setFinished(); if (mCalibrator.getResult() == Result.NEED_CALIBRATION) { UdfpsEnrollCalibrationDialog.newInstance( mCalibrator.getCalibrationDialogTitleTextId(), mCalibrator.getCalibrationDialogMessageTextId(), mCalibrator.getCalibrationDialogDismissButtonTextId() ).show(getSupportFragmentManager(), "findsensor-calibration-dialog"); } } new Handler(Looper.getMainLooper()).post(this::enableUdfpsLottieAndNextButton); } } private void stopLookingForFingerprint() { Loading Loading @@ -407,12 +373,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mAnimation != null) { mAnimation.pauseAnimation(); } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null && mCalibratorStatusObserver != null) { mCalibrator.getStatusLiveData().removeObserver(mCalibratorStatusObserver); mCalibratorStatusObserver = null; } } } @Override Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java +3 −9 Original line number Diff line number Diff line Loading @@ -57,7 +57,6 @@ import com.google.android.setupdesign.span.LinkSpan; import com.google.android.setupdesign.util.DeviceHelper; import java.util.List; import java.util.UUID; public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { Loading Loading @@ -92,12 +91,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator( (savedInstanceState != null) ? savedInstanceState.getParcelable( KEY_CALIBRATOR_UUID, UUID.class) : null ); .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, null); } final ImageView iconFingerprint = findViewById(R.id.icon_fingerprint); Loading Loading @@ -175,7 +169,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { super.onSaveInstanceState(outState); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { outState.putSerializable(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); mCalibrator.onSaveInstanceState(outState); } } } Loading Loading @@ -391,7 +385,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { intent.putExtra(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); intent.putExtras(mCalibrator.getExtrasForNextIntent()); } } return intent; Loading src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java +14 −6 Original line number Diff line number Diff line Loading @@ -16,12 +16,15 @@ package com.android.settings.biometrics.fingerprint; import android.content.Context; import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature; import java.util.UUID; public interface FingerprintFeatureProvider { /** * Gets the feature implementation of SFPS enrollment. Loading @@ -29,11 +32,16 @@ public interface FingerprintFeatureProvider { */ SfpsEnrollmentFeature getSfpsEnrollmentFeature(); /** * Gets calibrator to calibrate the FPS before enrolling udfps * @param uuid unique id for passed between different activities * @return udfps calibrator * Gets calibrator for udfps pre-enroll * @param appContext application context * @param activitySavedInstanceState activity savedInstanceState * @param activityIntent activity intent */ @Nullable UdfpsEnrollCalibrator getUdfpsEnrollCalibrator(@Nullable UUID uuid); default UdfpsEnrollCalibrator getUdfpsEnrollCalibrator(@NonNull Context appContext, @Nullable Bundle activitySavedInstanceState, @Nullable Intent activityIntent) { return null; } } Loading
src/com/android/settings/biometrics/BiometricEnrollBase.java +0 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { public static final String EXTRA_FINISHED_ENROLL_FACE = "finished_enrolling_face"; public static final String EXTRA_FINISHED_ENROLL_FINGERPRINT = "finished_enrolling_fingerprint"; public static final String EXTRA_LAUNCHED_POSTURE_GUIDANCE = "launched_posture_guidance"; public static final String KEY_CALIBRATOR_UUID = "calibrator_uuid"; /** * Used by the choose fingerprint wizard to indicate the wizard is Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +14 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.BiometricsEnrollEnrolling; import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.display.DisplayDensityUtils; Loading Loading @@ -197,6 +198,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { @NonNull private SfpsEnrollmentFeature mSfpsEnrollmentFeature = new EmptySfpsEnrollmentFeature(); @Nullable private UdfpsEnrollCalibrator mCalibrator; @VisibleForTesting protected boolean shouldShowLottie() { Loading Loading @@ -245,6 +248,12 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { setContentView(layout); setDescriptionText(R.string.security_settings_udfps_enroll_start_message); if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, getIntent()); } } else if (mCanAssumeSfps) { mSfpsEnrollmentFeature = FeatureFactory.getFeatureFactory() .getFingerprintFeatureProvider().getSfpsEnrollmentFeature(); Loading Loading @@ -364,6 +373,11 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { super.onSaveInstanceState(outState); outState.putBoolean(KEY_STATE_CANCELED, mIsCanceled); outState.putInt(KEY_STATE_PREVIOUS_ROTATION, mPreviousRotation); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { mCalibrator.onSaveInstanceState(outState); } } } private void restoreSavedState(Bundle savedInstanceState) { Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +23 −63 Original line number Diff line number Diff line Loading @@ -25,8 +25,6 @@ import android.content.res.Resources; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.view.OrientationEventListener; import android.view.Surface; Loading @@ -35,15 +33,12 @@ import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.BiometricEnrollSidecar; import com.android.settings.biometrics.BiometricUtils; import com.android.settings.biometrics.fingerprint.UdfpsEnrollCalibrator.Result; import com.android.settings.biometrics.fingerprint.UdfpsEnrollCalibrator.Status; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockSettingsHelper; Loading @@ -56,7 +51,6 @@ import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; import java.util.List; import java.util.UUID; /** * Activity explaining the fingerprint sensor location for fingerprint enrollment. Loading Loading @@ -85,8 +79,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements private boolean mIsReverseDefaultRotation; @Nullable private UdfpsEnrollCalibrator mCalibrator; @Nullable private Observer<Status> mCalibratorStatusObserver; @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading @@ -172,13 +164,15 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mCanAssumeUdfps) { if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator( (savedInstanceState != null) ? savedInstanceState.getParcelable(KEY_CALIBRATOR_UUID, UUID.class) : getIntent().getSerializableExtra(KEY_CALIBRATOR_UUID, UUID.class) .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, getIntent()); if (mCalibrator != null) { mCalibrator.onFindSensorPage( getLifecycle(), getSupportFragmentManager(), this::enableUdfpsLottieAndNextButton ); if (mCalibrator == null || mCalibrator.getStatusLiveData().getValue() == Status.FINISHED) { } else { enableUdfpsLottieAndNextButton(); } } else { Loading @@ -193,14 +187,19 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements } private void enableUdfpsLottieAndNextButton() { mFooterBarMixin.setPrimaryButton( new FooterButton.Builder(this) if (isFinishing()) { return; } if (mFooterBarMixin.getPrimaryButton() == null) { mFooterBarMixin.setPrimaryButton(new FooterButton.Builder(this) .setText(R.string.security_settings_udfps_enroll_find_sensor_start_button) .setListener(this::onStartButtonClick) .setButtonType(FooterButton.ButtonType.NEXT) .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary) .build() ); } if (mIllustrationLottie != null) { mIllustrationLottie.setOnClickListener(this::onStartButtonClick); } Loading Loading @@ -285,7 +284,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements outState.putBoolean(SAVED_STATE_IS_NEXT_CLICKED, mNextClicked); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { outState.putSerializable(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); mCalibrator.onSaveInstanceState(outState); } } } Loading Loading @@ -317,39 +316,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mAnimation != null) { mAnimation.startAnimation(); } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { final Status current = mCalibrator.getStatusLiveData().getValue(); if (current == Status.PROCESSING) { if (mCalibratorStatusObserver == null) { mCalibratorStatusObserver = status -> { if (status == Status.GOT_RESULT) { onGotCalibrationResult(); } }; } mCalibrator.getStatusLiveData().observe(this, mCalibratorStatusObserver); } else if (current == Status.GOT_RESULT) { onGotCalibrationResult(); } } } } private void onGotCalibrationResult() { if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { mCalibrator.setFinished(); if (mCalibrator.getResult() == Result.NEED_CALIBRATION) { UdfpsEnrollCalibrationDialog.newInstance( mCalibrator.getCalibrationDialogTitleTextId(), mCalibrator.getCalibrationDialogMessageTextId(), mCalibrator.getCalibrationDialogDismissButtonTextId() ).show(getSupportFragmentManager(), "findsensor-calibration-dialog"); } } new Handler(Looper.getMainLooper()).post(this::enableUdfpsLottieAndNextButton); } } private void stopLookingForFingerprint() { Loading Loading @@ -407,12 +373,6 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements if (mAnimation != null) { mAnimation.pauseAnimation(); } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null && mCalibratorStatusObserver != null) { mCalibrator.getStatusLiveData().removeObserver(mCalibratorStatusObserver); mCalibratorStatusObserver = null; } } } @Override Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java +3 −9 Original line number Diff line number Diff line Loading @@ -57,7 +57,6 @@ import com.google.android.setupdesign.span.LinkSpan; import com.google.android.setupdesign.util.DeviceHelper; import java.util.List; import java.util.UUID; public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { Loading Loading @@ -92,12 +91,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { if (Flags.udfpsEnrollCalibration()) { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator( (savedInstanceState != null) ? savedInstanceState.getParcelable( KEY_CALIBRATOR_UUID, UUID.class) : null ); .getUdfpsEnrollCalibrator(getApplicationContext(), savedInstanceState, null); } final ImageView iconFingerprint = findViewById(R.id.icon_fingerprint); Loading Loading @@ -175,7 +169,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { super.onSaveInstanceState(outState); if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { outState.putSerializable(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); mCalibrator.onSaveInstanceState(outState); } } } Loading Loading @@ -391,7 +385,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { } if (Flags.udfpsEnrollCalibration()) { if (mCalibrator != null) { intent.putExtra(KEY_CALIBRATOR_UUID, mCalibrator.getUuid()); intent.putExtras(mCalibrator.getExtrasForNextIntent()); } } return intent; Loading
src/com/android/settings/biometrics/fingerprint/FingerprintFeatureProvider.java +14 −6 Original line number Diff line number Diff line Loading @@ -16,12 +16,15 @@ package com.android.settings.biometrics.fingerprint; import android.content.Context; import android.content.Intent; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature; import java.util.UUID; public interface FingerprintFeatureProvider { /** * Gets the feature implementation of SFPS enrollment. Loading @@ -29,11 +32,16 @@ public interface FingerprintFeatureProvider { */ SfpsEnrollmentFeature getSfpsEnrollmentFeature(); /** * Gets calibrator to calibrate the FPS before enrolling udfps * @param uuid unique id for passed between different activities * @return udfps calibrator * Gets calibrator for udfps pre-enroll * @param appContext application context * @param activitySavedInstanceState activity savedInstanceState * @param activityIntent activity intent */ @Nullable UdfpsEnrollCalibrator getUdfpsEnrollCalibrator(@Nullable UUID uuid); default UdfpsEnrollCalibrator getUdfpsEnrollCalibrator(@NonNull Context appContext, @Nullable Bundle activitySavedInstanceState, @Nullable Intent activityIntent) { return null; } }