Add fingerprint enroll reason
1) Existing metrics logging-ness can be derived from it 2) EnrollReason is clearer and can be used by other parts of the system, such as SysUI 3) Do not show progressbar in SysUI if it's "find sensor" Bug: 179447737 Test: Builds Change-Id: I84f82b5c81a668e11c1a380e6fa4e3080db53dc9
This commit is contained in:
@@ -24,6 +24,7 @@ import static android.Manifest.permission.USE_BIOMETRIC;
|
||||
import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
|
||||
import static android.Manifest.permission.USE_FINGERPRINT;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresFeature;
|
||||
@@ -55,6 +56,8 @@ import android.security.identity.IdentityCredential;
|
||||
import android.util.Slog;
|
||||
import android.view.Surface;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.security.Signature;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -89,6 +92,22 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
private static final int MSG_UDFPS_POINTER_DOWN = 108;
|
||||
private static final int MSG_UDFPS_POINTER_UP = 109;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public static final int ENROLL_FIND_SENSOR = 1;
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public static final int ENROLL_ENROLL = 2;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@IntDef({ENROLL_FIND_SENSOR, ENROLL_ENROLL})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface EnrollReason {}
|
||||
|
||||
/**
|
||||
* Request authentication with any single sensor.
|
||||
* @hide
|
||||
@@ -580,7 +599,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
*/
|
||||
@RequiresPermission(MANAGE_FINGERPRINT)
|
||||
public void enroll(byte [] hardwareAuthToken, CancellationSignal cancel, int userId,
|
||||
EnrollmentCallback callback, boolean shouldLogMetrics) {
|
||||
EnrollmentCallback callback, @EnrollReason int enrollReason) {
|
||||
if (userId == UserHandle.USER_CURRENT) {
|
||||
userId = getCurrentUserId();
|
||||
}
|
||||
@@ -601,7 +620,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
try {
|
||||
mEnrollmentCallback = callback;
|
||||
mService.enroll(mToken, hardwareAuthToken, userId, mServiceReceiver,
|
||||
mContext.getOpPackageName(), shouldLogMetrics);
|
||||
mContext.getOpPackageName(), enrollReason);
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Remote exception in enroll: ", e);
|
||||
// Though this may not be a hardware issue, it will cause apps to give up or try
|
||||
|
||||
@@ -78,7 +78,7 @@ interface IFingerprintService {
|
||||
|
||||
// Start fingerprint enrollment
|
||||
void enroll(IBinder token, in byte [] hardwareAuthToken, int userId, IFingerprintServiceReceiver receiver,
|
||||
String opPackageName, boolean shouldLogMetrics);
|
||||
String opPackageName, int enrollReason);
|
||||
|
||||
// Cancel enrollment in progress
|
||||
void cancelEnrollment(IBinder token);
|
||||
|
||||
@@ -21,10 +21,11 @@ package android.hardware.fingerprint;
|
||||
*/
|
||||
oneway interface IUdfpsOverlayController {
|
||||
const int REASON_UNKNOWN = 0;
|
||||
const int REASON_ENROLL = 1;
|
||||
const int REASON_AUTH_BP = 2; // BiometricPrompt
|
||||
const int REASON_AUTH_FPM_KEYGUARD = 3; // FingerprintManager usage from Keyguard
|
||||
const int REASON_AUTH_FPM_OTHER = 4; // Other FingerprintManager usage
|
||||
const int REASON_ENROLL_FIND_SENSOR = 1;
|
||||
const int REASON_ENROLL_ENROLLING = 2;
|
||||
const int REASON_AUTH_BP = 3; // BiometricPrompt
|
||||
const int REASON_AUTH_FPM_KEYGUARD = 4; // FingerprintManager usage from Keyguard
|
||||
const int REASON_AUTH_FPM_OTHER = 5; // Other FingerprintManager usage
|
||||
|
||||
// Shows the overlay.
|
||||
void showUdfpsOverlay(int sensorId, int reason);
|
||||
|
||||
@@ -96,8 +96,11 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
|
||||
public class UdfpsOverlayController extends IUdfpsOverlayController.Stub {
|
||||
@Override
|
||||
public void showUdfpsOverlay(int sensorId, int reason) {
|
||||
if (reason == IUdfpsOverlayController.REASON_ENROLL) {
|
||||
mEnrollHelper = new UdfpsEnrollHelper();
|
||||
if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR
|
||||
|| reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING) {
|
||||
mEnrollHelper = new UdfpsEnrollHelper(reason);
|
||||
} else {
|
||||
mEnrollHelper = null;
|
||||
}
|
||||
UdfpsController.this.showOverlay(reason);
|
||||
}
|
||||
@@ -300,8 +303,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
|
||||
try {
|
||||
Log.v(TAG, "showUdfpsOverlay | adding window");
|
||||
final UdfpsAnimation animation = getUdfpsAnimationForReason(reason);
|
||||
mView.setUdfpsAnimation(animation);
|
||||
mView.setEnrollHelper(mEnrollHelper);
|
||||
mView.setExtras(animation, mEnrollHelper);
|
||||
mWindowManager.addView(mView, computeLayoutParams(animation));
|
||||
mView.setOnTouchListener(mOnTouchListener);
|
||||
mIsOverlayShowing = true;
|
||||
@@ -318,7 +320,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
|
||||
private UdfpsAnimation getUdfpsAnimationForReason(int reason) {
|
||||
Log.d(TAG, "getUdfpsAnimationForReason: " + reason);
|
||||
switch (reason) {
|
||||
case IUdfpsOverlayController.REASON_ENROLL:
|
||||
case IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR:
|
||||
case IUdfpsOverlayController.REASON_ENROLL_ENROLLING:
|
||||
return new UdfpsAnimationEnroll(mContext);
|
||||
case IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD:
|
||||
return new UdfpsAnimationKeyguard(mView, mContext, mStatusBarStateController);
|
||||
@@ -334,7 +337,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
|
||||
mFgExecutor.execute(() -> {
|
||||
if (mIsOverlayShowing) {
|
||||
Log.v(TAG, "hideUdfpsOverlay | removing window");
|
||||
mView.setUdfpsAnimation(null);
|
||||
mView.setExtras(null, null);
|
||||
mView.setOnTouchListener(null);
|
||||
// Reset the controller back to its starting state.
|
||||
onFingerUp();
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.systemui.biometrics;
|
||||
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
/**
|
||||
@@ -24,10 +26,20 @@ import androidx.annotation.NonNull;
|
||||
public class UdfpsEnrollHelper {
|
||||
private static final String TAG = "UdfpsEnrollHelper";
|
||||
|
||||
// IUdfpsOverlayController reason
|
||||
private final int mEnrollReason;
|
||||
|
||||
private int mTotalSteps = -1;
|
||||
private int mCurrentProgress = 0;
|
||||
|
||||
public UdfpsEnrollHelper(int reason) {
|
||||
mEnrollReason = reason;
|
||||
}
|
||||
|
||||
boolean shouldShowProgressBar() {
|
||||
return mEnrollReason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING;
|
||||
}
|
||||
|
||||
void onEnrollmentProgress(int remaining, @NonNull UdfpsProgressBar progressBar) {
|
||||
if (mTotalSteps == -1) {
|
||||
mTotalSteps = remaining;
|
||||
|
||||
@@ -111,22 +111,19 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
|
||||
mSensorProps = properties;
|
||||
}
|
||||
|
||||
void setUdfpsAnimation(@Nullable UdfpsAnimation animation) {
|
||||
void setExtras(@Nullable UdfpsAnimation animation, @Nullable UdfpsEnrollHelper enrollHelper) {
|
||||
mAnimationView.setAnimation(animation);
|
||||
if (animation instanceof UdfpsAnimationEnroll) {
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
mEnrollHelper = enrollHelper;
|
||||
|
||||
if (enrollHelper != null) {
|
||||
mEnrollHelper.updateProgress(mProgressBar);
|
||||
mProgressBar.setVisibility(enrollHelper.shouldShowProgressBar()
|
||||
? View.VISIBLE : View.GONE);
|
||||
} else {
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
void setEnrollHelper(@Nullable UdfpsEnrollHelper enrollHelper) {
|
||||
mEnrollHelper = enrollHelper;
|
||||
if (mEnrollHelper != null) {
|
||||
mEnrollHelper.updateProgress(mProgressBar);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHbmCallback(@Nullable HbmCallback callback) {
|
||||
mHbmSurfaceView.setHbmCallback(callback);
|
||||
|
||||
@@ -197,7 +197,7 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
@Override // Binder call
|
||||
public void enroll(final IBinder token, final byte[] hardwareAuthToken, final int userId,
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName,
|
||||
boolean shouldLogMetrics) {
|
||||
@FingerprintManager.EnrollReason int enrollReason) {
|
||||
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
|
||||
|
||||
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
|
||||
@@ -207,7 +207,7 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
}
|
||||
|
||||
provider.second.scheduleEnroll(provider.first, token, hardwareAuthToken, userId,
|
||||
receiver, opPackageName, shouldLogMetrics);
|
||||
receiver, opPackageName, enrollReason);
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
|
||||
@@ -78,7 +78,7 @@ public interface ServiceProvider {
|
||||
|
||||
void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
boolean shouldLogMetrics);
|
||||
@FingerprintManager.EnrollReason int enrollReason);
|
||||
|
||||
void cancelEnrollment(int sensorId, @NonNull IBinder token);
|
||||
|
||||
|
||||
@@ -65,6 +65,17 @@ public class UdfpsHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static int getReasonFromEnrollReason(@FingerprintManager.EnrollReason int reason) {
|
||||
switch (reason) {
|
||||
case FingerprintManager.ENROLL_FIND_SENSOR:
|
||||
return IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR;
|
||||
case FingerprintManager.ENROLL_ENROLL:
|
||||
return IUdfpsOverlayController.REASON_ENROLL_ENROLLING;
|
||||
default:
|
||||
return IUdfpsOverlayController.REASON_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
public static void showUdfpsOverlay(int sensorId, int reason,
|
||||
@Nullable IUdfpsOverlayController udfpsOverlayController) {
|
||||
if (udfpsOverlayController == null) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.util.Slog;
|
||||
@@ -131,7 +132,7 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mProvider.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName(), true /* shouldLogMetrics */);
|
||||
mContext.getOpPackageName(), FingerprintManager.ENROLL_ENROLL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.common.ICancellationSignal;
|
||||
import android.hardware.biometrics.fingerprint.ISession;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
@@ -43,6 +44,7 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
||||
private static final String TAG = "FingerprintEnrollClient";
|
||||
|
||||
@Nullable private final IUdfpsOverlayController mUdfpsOverlayController;
|
||||
private final @FingerprintManager.EnrollReason int mEnrollReason;
|
||||
@Nullable private ICancellationSignal mCancellationSignal;
|
||||
private final int mMaxTemplatesPerUser;
|
||||
|
||||
@@ -52,13 +54,17 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner,
|
||||
@NonNull BiometricUtils<Fingerprint> utils, int sensorId,
|
||||
@Nullable IUdfpsOverlayController udfpsOvelayController, int maxTemplatesPerUser,
|
||||
boolean shouldLogMetrics) {
|
||||
@FingerprintManager.EnrollReason int enrollReason) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||
0 /* timeoutSec */, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
||||
true /* shouldVibrate */);
|
||||
mUdfpsOverlayController = udfpsOvelayController;
|
||||
mMaxTemplatesPerUser = maxTemplatesPerUser;
|
||||
setShouldLog(shouldLogMetrics);
|
||||
|
||||
mEnrollReason = enrollReason;
|
||||
if (enrollReason == FingerprintManager.ENROLL_FIND_SENSOR) {
|
||||
setShouldLog(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -72,6 +78,7 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onAcquired(int acquiredInfo, int vendorCode) {
|
||||
super.onAcquired(acquiredInfo, vendorCode);
|
||||
@@ -112,7 +119,8 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps {
|
||||
|
||||
@Override
|
||||
protected void startHalOperation() {
|
||||
UdfpsHelper.showUdfpsOverlay(getSensorId(), IUdfpsOverlayController.REASON_ENROLL,
|
||||
UdfpsHelper.showUdfpsOverlay(getSensorId(),
|
||||
UdfpsHelper.getReasonFromEnrollReason(mEnrollReason),
|
||||
mUdfpsOverlayController);
|
||||
try {
|
||||
mCancellationSignal = getFreshDaemon().enroll(mSequentialId,
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.fingerprint.IFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.SensorProps;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
@@ -366,7 +367,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
@Override
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken,
|
||||
int userId, @NonNull IFingerprintServiceReceiver receiver,
|
||||
@NonNull String opPackageName, boolean shouldLogMetrics) {
|
||||
@NonNull String opPackageName, @FingerprintManager.EnrollReason int enrollReason) {
|
||||
mHandler.post(() -> {
|
||||
final IFingerprint daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
@@ -388,7 +389,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
mSensors.get(sensorId).getLazySession(), token,
|
||||
new ClientMonitorCallbackConverter(receiver), userId, hardwareAuthToken,
|
||||
opPackageName, FingerprintUtils.getInstance(sensorId), sensorId,
|
||||
mUdfpsOverlayController, maxTemplatesPerUser, shouldLogMetrics);
|
||||
mUdfpsOverlayController, maxTemplatesPerUser, enrollReason);
|
||||
scheduleForSensor(sensorId, client, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.util.Slog;
|
||||
@@ -132,7 +133,7 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mFingerprint21.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName(), true/* shouldLogMetrics */);
|
||||
mContext.getOpPackageName(), FingerprintManager.ENROLL_ENROLL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,6 +33,7 @@ import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorProperties;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
@@ -547,7 +548,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token,
|
||||
@NonNull byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
boolean shouldLogMetrics) {
|
||||
@FingerprintManager.EnrollReason int enrollReason) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
@@ -555,7 +556,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), userId,
|
||||
hardwareAuthToken, opPackageName, FingerprintUtils.getLegacyInstance(mSensorId),
|
||||
ENROLL_TIMEOUT_SEC, mSensorProperties.sensorId, mUdfpsOverlayController,
|
||||
shouldLogMetrics);
|
||||
enrollReason);
|
||||
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.hardware.biometrics.BiometricFingerprintConstants;
|
||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
@@ -46,6 +47,7 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint
|
||||
private static final String TAG = "FingerprintEnrollClient";
|
||||
|
||||
@Nullable private final IUdfpsOverlayController mUdfpsOverlayController;
|
||||
private final @FingerprintManager.EnrollReason int mEnrollReason;
|
||||
|
||||
FingerprintEnrollClient(@NonNull Context context,
|
||||
@NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token,
|
||||
@@ -53,12 +55,16 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint
|
||||
@NonNull byte[] hardwareAuthToken, @NonNull String owner,
|
||||
@NonNull BiometricUtils<Fingerprint> utils, int timeoutSec, int sensorId,
|
||||
@Nullable IUdfpsOverlayController udfpsOverlayController,
|
||||
boolean shouldLogMetrics) {
|
||||
@FingerprintManager.EnrollReason int enrollReason) {
|
||||
super(context, lazyDaemon, token, listener, userId, hardwareAuthToken, owner, utils,
|
||||
timeoutSec, BiometricsProtoEnums.MODALITY_FINGERPRINT, sensorId,
|
||||
true /* shouldVibrate */);
|
||||
mUdfpsOverlayController = udfpsOverlayController;
|
||||
setShouldLog(shouldLogMetrics);
|
||||
|
||||
mEnrollReason = enrollReason;
|
||||
if (enrollReason == FingerprintManager.ENROLL_FIND_SENSOR) {
|
||||
setShouldLog(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,7 +82,8 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint
|
||||
|
||||
@Override
|
||||
protected void startHalOperation() {
|
||||
UdfpsHelper.showUdfpsOverlay(getSensorId(), IUdfpsOverlayController.REASON_ENROLL,
|
||||
UdfpsHelper.showUdfpsOverlay(getSensorId(),
|
||||
UdfpsHelper.getReasonFromEnrollReason(mEnrollReason),
|
||||
mUdfpsOverlayController);
|
||||
try {
|
||||
// GroupId was never used. In fact, groupId is always the same as userId.
|
||||
|
||||
Reference in New Issue
Block a user