diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecKeycode.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java b/services/core/java/com/android/server/hdmi/HdmiCecKeycode.java index aed5dcc56581..61c94247b599 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 @@ final class HdmiCecKeycode { } 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 10a47d8d5393..1ee4c6c62c00 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -342,6 +342,10 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @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); |