Merge "Implement KEYCODE_TV_POWER"

This commit is contained in:
Nathalie Le Clair
2021-01-11 12:20:12 +00:00
committed by Android (Google) Code Review
2 changed files with 33 additions and 2 deletions

View File

@@ -519,8 +519,13 @@ public class KeyEvent extends InputEvent implements Parcelable {
/** Key code constant: Settings key.
* Starts the system settings activity. */
public static final int KEYCODE_SETTINGS = 176;
/** Key code constant: TV power key.
* On TV remotes, toggles the power on a television screen. */
/**
* Key code constant: TV power key.
* On HDMI TV panel devices and Android TV devices that don't support HDMI, toggles the power
* state of the device.
* On HDMI source devices, toggles the power state of the HDMI-connected TV via HDMI-CEC and
* makes the source device follow this power state.
*/
public static final int KEYCODE_TV_POWER = 177;
/** Key code constant: TV input key.
* On TV remotes, switches the input on a television screen. */

View File

@@ -3686,6 +3686,32 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
}
case KeyEvent.KEYCODE_TV_POWER: {
result &= ~ACTION_PASS_TO_USER;
isWakeKey = false; // wake-up will be handled separately
HdmiControlManager hdmiControlManager = getHdmiControlManager();
if (hdmiControlManager != null && hdmiControlManager.shouldHandleTvPowerKey()) {
if (down) {
hdmiControlManager.toggleAndFollowTvPower();
}
} else if (mHasFeatureLeanback) {
KeyEvent fallbackEvent = KeyEvent.obtain(
event.getDownTime(), event.getEventTime(),
event.getAction(), KeyEvent.KEYCODE_POWER,
event.getRepeatCount(), event.getMetaState(),
event.getDeviceId(), event.getScanCode(),
event.getFlags(), event.getSource(), event.getDisplayId(), null);
if (down) {
interceptPowerKeyDown(fallbackEvent, interactive);
} else {
interceptPowerKeyUp(fallbackEvent, interactive, canceled);
}
}
// Ignore this key for any device that is not connected to a TV via HDMI and
// not an Android TV device.
break;
}
case KeyEvent.KEYCODE_POWER: {
EventLogTags.writeInterceptPower(
KeyEvent.actionToString(event.getAction()),