diff options
| author | 2017-05-04 00:12:52 +0000 | |
|---|---|---|
| committer | 2017-05-04 00:12:52 +0000 | |
| commit | c06a4c5a64f0c1969774d7763a839de768348d21 (patch) | |
| tree | b257ccc8ad9bb0e1e6921970c97900e002862d20 | |
| parent | bc5a379134efb7ddc4de10766afdab20fb370141 (diff) | |
| parent | 7c146c0a76157d049f999eb93d941b9a77596d1b (diff) | |
Merge "Accessibility shortcut on Android TV." into oc-dev am: 4fca7821fb
am: 7c146c0a76
Change-Id: I22e060ef3ea31ce3b17b5735003f61325a012f1d
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 42eebe14905a..cd8e2ebf81a7 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -780,6 +780,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean mBugreportTvKey2Pressed; private boolean mBugreportTvScheduled; + private boolean mAccessibilityTvKey1Pressed; + private boolean mAccessibilityTvKey2Pressed; + private boolean mAccessibilityTvScheduled; + /* The number of steps between min and max brightness */ private static final int BRIGHTNESS_STEPS = 10; @@ -824,6 +828,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private static final int MSG_BACK_DELAYED_PRESS = 20; private static final int MSG_ACCESSIBILITY_SHORTCUT = 21; private static final int MSG_BUGREPORT_TV = 22; + private static final int MSG_ACCESSIBILITY_TV = 23; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1; @@ -905,6 +910,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { case MSG_BUGREPORT_TV: takeBugreport(); break; + case MSG_ACCESSIBILITY_TV: + if (mAccessibilityShortcutController.isAccessibilityShortcutAvailable(false)) { + accessibilityShortcutActivated(); + } + break; } } } @@ -3319,6 +3329,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!down) { cancelPreloadRecentApps(); + if (mHasFeatureLeanback) { + // Clear flags + mAccessibilityTvKey2Pressed = down; + } + mHomePressed = false; if (mHomeConsumed) { mHomeConsumed = false; @@ -3373,6 +3388,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { preloadRecentApps(); } } else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) { + if (mHasFeatureLeanback) { + mAccessibilityTvKey2Pressed = down; + if (interceptAccessibilityGestureTv()) { + return -1; + } + } + if (!keyguardOn) { handleLongPressOnHome(event.getDeviceId()); } @@ -3532,6 +3554,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { return 0; } else if (mHasFeatureLeanback && interceptBugreportGestureTv(keyCode, down)) { return -1; + } else if (mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { + mAccessibilityTvKey1Pressed = down; + if (interceptAccessibilityGestureTv()) { + return -1; + } } // Toggle Caps Lock on META-ALT. @@ -3750,6 +3777,25 @@ public class PhoneWindowManager implements WindowManagerPolicy { return mBugreportTvScheduled; } + /** + * TV only: recognizes a remote control gesture as Accessibility shortcut. + * Shortcut: Long press (HOME + DPAD_CENTER) + */ + private boolean interceptAccessibilityGestureTv() { + if (mAccessibilityTvKey1Pressed && mAccessibilityTvKey2Pressed) { + if (!mAccessibilityTvScheduled) { + mAccessibilityTvScheduled = true; + Message msg = Message.obtain(mHandler, MSG_ACCESSIBILITY_TV); + msg.setAsynchronous(true); + mHandler.sendMessage(msg); + } + } else if (mAccessibilityTvScheduled) { + mHandler.removeMessages(MSG_ACCESSIBILITY_TV); + mAccessibilityTvScheduled = false; + } + return mAccessibilityTvScheduled; + } + private void takeBugreport() { if ("1".equals(SystemProperties.get("ro.debuggable")) || Settings.Global.getInt(mContext.getContentResolver(), @@ -8235,6 +8281,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mDemoHdmiRotation="); pw.print(mDemoHdmiRotation); pw.print(" mDemoHdmiRotationLock="); pw.println(mDemoHdmiRotationLock); pw.print(prefix); pw.print("mUndockedHdmiRotation="); pw.println(mUndockedHdmiRotation); + if (mHasFeatureLeanback) { + pw.print(prefix); + pw.print("mAccessibilityTvKey1Pressed="); pw.println(mAccessibilityTvKey1Pressed); + pw.print(prefix); + pw.print("mAccessibilityTvKey2Pressed="); pw.println(mAccessibilityTvKey2Pressed); + pw.print(prefix); + pw.print("mAccessibilityTvScheduled="); pw.println(mAccessibilityTvScheduled); + } mGlobalKeyManager.dump(prefix, pw); mStatusBarController.dump(pw, prefix); |