diff options
| -rw-r--r-- | core/java/android/view/ViewConfiguration.java | 18 | ||||
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 17 |
2 files changed, 30 insertions, 5 deletions
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 574137b30f1e..45008627e019 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -84,12 +84,17 @@ public class ViewConfiguration { /** * Defines the duration in milliseconds a user needs to hold down the - * appropriate button to bring up the accessibility shortcut (first time) or enable it - * (once shortcut is configured). + * appropriate button to bring up the accessibility shortcut for the first time */ private static final int A11Y_SHORTCUT_KEY_TIMEOUT = 3000; /** + * Defines the duration in milliseconds a user needs to hold down the + * appropriate button to enable the accessibility shortcut once it's configured. + */ + private static final int A11Y_SHORTCUT_KEY_TIMEOUT_AFTER_CONFIRMATION = 1500; + + /** * Defines the duration in milliseconds we will wait to see if a touch event * is a tap or a scroll. If the user does not move within this interval, it is * considered to be a tap. @@ -851,6 +856,15 @@ public class ViewConfiguration { } /** + * @return The amount of time a user needs to press the relevant keys to activate the + * accessibility shortcut after it's confirmed that accessibility shortcut is used. + * @hide + */ + public long getAccessibilityShortcutKeyTimeoutAfterConfirmation() { + return A11Y_SHORTCUT_KEY_TIMEOUT_AFTER_CONFIRMATION; + } + + /** * The amount of friction applied to scrolls and flings. * * @return A scalar dimensionless value representing the coefficient of diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index ceb0ad07e72c..6520dc94072f 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -1654,11 +1654,23 @@ public class PhoneWindowManager implements WindowManagerPolicy { mScreenshotChordVolumeDownKeyConsumed = true; mA11yShortcutChordVolumeUpKeyConsumed = true; mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_ACCESSIBILITY_SHORTCUT), - ViewConfiguration.get(mContext).getAccessibilityShortcutKeyTimeout()); + getAccessibilityShortcutTimeout()); } } } + private long getAccessibilityShortcutTimeout() { + ViewConfiguration config = ViewConfiguration.get(mContext); + try { + return Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, mCurrentUserId) == 0 + ? config.getAccessibilityShortcutKeyTimeout() + : config.getAccessibilityShortcutKeyTimeoutAfterConfirmation(); + } catch (Settings.SettingNotFoundException e) { + throw new RuntimeException(e); + } + } + private long getScreenshotChordLongPressDelay() { if (mKeyguardDelegate.isShowing()) { // Double the time it takes to take a screenshot from the keyguard @@ -3866,8 +3878,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mAccessibilityTvScheduled = true; Message msg = Message.obtain(mHandler, MSG_ACCESSIBILITY_TV); msg.setAsynchronous(true); - mHandler.sendMessageDelayed(msg, - ViewConfiguration.get(mContext).getAccessibilityShortcutKeyTimeout()); + mHandler.sendMessageDelayed(msg, getAccessibilityShortcutTimeout()); } } else if (mAccessibilityTvScheduled) { mHandler.removeMessages(MSG_ACCESSIBILITY_TV); |