Merge changes I5989a67e,I30a77bd6 into sc-dev
* changes: Announce UDPFS enrollment percentage Update UDFPS fingerprint enrollment
This commit is contained in:
@@ -1013,13 +1013,15 @@
|
|||||||
<!-- Introduction title shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=29] -->
|
<!-- Introduction title shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=29] -->
|
||||||
<string name="security_settings_fingerprint_enroll_find_sensor_title">Touch the sensor</string>
|
<string name="security_settings_fingerprint_enroll_find_sensor_title">Touch the sensor</string>
|
||||||
<!-- Introduction title shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=60] -->
|
<!-- Introduction title shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=60] -->
|
||||||
<string name="security_settings_udfps_enroll_find_sensor_title">Touch & hold the fingerprint icon</string>
|
<string name="security_settings_udfps_enroll_find_sensor_title">How to set up your fingerprint</string>
|
||||||
<!-- Message shown in fingerprint enrollment dialog to locate the sensor -->
|
<!-- Message shown in fingerprint enrollment dialog to locate the sensor -->
|
||||||
<string name="security_settings_fingerprint_enroll_find_sensor_message">It\u2019s on the back of your phone. Use your index finger.</string>
|
<string name="security_settings_fingerprint_enroll_find_sensor_message">It\u2019s on the back of your phone. Use your index finger.</string>
|
||||||
<!-- Message shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=NONE]-->
|
<!-- Message shown in fingerprint enrollment dialog to locate the sensor [CHAR LIMIT=NONE]-->
|
||||||
<string name="security_settings_udfps_enroll_find_sensor_message">The fingerprint sensor is on your screen</string>
|
<string name="security_settings_udfps_enroll_find_sensor_message">The fingerprint sensor is on your screen. You\u2019ll capture your fingerprint on the next screen.</string>
|
||||||
|
<!-- Button for starting fingerprint enrollment. [CHAR LIMIT=10]-->
|
||||||
|
<string name="security_settings_udfps_enroll_find_sensor_start_button">Start</string>
|
||||||
<!-- Message announced to a11y users during fingerprint enrollment to help them locate the sensor. [CHAR LIMIT=NONE] -->
|
<!-- Message announced to a11y users during fingerprint enrollment to help them locate the sensor. [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_udfps_enroll_find_sensor_a11y">The fingerprint sensor is on your screen. Move your finger across the screen to find the sensor.</string>
|
<string name="security_settings_udfps_enroll_a11y">Move your finger across the screen to find the sensor. Touch & hold the fingerprint sensor.</string>
|
||||||
<!-- Content description of graphic that shows where the fingerprint of the device is [CHAR LIMIT=NONE] -->
|
<!-- Content description of graphic that shows where the fingerprint of the device is [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_fingerprint_enroll_find_sensor_content_description">Illustration with device and fingerprint sensor location</string>
|
<string name="security_settings_fingerprint_enroll_find_sensor_content_description">Illustration with device and fingerprint sensor location</string>
|
||||||
<!-- Label text shown in fingerprint dialog for renaming a fingerprint template [CHAR LIMIT=22] -->
|
<!-- Label text shown in fingerprint dialog for renaming a fingerprint template [CHAR LIMIT=22] -->
|
||||||
@@ -1033,7 +1035,9 @@
|
|||||||
<!-- Message shown in fingerprint enrollment dialog to begin enrollment [CHAR LIMIT=NONE] -->
|
<!-- Message shown in fingerprint enrollment dialog to begin enrollment [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_fingerprint_enroll_start_message">Put your finger on the sensor and lift after you feel a vibration</string>
|
<string name="security_settings_fingerprint_enroll_start_message">Put your finger on the sensor and lift after you feel a vibration</string>
|
||||||
<!-- Message shown in fingerprint enrollment dialog to begin enrollment [CHAR LIMIT=NONE] -->
|
<!-- Message shown in fingerprint enrollment dialog to begin enrollment [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_udfps_enroll_start_message">Keep your finger on the icon until you feel a vibration</string>
|
<string name="security_settings_udfps_enroll_start_message">Keep your finger on the sensor until you feel a vibration</string>
|
||||||
|
<!-- Title shown in fingerprint enrollment [CHAR LIMIT=NONE]-->
|
||||||
|
<string name="security_settings_fingerprint_enroll_udfps_title">Touch & hold the fingerprint sensor</string>
|
||||||
<!-- Title shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=40] -->
|
<!-- Title shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=40] -->
|
||||||
<string name="security_settings_fingerprint_enroll_repeat_title">Lift, then touch again</string>
|
<string name="security_settings_fingerprint_enroll_repeat_title">Lift, then touch again</string>
|
||||||
<!-- Title shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=40] -->
|
<!-- Title shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=40] -->
|
||||||
@@ -1043,7 +1047,11 @@
|
|||||||
<!-- Message shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=NONE] -->
|
<!-- Message shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_fingerprint_enroll_repeat_message">Keep lifting your finger to add the different parts of your fingerprint</string>
|
<string name="security_settings_fingerprint_enroll_repeat_message">Keep lifting your finger to add the different parts of your fingerprint</string>
|
||||||
<!-- Message shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=NONE] -->
|
<!-- Message shown in fingerprint enrollment dialog to repeat touching the fingerprint sensor [CHAR LIMIT=NONE] -->
|
||||||
<string name="security_settings_udfps_enroll_repeat_message">Touch & hold each time the icon moves. This helps capture your full fingerprint.</string>
|
<string name="security_settings_udfps_enroll_repeat_message">Touch & hold each time the fingerprint icon moves. This helps capture your full fingerprint.</string>
|
||||||
|
<!-- Message shown in fingerprint enrollment asking users to repeat touching the fingerprint sensor.-->
|
||||||
|
<string name="security_settings_udfps_enroll_repeat_a11y_message">This helps capture your full fingerprint</string>
|
||||||
|
<!-- Message read to a11y users when enrollment progress is made. The number is from 0 to 100. [CHAR LIMIT=NONE]-->
|
||||||
|
<string name="security_settings_udfps_enroll_progress_a11y_message">Enrolling fingerprint <xliff:g id="percentage" example="10">%d</xliff:g> percent</string>
|
||||||
<!-- Title shown in fingerprint enrollment dialog once enrollment is completed [CHAR LIMIT=29] -->
|
<!-- Title shown in fingerprint enrollment dialog once enrollment is completed [CHAR LIMIT=29] -->
|
||||||
<string name="security_settings_fingerprint_enroll_finish_title">Fingerprint added</string>
|
<string name="security_settings_fingerprint_enroll_finish_title">Fingerprint added</string>
|
||||||
<!-- Message shown in fingerprint enrollment dialog once enrollment is completed -->
|
<!-- Message shown in fingerprint enrollment dialog once enrollment is completed -->
|
||||||
|
@@ -170,21 +170,29 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity {
|
|||||||
layoutTitle.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
|
layoutTitle.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
|
||||||
}
|
}
|
||||||
getLayout().setHeaderText(title);
|
getLayout().setHeaderText(title);
|
||||||
|
getLayout().getHeaderTextView().setContentDescription(title);
|
||||||
setTitle(title);
|
setTitle(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setHeaderText(int resId) {
|
protected void setHeaderText(int resId) {
|
||||||
setHeaderText(resId, false /* force */);
|
setHeaderText(resId, false /* force */);
|
||||||
|
getLayout().getHeaderTextView().setContentDescription(getText(resId));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setHeaderText(CharSequence title) {
|
protected void setHeaderText(CharSequence title) {
|
||||||
getLayout().setHeaderText(title);
|
getLayout().setHeaderText(title);
|
||||||
|
getLayout().getHeaderTextView().setContentDescription(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setDescriptionText(int resId) {
|
protected void setDescriptionText(int resId) {
|
||||||
|
CharSequence previousDescription = getLayout().getDescriptionText();
|
||||||
|
CharSequence description = getString(resId);
|
||||||
|
// Prevent a11y for re-reading the same string
|
||||||
|
if (!TextUtils.equals(previousDescription, description)) {
|
||||||
getLayout().setDescriptionText(resId);
|
getLayout().setDescriptionText(resId);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void setDescriptionText(CharSequence descriptionText) {
|
protected void setDescriptionText(CharSequence descriptionText) {
|
||||||
getLayout().setDescriptionText(descriptionText);
|
getLayout().setDescriptionText(descriptionText);
|
||||||
|
@@ -37,6 +37,8 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
@@ -111,6 +113,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
private boolean mRestoring;
|
private boolean mRestoring;
|
||||||
private Vibrator mVibrator;
|
private Vibrator mVibrator;
|
||||||
private boolean mIsSetupWizard;
|
private boolean mIsSetupWizard;
|
||||||
|
private AccessibilityManager mAccessibilityManager;
|
||||||
|
private boolean mIsAccessibilityEnabled;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -121,6 +125,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
fingerprintManager.getSensorPropertiesInternal();
|
fingerprintManager.getSensorPropertiesInternal();
|
||||||
mCanAssumeUdfps = props.size() == 1 && props.get(0).isAnyUdfpsType();
|
mCanAssumeUdfps = props.size() == 1 && props.get(0).isAnyUdfpsType();
|
||||||
|
|
||||||
|
mAccessibilityManager = getSystemService(AccessibilityManager.class);
|
||||||
|
mIsAccessibilityEnabled = mAccessibilityManager.isEnabled();
|
||||||
|
|
||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
if (BiometricUtils.isReverseLandscape(getApplicationContext())) {
|
if (BiometricUtils.isReverseLandscape(getApplicationContext())) {
|
||||||
setContentView(R.layout.udfps_enroll_enrolling_land);
|
setContentView(R.layout.udfps_enroll_enrolling_land);
|
||||||
@@ -134,8 +141,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mIsSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
|
mIsSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
|
||||||
if (mCanAssumeUdfps && !mIsSetupWizard) {
|
if (mCanAssumeUdfps) {
|
||||||
setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title);
|
updateTitleAndDescription();
|
||||||
} else {
|
} else {
|
||||||
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
||||||
}
|
}
|
||||||
@@ -282,7 +289,18 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
private void updateTitleAndDescription() {
|
private void updateTitleAndDescription() {
|
||||||
if (mSidecar == null || mSidecar.getEnrollmentSteps() == -1) {
|
if (mSidecar == null || mSidecar.getEnrollmentSteps() == -1) {
|
||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
|
// setHeaderText(R.string.security_settings_fingerprint_enroll_udfps_title);
|
||||||
|
// Don't use BiometricEnrollBase#setHeaderText, since that invokes setTitle,
|
||||||
|
// which gets announced for a11y upon entering the page. For UDFPS, we want to
|
||||||
|
// announce a different string for a11y upon entering the page.
|
||||||
|
getLayout().setHeaderText(
|
||||||
|
R.string.security_settings_fingerprint_enroll_udfps_title);
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
||||||
|
|
||||||
|
final CharSequence description = getString(
|
||||||
|
R.string.security_settings_udfps_enroll_a11y);
|
||||||
|
getLayout().getHeaderTextView().setContentDescription(description);
|
||||||
|
setTitle(description);
|
||||||
} else {
|
} else {
|
||||||
setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message);
|
setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message);
|
||||||
}
|
}
|
||||||
@@ -295,8 +313,12 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
setDescriptionText(R.string.security_settings_udfps_enroll_start_message);
|
||||||
} else {
|
} else {
|
||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
setHeaderText(R.string.security_settings_udfps_enroll_repeat_title_touch_icon);
|
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
||||||
|
if (mIsAccessibilityEnabled) {
|
||||||
|
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_a11y_message);
|
||||||
|
} else {
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_message);
|
setDescriptionText(R.string.security_settings_udfps_enroll_repeat_message);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setDescriptionText(R.string.security_settings_fingerprint_enroll_repeat_message);
|
setDescriptionText(R.string.security_settings_fingerprint_enroll_repeat_message);
|
||||||
}
|
}
|
||||||
@@ -339,6 +361,18 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
if (!mCanAssumeUdfps) {
|
if (!mCanAssumeUdfps) {
|
||||||
mErrorText.removeCallbacks(mTouchAgainRunnable);
|
mErrorText.removeCallbacks(mTouchAgainRunnable);
|
||||||
mErrorText.postDelayed(mTouchAgainRunnable, HINT_TIMEOUT_DURATION);
|
mErrorText.postDelayed(mTouchAgainRunnable, HINT_TIMEOUT_DURATION);
|
||||||
|
} else {
|
||||||
|
if (mIsAccessibilityEnabled) {
|
||||||
|
final int percent = (int) (((float)(steps - remaining) / (float) steps) * 100);
|
||||||
|
CharSequence cs = getString(
|
||||||
|
R.string.security_settings_udfps_enroll_progress_a11y_message, percent);
|
||||||
|
AccessibilityEvent e = AccessibilityEvent.obtain();
|
||||||
|
e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
|
||||||
|
e.setClassName(getClass().getName());
|
||||||
|
e.setPackageName(getPackageName());
|
||||||
|
e.getText().add(cs);
|
||||||
|
mAccessibilityManager.sendAccessibilityEvent(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
||||||
mFooterBarMixin.setSecondaryButton(
|
mFooterBarMixin.setSecondaryButton(
|
||||||
new FooterButton.Builder(this)
|
new FooterButton.Builder(this)
|
||||||
.setText(R.string.skip_label)
|
.setText(R.string.security_settings_fingerprint_enroll_enrolling_skip)
|
||||||
.setListener(this::onSkipButtonClick)
|
.setListener(this::onSkipButtonClick)
|
||||||
.setButtonType(FooterButton.ButtonType.SKIP)
|
.setButtonType(FooterButton.ButtonType.SKIP)
|
||||||
.setTheme(R.style.SudGlifButton_Secondary)
|
.setTheme(R.style.SudGlifButton_Secondary)
|
||||||
@@ -72,8 +72,14 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title);
|
setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title);
|
||||||
setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message);
|
setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message);
|
||||||
final CharSequence description = getString(R.string.security_settings_udfps_enroll_find_sensor_a11y);
|
mFooterBarMixin.setPrimaryButton(
|
||||||
getLayout().getDescriptionTextView().setContentDescription(description);
|
new FooterButton.Builder(this)
|
||||||
|
.setText(R.string.security_settings_udfps_enroll_find_sensor_start_button)
|
||||||
|
.setListener(this::onStartButtonClick)
|
||||||
|
.setButtonType(FooterButton.ButtonType.NEXT)
|
||||||
|
.setTheme(R.style.SudGlifButton_Primary)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
|
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
|
||||||
setDescriptionText(R.string.security_settings_fingerprint_enroll_find_sensor_message);
|
setDescriptionText(R.string.security_settings_fingerprint_enroll_find_sensor_message);
|
||||||
@@ -148,6 +154,11 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startLookingForFingerprint() {
|
private void startLookingForFingerprint() {
|
||||||
|
if (mCanAssumeUdfps) {
|
||||||
|
// UDFPS devices use this screen as an educational screen. Users should tap the
|
||||||
|
// "Start" button to move to the next screen to begin enrollment.
|
||||||
|
return;
|
||||||
|
}
|
||||||
mSidecar = (FingerprintEnrollSidecar) getSupportFragmentManager().findFragmentByTag(
|
mSidecar = (FingerprintEnrollSidecar) getSupportFragmentManager().findFragmentByTag(
|
||||||
FingerprintEnrollEnrolling.TAG_SIDECAR);
|
FingerprintEnrollEnrolling.TAG_SIDECAR);
|
||||||
if (mSidecar == null) {
|
if (mSidecar == null) {
|
||||||
@@ -201,6 +212,10 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onStartButtonClick(View view) {
|
||||||
|
startActivityForResult(getFingerprintEnrollingIntent(), ENROLL_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
protected void onSkipButtonClick(View view) {
|
protected void onSkipButtonClick(View view) {
|
||||||
stopLookingForFingerprint();
|
stopLookingForFingerprint();
|
||||||
setResult(RESULT_SKIP);
|
setResult(RESULT_SKIP);
|
||||||
|
Reference in New Issue
Block a user