commit | b64c2ba05bf64bb8015444fdcd706fa3238cb96c | [log] [tgz] |
---|---|---|
author | Dongil Seo <seo@google.com> | Tue Aug 26 19:41:39 2014 +0900 |
committer | Dongil Seo <seo@google.com> | Wed Aug 27 10:21:20 2014 +0900 |
tree | 0c08420b3254b726784c48d9ba7b3f75d41205ea | |
parent | b79a70ab7177386ec1c3a2c83fe2ded4cf040fb9 [diff] |
Fix a bug that the HdmiCecLocalDeviceTv sends <User Control Released> message for unsupported keys Bug: 17170954 Change-Id: I0ad624eb3a1301b24865228164d8dd5a97452329
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java b/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java index aed5dcc..61c9424 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java
@@ -394,4 +394,12 @@ } return false; } + + /** + * Returns {@code true} if given Android keycode is supported, otherwise {@code false}. + */ + static boolean isSupportedKeycode(int androidKeycode) { + return HdmiCecKeycode.androidKeyToCecKey(androidKeycode) + != HdmiCecKeycode.UNSUPPORTED_KEYCODE; + } }
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 935714c..ae10633 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -343,6 +343,10 @@ @ServiceThreadOnly protected void sendKeyEvent(int keyCode, boolean isPressed) { assertRunOnServiceThread(); + if (!HdmiCecKeycode.isSupportedKeycode(keyCode)) { + Slog.w(TAG, "Unsupported key: " + keyCode); + return; + } List<SendKeyAction> action = getActions(SendKeyAction.class); if (!action.isEmpty()) { action.get(0).processKeyEvent(keyCode, isPressed);