Loading core/java/android/hardware/hdmi/HdmiControlManager.java +14 −0 Original line number Diff line number Diff line Loading @@ -847,6 +847,20 @@ public final class HdmiControlManager { } } /** * Determines whether the HDMI CEC stack should handle KEYCODE_TV_POWER. * * @hide */ @RequiresPermission(android.Manifest.permission.HDMI_CEC) public boolean shouldHandleTvPowerKey() { try { return mService.shouldHandleTvPowerKey(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Controls whether volume control commands via HDMI CEC are enabled. * Loading core/java/android/hardware/hdmi/HdmiControlServiceWrapper.java +10 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,11 @@ public final class HdmiControlServiceWrapper { HdmiControlServiceWrapper.this.toggleAndFollowTvPower(); } @Override public boolean shouldHandleTvPowerKey() { return HdmiControlServiceWrapper.this.shouldHandleTvPowerKey(); } @Override public void queryDisplayStatus(IHdmiControlCallback callback) { HdmiControlServiceWrapper.this.queryDisplayStatus(callback); Loading Loading @@ -367,6 +372,11 @@ public final class HdmiControlServiceWrapper { /** @hide */ public void toggleAndFollowTvPower() {} /** @hide */ public boolean shouldHandleTvPowerKey() { return true; } /** @hide */ public void queryDisplayStatus(IHdmiControlCallback callback) {} Loading core/java/android/hardware/hdmi/IHdmiControlService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ interface IHdmiControlService { HdmiDeviceInfo getActiveSource(); void oneTouchPlay(IHdmiControlCallback callback); void toggleAndFollowTvPower(); boolean shouldHandleTvPowerKey(); void queryDisplayStatus(IHdmiControlCallback callback); void addHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener); void removeHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener); Loading core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ public class HdmiAudioSystemClientTest { public void toggleAndFollowTvPower() { } @Override public boolean shouldHandleTvPowerKey() { return false; } @Override public void queryDisplayStatus(final IHdmiControlCallback callback) { } Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +24 −0 Original line number Diff line number Diff line Loading @@ -1654,6 +1654,12 @@ public class HdmiControlService extends SystemService { }); } @Override public boolean shouldHandleTvPowerKey() { enforceAccessPermission(); return HdmiControlService.this.shouldHandleTvPowerKey(); } @Override public void queryDisplayStatus(final IHdmiControlCallback callback) { enforceAccessPermission(); Loading Loading @@ -2346,6 +2352,24 @@ public class HdmiControlService extends SystemService { source.toggleAndFollowTvPower(); } @VisibleForTesting protected boolean shouldHandleTvPowerKey() { if (isTvDevice()) { return false; } String powerControlMode = getHdmiCecConfig().getStringValue( HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE); if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_NONE)) { return false; } int hdmiCecEnabled = getHdmiCecConfig().getIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED); if (hdmiCecEnabled != HdmiControlManager.HDMI_CEC_CONTROL_ENABLED) { return false; } return true; } @ServiceThreadOnly protected void queryDisplayStatus(final IHdmiControlCallback callback) { assertRunOnServiceThread(); Loading Loading
core/java/android/hardware/hdmi/HdmiControlManager.java +14 −0 Original line number Diff line number Diff line Loading @@ -847,6 +847,20 @@ public final class HdmiControlManager { } } /** * Determines whether the HDMI CEC stack should handle KEYCODE_TV_POWER. * * @hide */ @RequiresPermission(android.Manifest.permission.HDMI_CEC) public boolean shouldHandleTvPowerKey() { try { return mService.shouldHandleTvPowerKey(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Controls whether volume control commands via HDMI CEC are enabled. * Loading
core/java/android/hardware/hdmi/HdmiControlServiceWrapper.java +10 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,11 @@ public final class HdmiControlServiceWrapper { HdmiControlServiceWrapper.this.toggleAndFollowTvPower(); } @Override public boolean shouldHandleTvPowerKey() { return HdmiControlServiceWrapper.this.shouldHandleTvPowerKey(); } @Override public void queryDisplayStatus(IHdmiControlCallback callback) { HdmiControlServiceWrapper.this.queryDisplayStatus(callback); Loading Loading @@ -367,6 +372,11 @@ public final class HdmiControlServiceWrapper { /** @hide */ public void toggleAndFollowTvPower() {} /** @hide */ public boolean shouldHandleTvPowerKey() { return true; } /** @hide */ public void queryDisplayStatus(IHdmiControlCallback callback) {} Loading
core/java/android/hardware/hdmi/IHdmiControlService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ interface IHdmiControlService { HdmiDeviceInfo getActiveSource(); void oneTouchPlay(IHdmiControlCallback callback); void toggleAndFollowTvPower(); boolean shouldHandleTvPowerKey(); void queryDisplayStatus(IHdmiControlCallback callback); void addHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener); void removeHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener); Loading
core/tests/hdmitests/src/android/hardware/hdmi/HdmiAudioSystemClientTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ public class HdmiAudioSystemClientTest { public void toggleAndFollowTvPower() { } @Override public boolean shouldHandleTvPowerKey() { return false; } @Override public void queryDisplayStatus(final IHdmiControlCallback callback) { } Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +24 −0 Original line number Diff line number Diff line Loading @@ -1654,6 +1654,12 @@ public class HdmiControlService extends SystemService { }); } @Override public boolean shouldHandleTvPowerKey() { enforceAccessPermission(); return HdmiControlService.this.shouldHandleTvPowerKey(); } @Override public void queryDisplayStatus(final IHdmiControlCallback callback) { enforceAccessPermission(); Loading Loading @@ -2346,6 +2352,24 @@ public class HdmiControlService extends SystemService { source.toggleAndFollowTvPower(); } @VisibleForTesting protected boolean shouldHandleTvPowerKey() { if (isTvDevice()) { return false; } String powerControlMode = getHdmiCecConfig().getStringValue( HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE); if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_NONE)) { return false; } int hdmiCecEnabled = getHdmiCecConfig().getIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED); if (hdmiCecEnabled != HdmiControlManager.HDMI_CEC_CONTROL_ENABLED) { return false; } return true; } @ServiceThreadOnly protected void queryDisplayStatus(final IHdmiControlCallback callback) { assertRunOnServiceThread(); Loading