diff options
author | 2018-03-27 19:47:19 +0000 | |
---|---|---|
committer | 2018-03-27 19:47:19 +0000 | |
commit | 4dd84f9c92d566a6d20e7a9f43026cbf3bd53ed0 (patch) | |
tree | 43a4ebd31a22f72c8686a45225fbb1842e76c513 | |
parent | f1d5ca9c03f0c518b2dc2591f94ec5ff6f93bcb7 (diff) | |
parent | b57843059abc8a2d31e70ede923d08f765fbe30b (diff) |
Merge "Tweak FingerprintDialog" into pi-dev
am: b57843059a
Change-Id: Iee30b701c208d29f7391c7a7368d1a5028d72f35
4 files changed, 36 insertions, 13 deletions
diff --git a/core/java/android/hardware/fingerprint/FingerprintDialog.java b/core/java/android/hardware/fingerprint/FingerprintDialog.java index 49835963a3b1..13b706494db7 100644 --- a/core/java/android/hardware/fingerprint/FingerprintDialog.java +++ b/core/java/android/hardware/fingerprint/FingerprintDialog.java @@ -71,7 +71,7 @@ public class FingerprintDialog implements BiometricAuthenticator, BiometricFinge * after this amount of time. * @hide */ - public static final int HIDE_DIALOG_DELAY = 3000; // ms + public static final int HIDE_DIALOG_DELAY = 2000; // ms /** * @hide */ @@ -166,7 +166,9 @@ public class FingerprintDialog implements BiometricAuthenticator, BiometricFinge } /** - * Required: Set the text for the negative button. + * Required: Set the text for the negative button. This would typically be used as a + * "Cancel" button, but may be also used to show an alternative method for authentication, + * such as screen that asks for a backup password. * @param text * @return */ diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index 8048099ca73b..a19ba197ff52 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -1155,9 +1155,14 @@ public class FingerprintManager implements BiometricFingerprintConstants { @Override // binder call public void onError(long deviceId, int error, int vendorCode) { if (mExecutor != null) { - mExecutor.execute(() -> { - sendErrorResult(deviceId, error, vendorCode); - }); + // FingerprintDialog case, post a delayed runnable on the FingerprintManager handler + // that sends the error message after FingerprintDialog.HIDE_DIALOG_DELAY to send + // the error to the application. + mHandler.postDelayed(() -> { + mExecutor.execute(() -> { + sendErrorResult(deviceId, error, vendorCode); + }); + }, FingerprintDialog.HIDE_DIALOG_DELAY); } else { mHandler.obtainMessage(MSG_ERROR, error, vendorCode, deviceId).sendToTarget(); } diff --git a/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java b/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java index ebdc70339d22..05906f707db4 100644 --- a/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java +++ b/packages/SystemUI/src/com/android/systemui/fingerprint/FingerprintDialogView.java @@ -55,7 +55,8 @@ public class FingerprintDialogView extends LinearLayout { private static final String TAG = "FingerprintDialogView"; - private static final int ANIMATION_DURATION = 250; // ms + private static final int ANIMATION_DURATION_SHOW = 250; // ms + private static final int ANIMATION_DURATION_AWAY = 350; // ms private static final int STATE_NONE = 0; private static final int STATE_FINGERPRINT = 1; @@ -164,8 +165,23 @@ public class FingerprintDialogView extends LinearLayout { title.setText(mBundle.getCharSequence(FingerprintDialog.KEY_TITLE)); title.setSelected(true); - subtitle.setText(mBundle.getCharSequence(FingerprintDialog.KEY_SUBTITLE)); - description.setText(mBundle.getCharSequence(FingerprintDialog.KEY_DESCRIPTION)); + + final CharSequence subtitleText = mBundle.getCharSequence(FingerprintDialog.KEY_SUBTITLE); + if (subtitleText == null) { + subtitle.setVisibility(View.GONE); + } else { + subtitle.setVisibility(View.VISIBLE); + subtitle.setText(subtitleText); + } + + final CharSequence descriptionText = mBundle.getCharSequence(FingerprintDialog.KEY_DESCRIPTION); + if (descriptionText == null) { + subtitle.setVisibility(View.VISIBLE); + description.setVisibility(View.GONE); + } else { + description.setText(mBundle.getCharSequence(FingerprintDialog.KEY_DESCRIPTION)); + } + negative.setText(mBundle.getCharSequence(FingerprintDialog.KEY_NEGATIVE_TEXT)); final CharSequence positiveText = @@ -185,13 +201,13 @@ public class FingerprintDialogView extends LinearLayout { public void run() { mLayout.animate() .alpha(1f) - .setDuration(ANIMATION_DURATION) + .setDuration(ANIMATION_DURATION_SHOW) .setInterpolator(mLinearOutSlowIn) .withLayer() .start(); mDialog.animate() .translationY(0) - .setDuration(ANIMATION_DURATION) + .setDuration(ANIMATION_DURATION_SHOW) .setInterpolator(mLinearOutSlowIn) .withLayer() .start(); @@ -221,13 +237,13 @@ public class FingerprintDialogView extends LinearLayout { public void run() { mLayout.animate() .alpha(0f) - .setDuration(ANIMATION_DURATION) + .setDuration(ANIMATION_DURATION_AWAY) .setInterpolator(mLinearOutSlowIn) .withLayer() .start(); mDialog.animate() .translationY(mAnimationTranslationOffset) - .setDuration(ANIMATION_DURATION) + .setDuration(ANIMATION_DURATION_AWAY) .setInterpolator(mLinearOutSlowIn) .withLayer() .withEndAction(endActionRunnable) diff --git a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java index a52dd0bc6caf..644e0a81016a 100644 --- a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java +++ b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java @@ -54,7 +54,7 @@ public abstract class AuthenticationClient extends ClientMonitor { private final FingerprintManager mFingerprintManager; protected boolean mDialogDismissed; - // Receives events from SystemUI + // Receives events from SystemUI and handles them before forwarding them to FingerprintDialog protected IFingerprintDialogReceiver mDialogReceiver = new IFingerprintDialogReceiver.Stub() { @Override // binder call public void onDialogDismissed(int reason) { |