Merge changes from topic "biometric-haptic" into sc-dev
* changes: 2/n: Update fingerprint vibration logic 1/n: Move UDFPS enroll haptics back to system_server
This commit is contained in:
@@ -21,11 +21,8 @@ import android.annotation.Nullable;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||||
import android.media.AudioAttributes;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.VibrationEffect;
|
|
||||||
import android.os.Vibrator;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
@@ -50,12 +47,6 @@ public class UdfpsEnrollHelper {
|
|||||||
// Enroll with two center touches before going to guided enrollment
|
// Enroll with two center touches before going to guided enrollment
|
||||||
private static final int NUM_CENTER_TOUCHES = 2;
|
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 {
|
interface Listener {
|
||||||
void onEnrollmentProgress(int remaining, int totalSteps);
|
void onEnrollmentProgress(int remaining, int totalSteps);
|
||||||
void onLastStepAcquired();
|
void onLastStepAcquired();
|
||||||
@@ -66,9 +57,6 @@ public class UdfpsEnrollHelper {
|
|||||||
private final int mEnrollReason;
|
private final int mEnrollReason;
|
||||||
private final boolean mAccessibilityEnabled;
|
private final boolean mAccessibilityEnabled;
|
||||||
@NonNull private final List<PointF> mGuidedEnrollmentPoints;
|
@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 mTotalSteps = -1;
|
||||||
private int mRemainingSteps = -1;
|
private int mRemainingSteps = -1;
|
||||||
@@ -82,7 +70,6 @@ public class UdfpsEnrollHelper {
|
|||||||
public UdfpsEnrollHelper(@NonNull Context context, int reason) {
|
public UdfpsEnrollHelper(@NonNull Context context, int reason) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mEnrollReason = reason;
|
mEnrollReason = reason;
|
||||||
mVibrator = context.getSystemService(Vibrator.class);
|
|
||||||
|
|
||||||
final AccessibilityManager am = context.getSystemService(AccessibilityManager.class);
|
final AccessibilityManager am = context.getSystemService(AccessibilityManager.class);
|
||||||
mAccessibilityEnabled = am.isEnabled();
|
mAccessibilityEnabled = am.isEnabled();
|
||||||
@@ -141,7 +128,6 @@ public class UdfpsEnrollHelper {
|
|||||||
|
|
||||||
if (remaining != mRemainingSteps) {
|
if (remaining != mRemainingSteps) {
|
||||||
mLocationsEnrolled++;
|
mLocationsEnrolled++;
|
||||||
vibrateSuccess();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mRemainingSteps = remaining;
|
mRemainingSteps = remaining;
|
||||||
@@ -202,11 +188,6 @@ public class UdfpsEnrollHelper {
|
|||||||
|
|
||||||
if (mRemainingSteps <= 2 && mRemainingSteps >= 0) {
|
if (mRemainingSteps <= 2 && mRemainingSteps >= 0) {
|
||||||
mListener.onLastStepAcquired();
|
mListener.onLastStepAcquired();
|
||||||
vibrateSuccess();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void vibrateSuccess() {
|
|
||||||
mVibrator.vibrate(mEffectClick, VIBRATION_SONFICATION_ATTRIBUTES);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.hardware.biometrics.BiometricConstants;
|
|||||||
import android.media.AudioAttributes;
|
import android.media.AudioAttributes;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
|
import android.os.Process;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.VibrationEffect;
|
import android.os.VibrationEffect;
|
||||||
@@ -49,6 +50,8 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement
|
|||||||
VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK);
|
VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK);
|
||||||
|
|
||||||
private final PowerManager mPowerManager;
|
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 mShouldSendErrorToClient = true;
|
||||||
private boolean mAlreadyCancelled;
|
private boolean mAlreadyCancelled;
|
||||||
|
|
||||||
@@ -59,11 +62,12 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement
|
|||||||
|
|
||||||
public AcquisitionClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
public AcquisitionClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
||||||
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||||
@NonNull String owner, int cookie, int sensorId, int statsModality,
|
@NonNull String owner, int cookie, int sensorId, boolean shouldVibrate,
|
||||||
int statsAction, int statsClient) {
|
int statsModality, int statsAction, int statsClient) {
|
||||||
super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality,
|
super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality,
|
||||||
statsAction, statsClient);
|
statsAction, statsClient);
|
||||||
mPowerManager = context.getSystemService(PowerManager.class);
|
mPowerManager = context.getSystemService(PowerManager.class);
|
||||||
|
mShouldVibrate = shouldVibrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -191,14 +195,22 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement
|
|||||||
protected final void vibrateSuccess() {
|
protected final void vibrateSuccess() {
|
||||||
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
||||||
if (vibrator != null) {
|
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() {
|
protected final void vibrateError() {
|
||||||
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
|
||||||
if (vibrator != null) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,9 +68,11 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T>
|
|||||||
int targetUserId, long operationId, boolean restricted, @NonNull String owner,
|
int targetUserId, long operationId, boolean restricted, @NonNull String owner,
|
||||||
int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric,
|
int cookie, boolean requireConfirmation, int sensorId, boolean isStrongBiometric,
|
||||||
int statsModality, int statsClient, @Nullable TaskStackListener taskStackListener,
|
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,
|
super(context, lazyDaemon, token, listener, targetUserId, owner, cookie, sensorId,
|
||||||
statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient);
|
shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
||||||
|
statsClient);
|
||||||
mIsStrongBiometric = isStrongBiometric;
|
mIsStrongBiometric = isStrongBiometric;
|
||||||
mOperationId = operationId;
|
mOperationId = operationId;
|
||||||
mRequireConfirmation = requireConfirmation;
|
mRequireConfirmation = requireConfirmation;
|
||||||
@@ -204,7 +206,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T>
|
|||||||
|
|
||||||
mAlreadyDone = true;
|
mAlreadyDone = true;
|
||||||
|
|
||||||
if (listener != null) {
|
if (listener != null && mShouldVibrate) {
|
||||||
vibrateSuccess();
|
vibrateSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +252,7 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T>
|
|||||||
Slog.w(TAG, "Client not listening");
|
Slog.w(TAG, "Client not listening");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (listener != null) {
|
if (listener != null && mShouldVibrate) {
|
||||||
vibrateError();
|
vibrateError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> {
|
|||||||
protected final byte[] mHardwareAuthToken;
|
protected final byte[] mHardwareAuthToken;
|
||||||
protected final int mTimeoutSec;
|
protected final int mTimeoutSec;
|
||||||
protected final BiometricUtils mBiometricUtils;
|
protected final BiometricUtils mBiometricUtils;
|
||||||
private final boolean mShouldVibrate;
|
|
||||||
|
|
||||||
private long mEnrollmentStartTimeMs;
|
private long mEnrollmentStartTimeMs;
|
||||||
|
|
||||||
@@ -50,15 +49,13 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> {
|
|||||||
public EnrollClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
public EnrollClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
|
||||||
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils,
|
@NonNull byte[] hardwareAuthToken, @NonNull String owner, @NonNull BiometricUtils utils,
|
||||||
int timeoutSec, int statsModality, int sensorId,
|
int timeoutSec, int statsModality, int sensorId, boolean shouldVibrate) {
|
||||||
boolean shouldVibrate) {
|
|
||||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||||
statsModality, BiometricsProtoEnums.ACTION_ENROLL,
|
shouldVibrate, statsModality, BiometricsProtoEnums.ACTION_ENROLL,
|
||||||
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
BiometricsProtoEnums.CLIENT_UNKNOWN);
|
||||||
mBiometricUtils = utils;
|
mBiometricUtils = utils;
|
||||||
mHardwareAuthToken = Arrays.copyOf(hardwareAuthToken, hardwareAuthToken.length);
|
mHardwareAuthToken = Arrays.copyOf(hardwareAuthToken, hardwareAuthToken.length);
|
||||||
mTimeoutSec = timeoutSec;
|
mTimeoutSec = timeoutSec;
|
||||||
mShouldVibrate = shouldVibrate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) {
|
public void onEnrollResult(BiometricAuthenticator.Identifier identifier, int remaining) {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class FaceAuthenticationClient extends AuthenticationClient<ISession> implements
|
|||||||
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
||||||
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
||||||
BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */,
|
BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */,
|
||||||
lockoutCache, allowBackgroundAuthentication);
|
lockoutCache, allowBackgroundAuthentication, true /* shouldVibrate */);
|
||||||
mUsageStats = usageStats;
|
mUsageStats = usageStats;
|
||||||
mLockoutCache = lockoutCache;
|
mLockoutCache = lockoutCache;
|
||||||
mNotificationManager = context.getSystemService(NotificationManager.class);
|
mNotificationManager = context.getSystemService(NotificationManager.class);
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ public class FaceDetectClient extends AcquisitionClient<ISession> implements Det
|
|||||||
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, int userId,
|
||||||
@NonNull String owner, int sensorId, boolean isStrongBiometric, int statsClient) {
|
@NonNull String owner, int sensorId, boolean isStrongBiometric, int statsClient) {
|
||||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||||
BiometricsProtoEnums.MODALITY_FACE, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
true /* shouldVibrate */, BiometricsProtoEnums.MODALITY_FACE,
|
||||||
statsClient);
|
BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient);
|
||||||
mIsStrongBiometric = isStrongBiometric;
|
mIsStrongBiometric = isStrongBiometric;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class FaceAuthenticationClient extends AuthenticationClient<IBiometricsFace> {
|
|||||||
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
||||||
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
||||||
BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */,
|
BiometricsProtoEnums.MODALITY_FACE, statsClient, null /* taskStackListener */,
|
||||||
lockoutTracker, allowBackgroundAuthentication);
|
lockoutTracker, allowBackgroundAuthentication, true /* shouldVibrate */);
|
||||||
mUsageStats = usageStats;
|
mUsageStats = usageStats;
|
||||||
|
|
||||||
final Resources resources = getContext().getResources();
|
final Resources resources = getContext().getResources();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.hardware.biometrics.BiometricFingerprintConstants.FingerprintAcqu
|
|||||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||||
import android.hardware.biometrics.common.ICancellationSignal;
|
import android.hardware.biometrics.common.ICancellationSignal;
|
||||||
import android.hardware.biometrics.fingerprint.ISession;
|
import android.hardware.biometrics.fingerprint.ISession;
|
||||||
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -62,11 +63,12 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp
|
|||||||
int sensorId, boolean isStrongBiometric, int statsClient,
|
int sensorId, boolean isStrongBiometric, int statsClient,
|
||||||
@Nullable TaskStackListener taskStackListener, @NonNull LockoutCache lockoutCache,
|
@Nullable TaskStackListener taskStackListener, @NonNull LockoutCache lockoutCache,
|
||||||
@Nullable IUdfpsOverlayController udfpsOverlayController,
|
@Nullable IUdfpsOverlayController udfpsOverlayController,
|
||||||
boolean allowBackgroundAuthentication) {
|
boolean allowBackgroundAuthentication,
|
||||||
|
@NonNull FingerprintSensorPropertiesInternal sensorProps) {
|
||||||
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner,
|
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted, owner,
|
||||||
cookie, requireConfirmation, sensorId, isStrongBiometric,
|
cookie, requireConfirmation, sensorId, isStrongBiometric,
|
||||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener,
|
BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener,
|
||||||
lockoutCache, allowBackgroundAuthentication);
|
lockoutCache, allowBackgroundAuthentication, true /* shouldVibrate */);
|
||||||
mLockoutCache = lockoutCache;
|
mLockoutCache = lockoutCache;
|
||||||
mUdfpsOverlayController = udfpsOverlayController;
|
mUdfpsOverlayController = udfpsOverlayController;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ class FingerprintDetectClient extends AcquisitionClient<ISession> implements Det
|
|||||||
@Nullable IUdfpsOverlayController udfpsOverlayController, boolean isStrongBiometric,
|
@Nullable IUdfpsOverlayController udfpsOverlayController, boolean isStrongBiometric,
|
||||||
int statsClient) {
|
int statsClient) {
|
||||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
true /* shouldVibrate */, BiometricsProtoEnums.MODALITY_FINGERPRINT,
|
||||||
statsClient);
|
BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient);
|
||||||
mIsStrongBiometric = isStrongBiometric;
|
mIsStrongBiometric = isStrongBiometric;
|
||||||
mUdfpsOverlayController = udfpsOverlayController;
|
mUdfpsOverlayController = udfpsOverlayController;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
|||||||
@Nullable IUdfpsOverlayController udfpsOvelayController,
|
@Nullable IUdfpsOverlayController udfpsOvelayController,
|
||||||
@Nullable ISidefpsController sidefpsController,
|
@Nullable ISidefpsController sidefpsController,
|
||||||
int maxTemplatesPerUser, @FingerprintManager.EnrollReason int enrollReason) {
|
int maxTemplatesPerUser, @FingerprintManager.EnrollReason int enrollReason) {
|
||||||
// UDFPS enroll vibrations are handled in SystemUI
|
// UDFPS haptics occur when an image is acquired (instead of when the result is known)
|
||||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||||
0 /* timeoutSec */, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
0 /* timeoutSec */, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
||||||
!sensorProps.isAnyUdfpsType() /* shouldVibrate */);
|
!sensorProps.isAnyUdfpsType() /* shouldVibrate */);
|
||||||
@@ -104,6 +104,7 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
|||||||
// See AcquiredInfo#GOOD and AcquiredInfo#RETRYING_CAPTURE
|
// See AcquiredInfo#GOOD and AcquiredInfo#RETRYING_CAPTURE
|
||||||
if (acquiredInfo == BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_GOOD
|
if (acquiredInfo == BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_GOOD
|
||||||
&& mSensorProps.isAnyUdfpsType()) {
|
&& mSensorProps.isAnyUdfpsType()) {
|
||||||
|
vibrateSuccess();
|
||||||
UdfpsHelper.onAcquiredGood(getSensorId(), mUdfpsOverlayController);
|
UdfpsHelper.onAcquiredGood(getSensorId(), mUdfpsOverlayController);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -395,7 +395,8 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
|||||||
operationId, restricted, opPackageName, cookie,
|
operationId, restricted, opPackageName, cookie,
|
||||||
false /* requireConfirmation */, sensorId, isStrongBiometric, statsClient,
|
false /* requireConfirmation */, sensorId, isStrongBiometric, statsClient,
|
||||||
mTaskStackListener, mSensors.get(sensorId).getLockoutCache(),
|
mTaskStackListener, mSensors.get(sensorId).getLockoutCache(),
|
||||||
mUdfpsOverlayController, allowBackgroundAuthentication);
|
mUdfpsOverlayController, allowBackgroundAuthentication,
|
||||||
|
mSensors.get(sensorId).getSensorProperties());
|
||||||
scheduleForSensor(sensorId, client, fingerprintStateCallback);
|
scheduleForSensor(sensorId, client, fingerprintStateCallback);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi
|
|||||||
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
super(context, lazyDaemon, token, listener, targetUserId, operationId, restricted,
|
||||||
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
owner, cookie, requireConfirmation, sensorId, isStrongBiometric,
|
||||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener,
|
BiometricsProtoEnums.MODALITY_FINGERPRINT, statsClient, taskStackListener,
|
||||||
lockoutTracker, allowBackgroundAuthentication);
|
lockoutTracker, allowBackgroundAuthentication, true /* shouldVibrate */);
|
||||||
mLockoutFrameworkImpl = lockoutTracker;
|
mLockoutFrameworkImpl = lockoutTracker;
|
||||||
mUdfpsOverlayController = udfpsOverlayController;
|
mUdfpsOverlayController = udfpsOverlayController;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint>
|
|||||||
int sensorId, @Nullable IUdfpsOverlayController udfpsOverlayController,
|
int sensorId, @Nullable IUdfpsOverlayController udfpsOverlayController,
|
||||||
boolean isStrongBiometric, int statsClient) {
|
boolean isStrongBiometric, int statsClient) {
|
||||||
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId,
|
||||||
BiometricsProtoEnums.MODALITY_FINGERPRINT, BiometricsProtoEnums.ACTION_AUTHENTICATE,
|
true /* shouldVibrate */, BiometricsProtoEnums.MODALITY_FINGERPRINT,
|
||||||
statsClient);
|
BiometricsProtoEnums.ACTION_AUTHENTICATE, statsClient);
|
||||||
mUdfpsOverlayController = udfpsOverlayController;
|
mUdfpsOverlayController = udfpsOverlayController;
|
||||||
mIsStrongBiometric = isStrongBiometric;
|
mIsStrongBiometric = isStrongBiometric;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,8 @@ public class AcquisitionClientTest {
|
|||||||
@NonNull LazyDaemon<Object> lazyDaemon, @NonNull IBinder token,
|
@NonNull LazyDaemon<Object> lazyDaemon, @NonNull IBinder token,
|
||||||
@NonNull ClientMonitorCallbackConverter callback) {
|
@NonNull ClientMonitorCallbackConverter callback) {
|
||||||
super(context, lazyDaemon, token, callback, 0 /* userId */, "Test", 0 /* cookie */,
|
super(context, lazyDaemon, token, callback, 0 /* userId */, "Test", 0 /* cookie */,
|
||||||
TEST_SENSOR_ID /* sensorId */, 0 /* statsModality */, 0 /* statsAction */,
|
TEST_SENSOR_ID /* sensorId */, true /* shouldVibrate */, 0 /* statsModality */,
|
||||||
|
0 /* statsAction */,
|
||||||
0 /* statsClient */);
|
0 /* statsClient */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ public class BiometricSchedulerTest {
|
|||||||
false /* restricted */, TAG, 1 /* cookie */, false /* requireConfirmation */,
|
false /* restricted */, TAG, 1 /* cookie */, false /* requireConfirmation */,
|
||||||
TEST_SENSOR_ID, true /* isStrongBiometric */, 0 /* statsModality */,
|
TEST_SENSOR_ID, true /* isStrongBiometric */, 0 /* statsModality */,
|
||||||
0 /* statsClient */, null /* taskStackListener */, mock(LockoutTracker.class),
|
0 /* statsClient */, null /* taskStackListener */, mock(LockoutTracker.class),
|
||||||
false /* isKeyguard */);
|
false /* isKeyguard */, true /* shouldVibrate */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -382,7 +382,7 @@ public class BiometricSchedulerTest {
|
|||||||
false /* restricted */, TAG, 1 /* cookie */, false /* requireConfirmation */,
|
false /* restricted */, TAG, 1 /* cookie */, false /* requireConfirmation */,
|
||||||
TEST_SENSOR_ID, true /* isStrongBiometric */, 0 /* statsModality */,
|
TEST_SENSOR_ID, true /* isStrongBiometric */, 0 /* statsModality */,
|
||||||
0 /* statsClient */, null /* taskStackListener */, mock(LockoutTracker.class),
|
0 /* statsClient */, null /* taskStackListener */, mock(LockoutTracker.class),
|
||||||
false /* isKeyguard */);
|
false /* isKeyguard */, true /* shouldVibrate */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user