Merge "Added haptic feedback in fingerprint settings auth" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
1a888b6e8f
@@ -42,6 +42,8 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.text.InputFilter;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
@@ -109,6 +111,9 @@ public class FingerprintSettings extends SubSettings {
|
||||
private static final int RESULT_FINISHED = BiometricEnrollBase.RESULT_FINISHED;
|
||||
private static final int RESULT_SKIP = BiometricEnrollBase.RESULT_SKIP;
|
||||
private static final int RESULT_TIMEOUT = BiometricEnrollBase.RESULT_TIMEOUT;
|
||||
@VisibleForTesting
|
||||
static final VibrationEffect SUCCESS_VIBRATION_EFFECT =
|
||||
VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
|
||||
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
@@ -285,6 +290,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
private FingerprintAuthenticateSidecar mAuthenticateSidecar;
|
||||
private FingerprintRemoveSidecar mRemovalSidecar;
|
||||
private HashMap<Integer, String> mFingerprintsRenaming;
|
||||
private Vibrator mVibrator;
|
||||
|
||||
@Nullable
|
||||
private UdfpsEnrollCalibrator mCalibrator;
|
||||
@@ -367,8 +373,8 @@ public class FingerprintSettings extends SubSettings {
|
||||
break;
|
||||
case MSG_FINGER_AUTH_HELP: {
|
||||
// Not used
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -511,6 +517,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
addFirstFingerprint(null);
|
||||
}
|
||||
}
|
||||
mVibrator = getContext().getSystemService(Vibrator.class);
|
||||
final PreferenceScreen root = getPreferenceScreen();
|
||||
root.removeAll();
|
||||
addPreferencesFromResource(getPreferenceScreenResId());
|
||||
@@ -1095,6 +1102,7 @@ public class FingerprintSettings extends SubSettings {
|
||||
}
|
||||
|
||||
private void highlightFingerprintItem(int fpId) {
|
||||
mVibrator.vibrate(SUCCESS_VIBRATION_EFFECT);
|
||||
String prefName = genKey(fpId);
|
||||
FingerprintPreference fpref = (FingerprintPreference) findPreference(prefName);
|
||||
final Drawable highlight = getHighlightDrawable();
|
||||
|
@@ -54,6 +54,7 @@ import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
import android.os.Looper;
|
||||
import android.os.UserHandle;
|
||||
import android.os.Vibrator;
|
||||
import android.platform.test.annotations.EnableFlags;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
import android.provider.Settings;
|
||||
@@ -128,6 +129,9 @@ public class FingerprintSettingsFragmentTest {
|
||||
mAuthenticationCallbackArgumentCaptor = ArgumentCaptor.forClass(
|
||||
FingerprintManager.AuthenticationCallback.class);
|
||||
|
||||
@Mock
|
||||
private Vibrator mVibrator;
|
||||
|
||||
private FingerprintAuthenticateSidecar mFingerprintAuthenticateSidecar;
|
||||
private FingerprintRemoveSidecar mFingerprintRemoveSidecar;
|
||||
|
||||
@@ -141,6 +145,7 @@ public class FingerprintSettingsFragmentTest {
|
||||
doReturn(mContext).when(mFragment).getContext();
|
||||
doReturn(mBiometricManager).when(mContext).getSystemService(BiometricManager.class);
|
||||
doReturn(true).when(mFingerprintManager).isHardwareDetected();
|
||||
doReturn(mVibrator).when(mContext).getSystemService(Vibrator.class);
|
||||
when(mBiometricManager.canAuthenticate(
|
||||
BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
|
||||
.thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
|
||||
@@ -287,6 +292,28 @@ public class FingerprintSettingsFragmentTest {
|
||||
assertThat(mFragment.isVisible()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("b/353726774")
|
||||
public void fingerprintVibratesOnAuthSuccess() {
|
||||
setUpFragment(false);
|
||||
|
||||
doNothing().when(mFingerprintManager).authenticate(any(),
|
||||
mCancellationSignalArgumentCaptor.capture(),
|
||||
mAuthenticationCallbackArgumentCaptor.capture(), any(), anyInt());
|
||||
|
||||
mFingerprintAuthenticateSidecar.startAuthentication(1);
|
||||
|
||||
assertThat(mAuthenticationCallbackArgumentCaptor.getValue()).isNotNull();
|
||||
assertThat(mCancellationSignalArgumentCaptor.getValue()).isNotNull();
|
||||
|
||||
mAuthenticationCallbackArgumentCaptor.getValue()
|
||||
.onAuthenticationSucceeded(new FingerprintManager.AuthenticationResult(null,
|
||||
new Fingerprint("finger 1", 1, 1), 0 /* userId */, false));
|
||||
|
||||
shadowOf(Looper.getMainLooper()).idle();
|
||||
verify(mVibrator).vibrate(FingerprintSettings.SUCCESS_VIBRATION_EFFECT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotIndexable_whenDisabled() {
|
||||
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||
|
Reference in New Issue
Block a user