diff options
| author | 2018-10-23 12:45:17 -0700 | |
|---|---|---|
| committer | 2019-01-15 14:00:29 -0800 | |
| commit | 79db52fbc634632a02f03511a72842660fc7a43c (patch) | |
| tree | fe61a23aec6a0543ae709cf68f6f946811697866 | |
| parent | 0c2e29fafe5961d25dc4cc87bd5b30d22ab3fa82 (diff) | |
Complete the HDMI_SYSTEM_AUDIO_CONTROL_ENABLED control logic in Audio
System device.
ag/5338944
Note that we should init system audio mode again when this property is
turned back on.
Test: local tested.
Bug: 118275908
Change-Id: I120801fdacedaea74d311064e6bf66d30992c8ba
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 22 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 3 |
2 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index cd0653f164e9..6ac8b54b4f10 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java @@ -89,12 +89,10 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { protected HdmiCecLocalDeviceAudioSystem(HdmiControlService service) { super(service, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); - mSystemAudioControlFeatureEnabled = true; - // TODO(amyjojo) make System Audio Control controllable by users - /*mSystemAudioControlFeatureEnabled = - mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true);*/ mRoutingControlFeatureEnabled = mService.readBooleanSetting(Global.HDMI_CEC_SWITCH_ENABLED, true); + mSystemAudioControlFeatureEnabled = + mService.readBooleanSetting(Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, true); // TODO(amyjojo): make the map ro property. mTvInputs.put(Constants.CEC_SWITCH_HDMI1, "com.droidlogic.tvinput/.services.Hdmi1InputService/HW5"); @@ -275,7 +273,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { int systemAudioOnPowerOnProp, boolean lastSystemAudioControlStatus) { if ((systemAudioOnPowerOnProp == ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON) || ((systemAudioOnPowerOnProp == USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON) - && lastSystemAudioControlStatus)) { + && lastSystemAudioControlStatus && isSystemAudioControlFeatureEnabled())) { addAndStartAction(new SystemAudioInitiationActionFromAvr(this)); } } @@ -408,8 +406,11 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { @ServiceThreadOnly protected boolean handleGiveAudioStatus(HdmiCecMessage message) { assertRunOnServiceThread(); - - reportAudioStatus(message.getSource()); + if (isSystemAudioControlFeatureEnabled()) { + reportAudioStatus(message.getSource()); + } else { + mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED); + } return true; } @@ -776,6 +777,13 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { HdmiLogger.debug("[A]UpdateSystemAudio mode[on=%b] output=[%X]", on, device); } + void onSystemAduioControlFeatureSupportChanged(boolean enabled) { + setSystemAudioControlFeatureEnabled(enabled); + if (enabled) { + addAndStartAction(new SystemAudioInitiationActionFromAvr(this)); + } + } + @ServiceThreadOnly void setSystemAudioControlFeatureEnabled(boolean enabled) { assertRunOnServiceThread(); diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index fcfb0664ea95..c291c1cde034 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -610,6 +610,9 @@ public class HdmiControlService extends SystemService { if (isTvDeviceEnabled()) { tv().setSystemAudioControlFeatureEnabled(enabled); } + if (isAudioSystemDevice()) { + audioSystem().onSystemAduioControlFeatureSupportChanged(enabled); + } break; case Global.HDMI_CEC_SWITCH_ENABLED: if (isAudioSystemDevice()) { |