summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecKeycode.java8
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java4
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);