Loading src/com/android/settings/biometrics/BiometricEnrollSidecar.java +50 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,14 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { * @param isAcquiredGood whether the fingerprint image was good. */ default void onAcquired(boolean isAcquiredGood) { } /** * Called when a pointer down event has occurred. */ default void onPointerDown(int sensorId) { } /** * Called when a pointer up event has occurred. */ default void onPointerUp(int sensorId) { } } private int mEnrollmentSteps = -1; Loading Loading @@ -118,6 +126,32 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { } } private class QueuedPointerDown extends QueuedEvent { private final int sensorId; public QueuedPointerDown(int sensorId) { this.sensorId = sensorId; } @Override public void send(Listener listener) { listener.onPointerDown(sensorId); } } private class QueuedPointerUp extends QueuedEvent { private final int sensorId; public QueuedPointerUp(int sensorId) { this.sensorId = sensorId; } @Override public void send(Listener listener) { listener.onPointerUp(sensorId); } } private final Runnable mTimeoutRunnable = new Runnable() { @Override public void run() { Loading Loading @@ -215,6 +249,22 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { } } protected void onPointerDown(int sensorId) { if (mListener != null) { mListener.onPointerDown(sensorId); } else { mQueuedEvents.add(new QueuedPointerDown(sensorId)); } } protected void onPointerUp(int sensorId) { if (mListener != null) { mListener.onPointerUp(sensorId); } else { mQueuedEvents.add(new QueuedPointerUp(sensorId)); } } public void setListener(Listener listener) { mListener = listener; if (mListener != null) { Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +44 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieCompositionFactory; import com.airbnb.lottie.LottieProperty; import com.airbnb.lottie.model.KeyPath; import com.google.android.setupcompat.template.FooterActionButton; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -101,6 +102,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { private static final String TAG = "FingerprintEnrollEnrolling"; static final String TAG_SIDECAR = "sidecar"; static final String TAG_UDFPS_HELPER = "udfps_helper"; static final String KEY_STATE_CANCELED = "is_canceled"; static final String KEY_STATE_PREVIOUS_ROTATION = "previous_rotation"; Loading Loading @@ -353,6 +355,24 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { .build() ); if (FeatureFlagUtils.isEnabled(getApplicationContext(), FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS)) { // Remove the space view and make the width of footer button container WRAP_CONTENT // to avoid hiding the udfps view progress bar bottom. final LinearLayout buttonContainer = mFooterBarMixin.getButtonContainer(); View spaceView = null; for (int i = 0; i < buttonContainer.getChildCount(); i++) { if (!(buttonContainer.getChildAt(i) instanceof FooterActionButton)) { spaceView = buttonContainer.getChildAt(i); break; } } if (spaceView != null) { spaceView.setVisibility(View.GONE); buttonContainer.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; } } final LayerDrawable fingerprintDrawable = mProgressBar != null ? (LayerDrawable) mProgressBar.getBackground() : null; if (fingerprintDrawable != null) { Loading Loading @@ -867,6 +887,20 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } @Override public void onPointerDown(int sensorId) { if (mUdfpsEnrollHelper != null) { mUdfpsEnrollHelper.onPointerDown(sensorId); } } @Override public void onPointerUp(int sensorId) { if (mUdfpsEnrollHelper != null) { mUdfpsEnrollHelper.onPointerUp(sensorId); } } private void updateProgress(boolean animate) { if (mSidecar == null || !mSidecar.isEnrolling()) { Log.d(TAG, "Enrollment not started yet"); Loading Loading @@ -1195,7 +1229,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { udfpsProps.sensorType == FingerprintSensorProperties.TYPE_UDFPS_OPTICAL); udfpsEnrollView.setOverlayParams(params); mUdfpsEnrollHelper = new UdfpsEnrollHelper(getApplicationContext(), mFingerprintManager); mUdfpsEnrollHelper = (UdfpsEnrollHelper) getSupportFragmentManager().findFragmentByTag( FingerprintEnrollEnrolling.TAG_UDFPS_HELPER); if (mUdfpsEnrollHelper == null) { mUdfpsEnrollHelper = new UdfpsEnrollHelper(getApplicationContext(), mFingerprintManager); getSupportFragmentManager().beginTransaction() .add(mUdfpsEnrollHelper, FingerprintEnrollEnrolling.TAG_UDFPS_HELPER) .commitAllowingStateLoss(); } udfpsEnrollView.setEnrollHelper(mUdfpsEnrollHelper); return udfpsEnrollView; Loading src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java +10 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,16 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar { public void onEnrollmentError(int errMsgId, CharSequence errString) { FingerprintEnrollSidecar.super.onEnrollmentError(errMsgId, errString); } @Override public void onPointerDown(int sensorId) { FingerprintEnrollSidecar.super.onPointerDown(sensorId); } @Override public void onPointerUp(int sensorId) { FingerprintEnrollSidecar.super.onPointerUp(sensorId); } }; @Override Loading src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java +10 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,16 @@ public class FingerprintUpdater { public void onAcquired(boolean isAcquiredGood) { mCallback.onAcquired(isAcquiredGood); } @Override public void onPointerDown(int sensorId) { mCallback.onPointerDown(sensorId); } @Override public void onPointerUp(int sensorId) { mCallback.onPointerUp(sensorId); } } /** Loading src/com/android/settings/biometrics/fingerprint/UdfpsEnrollHelper.java +32 −2 Original line number Diff line number Diff line Loading @@ -22,19 +22,22 @@ import android.content.Context; import android.graphics.PointF; import android.hardware.fingerprint.FingerprintManager; import android.os.Build; import android.os.Bundle; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.TypedValue; import android.view.accessibility.AccessibilityManager; import com.android.settings.core.InstrumentedFragment; import java.util.ArrayList; import java.util.List; /** * Helps keep track of enrollment state and animates the progress bar accordingly. */ public class UdfpsEnrollHelper { public class UdfpsEnrollHelper extends InstrumentedFragment { private static final String TAG = "UdfpsEnrollHelper"; private static final String SCALE_OVERRIDE = Loading @@ -50,6 +53,10 @@ public class UdfpsEnrollHelper { void onEnrollmentHelp(int remaining, int totalSteps); void onAcquired(boolean animateIfLastStepGood); void onPointerDown(int sensorId); void onPointerUp(int sensorId); } @NonNull Loading Loading @@ -124,6 +131,17 @@ public class UdfpsEnrollHelper { } } @Override public int getMetricsCategory() { return 0; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } void onEnrollmentProgress(int totalSteps, int remaining) { if (mTotalSteps == -1) { mTotalSteps = totalSteps; Loading @@ -144,7 +162,7 @@ public class UdfpsEnrollHelper { } void onEnrollmentHelp() { if (mListener != null && mTotalSteps != -1) { if (mListener != null) { mListener.onEnrollmentHelp(mRemainingSteps, mTotalSteps); } } Loading @@ -155,6 +173,18 @@ public class UdfpsEnrollHelper { } } void onPointerDown(int sensorId) { if (mListener != null) { mListener.onPointerDown(sensorId); } } void onPointerUp(int sensorId) { if (mListener != null) { mListener.onPointerUp(sensorId); } } void setListener(UdfpsEnrollHelper.Listener listener) { mListener = listener; Loading Loading
src/com/android/settings/biometrics/BiometricEnrollSidecar.java +50 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,14 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { * @param isAcquiredGood whether the fingerprint image was good. */ default void onAcquired(boolean isAcquiredGood) { } /** * Called when a pointer down event has occurred. */ default void onPointerDown(int sensorId) { } /** * Called when a pointer up event has occurred. */ default void onPointerUp(int sensorId) { } } private int mEnrollmentSteps = -1; Loading Loading @@ -118,6 +126,32 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { } } private class QueuedPointerDown extends QueuedEvent { private final int sensorId; public QueuedPointerDown(int sensorId) { this.sensorId = sensorId; } @Override public void send(Listener listener) { listener.onPointerDown(sensorId); } } private class QueuedPointerUp extends QueuedEvent { private final int sensorId; public QueuedPointerUp(int sensorId) { this.sensorId = sensorId; } @Override public void send(Listener listener) { listener.onPointerUp(sensorId); } } private final Runnable mTimeoutRunnable = new Runnable() { @Override public void run() { Loading Loading @@ -215,6 +249,22 @@ public abstract class BiometricEnrollSidecar extends InstrumentedFragment { } } protected void onPointerDown(int sensorId) { if (mListener != null) { mListener.onPointerDown(sensorId); } else { mQueuedEvents.add(new QueuedPointerDown(sensorId)); } } protected void onPointerUp(int sensorId) { if (mListener != null) { mListener.onPointerUp(sensorId); } else { mQueuedEvents.add(new QueuedPointerUp(sensorId)); } } public void setListener(Listener listener) { mListener = listener; if (mListener != null) { Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +44 −1 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieCompositionFactory; import com.airbnb.lottie.LottieProperty; import com.airbnb.lottie.model.KeyPath; import com.google.android.setupcompat.template.FooterActionButton; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -101,6 +102,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { private static final String TAG = "FingerprintEnrollEnrolling"; static final String TAG_SIDECAR = "sidecar"; static final String TAG_UDFPS_HELPER = "udfps_helper"; static final String KEY_STATE_CANCELED = "is_canceled"; static final String KEY_STATE_PREVIOUS_ROTATION = "previous_rotation"; Loading Loading @@ -353,6 +355,24 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { .build() ); if (FeatureFlagUtils.isEnabled(getApplicationContext(), FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS)) { // Remove the space view and make the width of footer button container WRAP_CONTENT // to avoid hiding the udfps view progress bar bottom. final LinearLayout buttonContainer = mFooterBarMixin.getButtonContainer(); View spaceView = null; for (int i = 0; i < buttonContainer.getChildCount(); i++) { if (!(buttonContainer.getChildAt(i) instanceof FooterActionButton)) { spaceView = buttonContainer.getChildAt(i); break; } } if (spaceView != null) { spaceView.setVisibility(View.GONE); buttonContainer.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; } } final LayerDrawable fingerprintDrawable = mProgressBar != null ? (LayerDrawable) mProgressBar.getBackground() : null; if (fingerprintDrawable != null) { Loading Loading @@ -867,6 +887,20 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { } } @Override public void onPointerDown(int sensorId) { if (mUdfpsEnrollHelper != null) { mUdfpsEnrollHelper.onPointerDown(sensorId); } } @Override public void onPointerUp(int sensorId) { if (mUdfpsEnrollHelper != null) { mUdfpsEnrollHelper.onPointerUp(sensorId); } } private void updateProgress(boolean animate) { if (mSidecar == null || !mSidecar.isEnrolling()) { Log.d(TAG, "Enrollment not started yet"); Loading Loading @@ -1195,7 +1229,16 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { udfpsProps.sensorType == FingerprintSensorProperties.TYPE_UDFPS_OPTICAL); udfpsEnrollView.setOverlayParams(params); mUdfpsEnrollHelper = new UdfpsEnrollHelper(getApplicationContext(), mFingerprintManager); mUdfpsEnrollHelper = (UdfpsEnrollHelper) getSupportFragmentManager().findFragmentByTag( FingerprintEnrollEnrolling.TAG_UDFPS_HELPER); if (mUdfpsEnrollHelper == null) { mUdfpsEnrollHelper = new UdfpsEnrollHelper(getApplicationContext(), mFingerprintManager); getSupportFragmentManager().beginTransaction() .add(mUdfpsEnrollHelper, FingerprintEnrollEnrolling.TAG_UDFPS_HELPER) .commitAllowingStateLoss(); } udfpsEnrollView.setEnrollHelper(mUdfpsEnrollHelper); return udfpsEnrollView; Loading
src/com/android/settings/biometrics/fingerprint/FingerprintEnrollSidecar.java +10 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,16 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar { public void onEnrollmentError(int errMsgId, CharSequence errString) { FingerprintEnrollSidecar.super.onEnrollmentError(errMsgId, errString); } @Override public void onPointerDown(int sensorId) { FingerprintEnrollSidecar.super.onPointerDown(sensorId); } @Override public void onPointerUp(int sensorId) { FingerprintEnrollSidecar.super.onPointerUp(sensorId); } }; @Override Loading
src/com/android/settings/biometrics/fingerprint/FingerprintUpdater.java +10 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,16 @@ public class FingerprintUpdater { public void onAcquired(boolean isAcquiredGood) { mCallback.onAcquired(isAcquiredGood); } @Override public void onPointerDown(int sensorId) { mCallback.onPointerDown(sensorId); } @Override public void onPointerUp(int sensorId) { mCallback.onPointerUp(sensorId); } } /** Loading
src/com/android/settings/biometrics/fingerprint/UdfpsEnrollHelper.java +32 −2 Original line number Diff line number Diff line Loading @@ -22,19 +22,22 @@ import android.content.Context; import android.graphics.PointF; import android.hardware.fingerprint.FingerprintManager; import android.os.Build; import android.os.Bundle; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.util.TypedValue; import android.view.accessibility.AccessibilityManager; import com.android.settings.core.InstrumentedFragment; import java.util.ArrayList; import java.util.List; /** * Helps keep track of enrollment state and animates the progress bar accordingly. */ public class UdfpsEnrollHelper { public class UdfpsEnrollHelper extends InstrumentedFragment { private static final String TAG = "UdfpsEnrollHelper"; private static final String SCALE_OVERRIDE = Loading @@ -50,6 +53,10 @@ public class UdfpsEnrollHelper { void onEnrollmentHelp(int remaining, int totalSteps); void onAcquired(boolean animateIfLastStepGood); void onPointerDown(int sensorId); void onPointerUp(int sensorId); } @NonNull Loading Loading @@ -124,6 +131,17 @@ public class UdfpsEnrollHelper { } } @Override public int getMetricsCategory() { return 0; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); } void onEnrollmentProgress(int totalSteps, int remaining) { if (mTotalSteps == -1) { mTotalSteps = totalSteps; Loading @@ -144,7 +162,7 @@ public class UdfpsEnrollHelper { } void onEnrollmentHelp() { if (mListener != null && mTotalSteps != -1) { if (mListener != null) { mListener.onEnrollmentHelp(mRemainingSteps, mTotalSteps); } } Loading @@ -155,6 +173,18 @@ public class UdfpsEnrollHelper { } } void onPointerDown(int sensorId) { if (mListener != null) { mListener.onPointerDown(sensorId); } } void onPointerUp(int sensorId) { if (mListener != null) { mListener.onPointerUp(sensorId); } } void setListener(UdfpsEnrollHelper.Listener listener) { mListener = listener; Loading