From 544b62bb863788727587ee292596451e461fc0a7 Mon Sep 17 00:00:00 2001 From: Jinsuk Kim Date: Mon, 14 Jul 2014 14:01:23 +0900 Subject: [PATCH] Apply hdmi control options to operation Use the flag mAudioDeviceOff/mAutoWakeup to conditionally perform the operation Change-Id: I1595d8a64170d5047e621491a09279e04e3b4302 --- .../server/hdmi/HdmiCecLocalDeviceTv.java | 21 +++++++++++++++---- .../server/hdmi/HdmiControlService.java | 1 - 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 44b0f28ebb99e..f75bdabc2f557 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -89,9 +89,15 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { // If true, TV going to standby mode puts other devices also to standby. private boolean mAutoDeviceOff; + // If true, TV wakes itself up when receiving . + private boolean mAutoWakeup; + HdmiCecLocalDeviceTv(HdmiControlService service) { super(service, HdmiCecDeviceInfo.DEVICE_TV); mPrevPortId = Constants.INVALID_PORT_ID; + mAutoDeviceOff = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, + true); + mAutoWakeup = mService.readBooleanSetting(Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, true); } @Override @@ -121,8 +127,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly protected void setPreferredAddress(int addr) { assertRunOnServiceThread(); - SystemProperties.set(Constants.PROPERTY_PREFERRED_ADDRESS_TV, - String.valueOf(addr)); + SystemProperties.set(Constants.PROPERTY_PREFERRED_ADDRESS_TV, String.valueOf(addr)); } private void registerAudioPortUpdateListener() { @@ -491,7 +496,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleTextViewOn(HdmiCecMessage message) { assertRunOnServiceThread(); - if (mService.isPowerStandbyOrTransient()) { + if (mService.isPowerStandbyOrTransient() && mAutoWakeup) { mService.wakeUp(); } // TODO: Connect to Hardware input manager to invoke TV App with the appropriate channel @@ -1115,6 +1120,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { void setAutoDeviceOff(boolean enabled) { assertRunOnServiceThread(); mAutoDeviceOff = enabled; + mService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, enabled); + } + + @ServiceThreadOnly + void setAutoWakeup(boolean enabled) { + assertRunOnServiceThread(); + mAutoWakeup = enabled; + mService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, enabled); } @Override @@ -1176,7 +1189,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!mService.isControlEnabled()) { return; } - if (!initiatedByCec) { + if (!initiatedByCec && mAutoDeviceOff) { mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby( mAddress, Constants.ADDR_BROADCAST)); } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index a9a391bf367dd..7db5f0cc336aa 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -44,7 +44,6 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemClock; import android.provider.Settings.Global; -import android.provider.Settings.SettingNotFoundException; import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray;