Loading packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java +0 −19 Original line number Diff line number Diff line Loading @@ -21,11 +21,8 @@ import android.annotation.Nullable; import android.content.Context; import android.graphics.PointF; import android.hardware.fingerprint.IUdfpsOverlayController; import android.media.AudioAttributes; import android.os.Build; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.Vibrator; import android.provider.Settings; import android.util.Log; import android.util.TypedValue; Loading @@ -50,12 +47,6 @@ public class UdfpsEnrollHelper { // Enroll with two center touches before going to guided enrollment private static final int NUM_CENTER_TOUCHES = 2; private static final AudioAttributes VIBRATION_SONFICATION_ATTRIBUTES = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build(); interface Listener { void onEnrollmentProgress(int remaining, int totalSteps); void onLastStepAcquired(); Loading @@ -66,9 +57,6 @@ public class UdfpsEnrollHelper { private final int mEnrollReason; private final boolean mAccessibilityEnabled; @NonNull private final List<PointF> mGuidedEnrollmentPoints; @NonNull private final Vibrator mVibrator; @NonNull private final VibrationEffect mEffectClick = VibrationEffect.get(VibrationEffect.EFFECT_CLICK); private int mTotalSteps = -1; private int mRemainingSteps = -1; Loading @@ -82,7 +70,6 @@ public class UdfpsEnrollHelper { public UdfpsEnrollHelper(@NonNull Context context, int reason) { mContext = context; mEnrollReason = reason; mVibrator = context.getSystemService(Vibrator.class); final AccessibilityManager am = context.getSystemService(AccessibilityManager.class); mAccessibilityEnabled = am.isEnabled(); Loading Loading @@ -141,7 +128,6 @@ public class UdfpsEnrollHelper { if (remaining != mRemainingSteps) { mLocationsEnrolled++; vibrateSuccess(); } mRemainingSteps = remaining; Loading Loading @@ -202,11 +188,6 @@ public class UdfpsEnrollHelper { if (mRemainingSteps <= 2 && mRemainingSteps >= 0) { mListener.onLastStepAcquired(); vibrateSuccess(); } } private void vibrateSuccess() { mVibrator.vibrate(mEffectClick, VIBRATION_SONFICATION_ATTRIBUTES); } } services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +16 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.biometrics.BiometricConstants; import android.media.AudioAttributes; import android.os.IBinder; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.VibrationEffect; Loading Loading @@ -49,6 +50,8 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK); private final PowerManager mPowerManager; // If haptics should occur when auth result (success/reject) is known protected final boolean mShouldVibrate; private boolean mShouldSendErrorToClient = true; private boolean mAlreadyCancelled; Loading @@ -59,11 +62,12 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement public AcquisitionClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull String owner, int cookie, int sensorId, int statsModality, int statsAction, int statsClient) { @NonNull String owner, int cookie, int sensorId, boolean shouldVibrate, int statsModality, int statsAction, int statsClient) { super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality, statsAction, statsClient); mPowerManager = context.getSystemService(PowerManager.class); mShouldVibrate = shouldVibrate; } @Override Loading Loading @@ -191,14 +195,22 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement protected final void vibrateSuccess() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); if (vibrator != null) { vibrator.vibrate(SUCCESS_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES); vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), SUCCESS_VIBRATION_EFFECT, getClass().getSimpleName() + "::success", VIBRATION_SONIFICATION_ATTRIBUTES); } } protected final void vibrateError() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); if (vibrator != null) { vibrator.vibrate(ERROR_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES); vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), ERROR_VIBRATION_EFFECT, getClass().getSimpleName() + "::error", VIBRATION_SONIFICATION_ATTRIBUTES); } } } services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +6 −4 Original line number Diff line number Diff line Loading @@ -68,9 +68,11 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> int targetUserId, long operationId, boolean restricted, @NonNull String owner, int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric, int statsModality, int statsClient, @Nullable TaskStackListener taskStackListener, @NonNull LockoutTracker lockoutTracker, boolean allowBackgroundAuthentication) { @NonNull LockoutTracker lockoutTracker, boolean allowBackgroundAuthentication, boolean shouldVibrate) { super(context, lazyDaemon, token, listener, targetUserId, owner, cookie, sensorId, statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient); shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient); mIsStrongBiometric = isStrongBiometric; mOperationId = operationId; mRequireConfirmation = requireConfirmation; Loading Loading @@ -204,7 +206,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> mAlreadyDone = true; if (listener != null) { if (listener != null && mShouldVibrate) { vibrateSuccess(); } Loading Loading @@ -250,7 +252,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> Slog.w(TAG, "Client not listening"); } } else { if (listener != null) { if (listener != null && mShouldVibrate) { vibrateError(); } Loading services/core/java/com/android/server/biometrics/sensors/EnrollClient.java +2 −5 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> { protected final byte[] mHardwareAuthToken; protected final int mTimeoutSec; protected final BiometricUtils mBiometricUtils; private final boolean mShouldVibrate; private long mEnrollmentStartTimeMs; Loading @@ -50,15 +49,13 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> { public EnrollClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils, int timeoutSec, int statsModality, int sensorId, boolean shouldVibrate) { int timeoutSec, int statsModality, int sensorId, boolean shouldVibrate) { super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId, statsModality, BiometricsProtoEnums.ACTION_ENROLL, shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_ENROLL, BiometricsProtoEnums.CLIENT_UNKNOWN); mBiometricUtils = utils; mHardwareAuthToken = Arrays.copyOf(hardwareAuthToken, hardwareAuthToken.length); mTimeoutSec = timeoutSec; mShouldVibrate = shouldVibrate; } public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) { Loading services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class FaceAuthenticationClient extends AuthenticationClient<ISession> implements super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner, cookie, requireConfirmation, sensorId, isStrongBiometric, BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */, lockoutCache, allowBackgroundAuthentication); lockoutCache, allowBackgroundAuthentication, true /* shouldVibrate */); mUsageStats = usageStats; mLockoutCache = lockoutCache; mNotificationManager = context.getSystemService(NotificationManager.class); Loading Loading
packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java +0 −19 Original line number Diff line number Diff line Loading @@ -21,11 +21,8 @@ import android.annotation.Nullable; import android.content.Context; import android.graphics.PointF; import android.hardware.fingerprint.IUdfpsOverlayController; import android.media.AudioAttributes; import android.os.Build; import android.os.UserHandle; import android.os.VibrationEffect; import android.os.Vibrator; import android.provider.Settings; import android.util.Log; import android.util.TypedValue; Loading @@ -50,12 +47,6 @@ public class UdfpsEnrollHelper { // Enroll with two center touches before going to guided enrollment private static final int NUM_CENTER_TOUCHES = 2; private static final AudioAttributes VIBRATION_SONFICATION_ATTRIBUTES = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build(); interface Listener { void onEnrollmentProgress(int remaining, int totalSteps); void onLastStepAcquired(); Loading @@ -66,9 +57,6 @@ public class UdfpsEnrollHelper { private final int mEnrollReason; private final boolean mAccessibilityEnabled; @NonNull private final List<PointF> mGuidedEnrollmentPoints; @NonNull private final Vibrator mVibrator; @NonNull private final VibrationEffect mEffectClick = VibrationEffect.get(VibrationEffect.EFFECT_CLICK); private int mTotalSteps = -1; private int mRemainingSteps = -1; Loading @@ -82,7 +70,6 @@ public class UdfpsEnrollHelper { public UdfpsEnrollHelper(@NonNull Context context, int reason) { mContext = context; mEnrollReason = reason; mVibrator = context.getSystemService(Vibrator.class); final AccessibilityManager am = context.getSystemService(AccessibilityManager.class); mAccessibilityEnabled = am.isEnabled(); Loading Loading @@ -141,7 +128,6 @@ public class UdfpsEnrollHelper { if (remaining != mRemainingSteps) { mLocationsEnrolled++; vibrateSuccess(); } mRemainingSteps = remaining; Loading Loading @@ -202,11 +188,6 @@ public class UdfpsEnrollHelper { if (mRemainingSteps <= 2 && mRemainingSteps >= 0) { mListener.onLastStepAcquired(); vibrateSuccess(); } } private void vibrateSuccess() { mVibrator.vibrate(mEffectClick, VIBRATION_SONFICATION_ATTRIBUTES); } }
services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +16 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.hardware.biometrics.BiometricConstants; import android.media.AudioAttributes; import android.os.IBinder; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.VibrationEffect; Loading Loading @@ -49,6 +50,8 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK); private final PowerManager mPowerManager; // If haptics should occur when auth result (success/reject) is known protected final boolean mShouldVibrate; private boolean mShouldSendErrorToClient = true; private boolean mAlreadyCancelled; Loading @@ -59,11 +62,12 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement public AcquisitionClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull String owner, int cookie, int sensorId, int statsModality, int statsAction, int statsClient) { @NonNull String owner, int cookie, int sensorId, boolean shouldVibrate, int statsModality, int statsAction, int statsClient) { super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality, statsAction, statsClient); mPowerManager = context.getSystemService(PowerManager.class); mShouldVibrate = shouldVibrate; } @Override Loading Loading @@ -191,14 +195,22 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement protected final void vibrateSuccess() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); if (vibrator != null) { vibrator.vibrate(SUCCESS_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES); vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), SUCCESS_VIBRATION_EFFECT, getClass().getSimpleName() + "::success", VIBRATION_SONIFICATION_ATTRIBUTES); } } protected final void vibrateError() { Vibrator vibrator = getContext().getSystemService(Vibrator.class); if (vibrator != null) { vibrator.vibrate(ERROR_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES); vibrator.vibrate(Process.myUid(), getContext().getOpPackageName(), ERROR_VIBRATION_EFFECT, getClass().getSimpleName() + "::error", VIBRATION_SONIFICATION_ATTRIBUTES); } } }
services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +6 −4 Original line number Diff line number Diff line Loading @@ -68,9 +68,11 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> int targetUserId, long operationId, boolean restricted, @NonNull String owner, int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric, int statsModality, int statsClient, @Nullable TaskStackListener taskStackListener, @NonNull LockoutTracker lockoutTracker, boolean allowBackgroundAuthentication) { @NonNull LockoutTracker lockoutTracker, boolean allowBackgroundAuthentication, boolean shouldVibrate) { super(context, lazyDaemon, token, listener, targetUserId, owner, cookie, sensorId, statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient); shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient); mIsStrongBiometric = isStrongBiometric; mOperationId = operationId; mRequireConfirmation = requireConfirmation; Loading Loading @@ -204,7 +206,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> mAlreadyDone = true; if (listener != null) { if (listener != null && mShouldVibrate) { vibrateSuccess(); } Loading Loading @@ -250,7 +252,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> Slog.w(TAG, "Client not listening"); } } else { if (listener != null) { if (listener != null && mShouldVibrate) { vibrateError(); } Loading
services/core/java/com/android/server/biometrics/sensors/EnrollClient.java +2 −5 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> { protected final byte[] mHardwareAuthToken; protected final int mTimeoutSec; protected final BiometricUtils mBiometricUtils; private final boolean mShouldVibrate; private long mEnrollmentStartTimeMs; Loading @@ -50,15 +49,13 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> { public EnrollClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils, int timeoutSec, int statsModality, int sensorId, boolean shouldVibrate) { int timeoutSec, int statsModality, int sensorId, boolean shouldVibrate) { super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId, statsModality, BiometricsProtoEnums.ACTION_ENROLL, shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_ENROLL, BiometricsProtoEnums.CLIENT_UNKNOWN); mBiometricUtils = utils; mHardwareAuthToken = Arrays.copyOf(hardwareAuthToken, hardwareAuthToken.length); mTimeoutSec = timeoutSec; mShouldVibrate = shouldVibrate; } public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) { Loading
services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class FaceAuthenticationClient extends AuthenticationClient<ISession> implements super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner, cookie, requireConfirmation, sensorId, isStrongBiometric, BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */, lockoutCache, allowBackgroundAuthentication); lockoutCache, allowBackgroundAuthentication, true /* shouldVibrate */); mUsageStats = usageStats; mLockoutCache = lockoutCache; mNotificationManager = context.getSystemService(NotificationManager.class); Loading