diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 9a85f952446bf..a702ce517f404 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -1557,6 +1557,18 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!connected) { removeCecSwitches(portId); } + + // Turning System Audio Mode off when the AVR is unlugged or standby. + // When the device is not unplugged but reawaken from standby, we check if the System + // Audio Control Feature is enabled or not then decide if turning SAM on/off accordingly. + if (getAvrDeviceInfo() != null && portId == getAvrDeviceInfo().getPortId()) { + if (!connected) { + setSystemAudioMode(false); + } else if (mSystemAudioControlFeatureEnabled != mService.isSystemAudioActivated()){ + setSystemAudioMode(mSystemAudioControlFeatureEnabled); + } + } + // Tv device will have permanent HotplugDetectionAction. List hotplugActions = getActions(HotplugDetectionAction.class); if (!hotplugActions.isEmpty()) {