From bfe6dcf3fc7e531e0634b96dadea73830a75ba30 Mon Sep 17 00:00:00 2001 From: Bingyu Zhang Date: Wed, 25 Apr 2018 10:20:36 -0700 Subject: [PATCH] Accessibility change when Trusted Face icon shows. When unlocking device, if Trusted Face is on, "Scanning face" should be automatically announced. Also change the contentDescription for face icon, then when clicking the face icon, instead of "unlock button", "Scanning face" will be talked back. Test: manual Bug:74328543 Change-Id: I94f9faa45bf5f6f7ceaf7df5acab0a970f651395 --- packages/SystemUI/res/values/strings.xml | 2 ++ .../android/systemui/statusbar/phone/LockIcon.java | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index d82b00c316a83..0e42d0a23f45f 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -240,6 +240,8 @@ Waiting for fingerprint Unlock without using your fingerprint + + Scanning face Send diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index 264f5749fa735..4b66ee5aa68ed 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -55,6 +55,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange private final UnlockMethodCache mUnlockMethodCache; private AccessibilityController mAccessibilityController; private boolean mHasFingerPrintIcon; + private boolean mHasFaceUnlockIcon; private int mDensity; private final Runnable mDrawOffTimeout = () -> update(true /* forceUpdate */); @@ -130,6 +131,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange } int state = getState(); boolean anyFingerprintIcon = state == STATE_FINGERPRINT || state == STATE_FINGERPRINT_ERROR; + mHasFaceUnlockIcon = state == STATE_FACE_UNLOCK; boolean useAdditionalPadding = anyFingerprintIcon; boolean trustHidden = anyFingerprintIcon; if (state != mLastState || mDeviceInteractive != mLastDeviceInteractive @@ -179,6 +181,11 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange setRestingAlpha( anyFingerprintIcon ? 1f : KeyguardAffordanceHelper.SWIPE_RESTING_ALPHA_AMOUNT); setImageDrawable(icon, false); + if (mHasFaceUnlockIcon) { + announceForAccessibility(getContext().getString( + R.string.accessibility_scanning_face)); + } + mHasFingerPrintIcon = anyFingerprintIcon; if (animation != null && isAnim) { animation.forceAnimationOnUI(); @@ -228,6 +235,11 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange info.addAction(unlock); info.setHintText(getContext().getString( R.string.accessibility_waiting_for_fingerprint)); + } else if (mHasFaceUnlockIcon){ + //Avoid 'button' to be spoken for scanning face + info.setClassName(LockIcon.class.getName()); + info.setContentDescription(getContext().getString( + R.string.accessibility_scanning_face)); } }