diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 2963e2b2f1bb4..c6ff8a084d125 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; }