From abc1d4c25f53b8cd09b9ce7d751fae683cd05695 Mon Sep 17 00:00:00 2001 From: Joshua Mccloskey Date: Tue, 22 Mar 2022 04:58:03 +0000 Subject: [PATCH] Removed haptic from udfps enrollment Test: Verified standard udfps enrollment no longer has any haptics. Test: Verified accessibility enrollment does have haptics. Fixes: 222593183 Change-Id: Ic45047931cf4bb239cef5f87b4b865a5d0c0f800 --- packages/SystemUI/res/values/colors.xml | 3 ++- .../biometrics/UdfpsEnrollProgressBarDrawable.java | 9 ++++++++- .../biometrics/sensors/AcquisitionClient.java | 4 ++-- .../fingerprint/aidl/FingerprintEnrollClient.java | 14 +++++++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 49fc8482712ae..50fdc7bb61bd3 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -138,7 +138,8 @@ #7DA7F1 #475670 #7DA7F1 - #ffEE675C + #607DA7F1 + #ffEE675C #1f000000 diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java index 631a461b0627a..f3a603f832faa 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java @@ -22,6 +22,7 @@ import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.drawable.Drawable; +import android.view.accessibility.AccessibilityManager; import android.view.animation.Interpolator; import android.view.animation.OvershootInterpolator; @@ -71,7 +72,13 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { public UdfpsEnrollProgressBarDrawable(@NonNull Context context) { mStrokeWidthPx = Utils.dpToPixels(context, STROKE_WIDTH_DP); mProgressColor = context.getColor(R.color.udfps_enroll_progress); - mHelpColor = context.getColor(R.color.udfps_enroll_progress_help); + final AccessibilityManager am = context.getSystemService(AccessibilityManager.class); + final boolean isAccessbilityEnabled = am.isTouchExplorationEnabled(); + if (!isAccessbilityEnabled) { + mHelpColor = context.getColor(R.color.udfps_enroll_progress_help); + } else { + mHelpColor = context.getColor(R.color.udfps_enroll_progress_help_with_talkback); + } mCheckmarkDrawable = context.getDrawable(R.drawable.udfps_enroll_checkmark); mCheckmarkDrawable.mutate(); mCheckmarkInterpolator = new OvershootInterpolator(); diff --git a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java index 0f0032b72b0ae..1d90954c44f61 100644 --- a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java @@ -198,7 +198,7 @@ public abstract class AcquisitionClient extends HalClientMonitor implement protected final void vibrateSuccess() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); - if (vibrator != null) { + if (vibrator != null && mShouldVibrate) { vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), SUCCESS_VIBRATION_EFFECT, @@ -209,7 +209,7 @@ public abstract class AcquisitionClient extends HalClientMonitor implement protected final void vibrateError() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); - if (vibrator != null) { + if (vibrator != null && mShouldVibrate) { vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), ERROR_VIBRATION_EFFECT, diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java index bb1fed0bfecc7..f23659c94e49b 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java @@ -34,6 +34,7 @@ import android.hardware.keymaster.HardwareAuthToken; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; +import android.view.accessibility.AccessibilityManager; import com.android.server.biometrics.HardwareAuthTokenUtils; import com.android.server.biometrics.log.BiometricContext; @@ -66,6 +67,13 @@ class FingerprintEnrollClient extends EnrollClient implements Udfps private final int mMaxTemplatesPerUser; private boolean mIsPointerDown; + private static boolean shouldVibrateFor(Context context, + FingerprintSensorPropertiesInternal sensorProps) { + final AccessibilityManager am = context.getSystemService(AccessibilityManager.class); + final boolean isAccessbilityEnabled = am.isTouchExplorationEnabled(); + return !sensorProps.isAnyUdfpsType() || isAccessbilityEnabled; + } + FingerprintEnrollClient(@NonNull Context context, @NonNull Supplier lazyDaemon, @NonNull IBinder token, long requestId, @NonNull ClientMonitorCallbackConverter listener, int userId, @@ -78,8 +86,8 @@ class FingerprintEnrollClient extends EnrollClient implements Udfps int maxTemplatesPerUser, @FingerprintManager.EnrollReason int enrollReason) { // UDFPS haptics occur when an image is acquired (instead of when the result is known) super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils, - 0 /* timeoutSec */, sensorId, - !sensorProps.isAnyUdfpsType() /* shouldVibrate */, logger, biometricContext); + 0 /* timeoutSec */, sensorId, shouldVibrateFor(context, sensorProps), logger, + biometricContext); setRequestId(requestId); mSensorProps = sensorProps; mSensorOverlays = new SensorOverlays(udfpsOverlayController, sidefpsController); @@ -119,7 +127,7 @@ class FingerprintEnrollClient extends EnrollClient implements Udfps // For UDFPS, notify SysUI that the illumination can be turned off. // See AcquiredInfo#GOOD and AcquiredInfo#RETRYING_CAPTURE if (mSensorProps.isAnyUdfpsType()) { - if (acquiredGood) { + if (acquiredGood && mShouldVibrate) { vibrateSuccess(); } mSensorOverlays.ifUdfps(