From 736d5f0d8132bf67466b13c2e881050606c21a4f Mon Sep 17 00:00:00 2001 From: Nathalie Le Clair Date: Tue, 9 Nov 2021 17:02:34 +0100 Subject: [PATCH] Turn on TV when pressing power or wake key during boot Applies to HDMI-CEC playback devices only. Boot isn't always triggered by the user and therefore shouldn't turn on an HDMI-connected TV. However, if a power or wake key is pressed during boot, there is a clear user intention to use the Android device. This CL makes the playback device turn on the connected TV in that situation. Test: atest PowerManagerServiceTest and atest com.android.server.hdmi Bug: 183691245 Change-Id: I53e54d72a5c7fa54d27d743d80bad4644e897d2b --- .../android/server/policy/PhoneWindowManager.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index ea3ef650f1930..f75e9d0dcdc00 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3479,13 +3479,23 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!mSystemBooted) { // If we have not yet booted, don't let key events do anything. // Exception: Wake and power key events are forwarded to PowerManager to allow it to - // wake from quiescent mode during boot. + // wake from quiescent mode during boot. On these key events we also explicitly turn on + // the connected TV and switch HDMI input if we're a HDMI playback device. + boolean shouldTurnOnTv = false; if (down && (keyCode == KeyEvent.KEYCODE_POWER || keyCode == KeyEvent.KEYCODE_TV_POWER)) { wakeUpFromPowerKey(event.getDownTime()); + shouldTurnOnTv = true; } else if (down && (isWakeKey || keyCode == KeyEvent.KEYCODE_WAKEUP) && isWakeKeyWhenScreenOff(keyCode)) { wakeUpFromWakeKey(event); + shouldTurnOnTv = true; + } + if (shouldTurnOnTv) { + final HdmiControl hdmiControl = getHdmiControl(); + if (hdmiControl != null) { + hdmiControl.turnOnTv(); + } } return 0; }