diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index f0f79735f61ee..65361656abafc 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -706,9 +706,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly void onNewAvrAdded(HdmiDeviceInfo avr) { assertRunOnServiceThread(); - if (getSystemAudioModeSetting()) { - addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); - } + addAndStartAction(new SystemAudioAutoInitiationAction(this, avr.getLogicalAddress())); if (isArcFeatureEnabled()) { startArcAction(true); } diff --git a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java index 50f8475cfa323..512d5378a64a2 100644 --- a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java +++ b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java @@ -71,19 +71,16 @@ final class SystemAudioAutoInitiationAction extends HdmiCecFeatureAction { } private void handleSystemAudioModeStatusMessage() { - // If the last setting is system audio, turn on system audio whatever AVR status is. - if (tv().getSystemAudioModeSetting()) { - if (canChangeSystemAudio()) { - addAndStartAction(new SystemAudioActionFromTv(tv(), mAvrAddress, true, null)); - } - } else { - // If the last setting is non-system audio, turn off system audio mode - // and update system audio status (volume or mute). - tv().setSystemAudioMode(false, true); - if (canChangeSystemAudio()) { - addAndStartAction(new SystemAudioStatusAction(tv(), mAvrAddress, null)); - } + if (!canChangeSystemAudio()) { + HdmiLogger.debug("Cannot change system audio mode in auto initiation action."); + finish(); + return; } + + boolean systemAudioModeSetting = tv().getSystemAudioModeSetting(); + // Update AVR's system audio mode regardless of AVR's status. + addAndStartAction(new SystemAudioActionFromTv(tv(), mAvrAddress, systemAudioModeSetting, + null)); finish(); }