diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
index e22b37d13328f..0566d32160fc0 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java
@@ -83,12 +83,6 @@ public class HdmiCecConfig {
})
private @interface ValueType {}
- /**
- * System property key for Audio Mode Muting.
- */
- public static final String SYSPROP_SYSTEM_AUDIO_MODE_MUTING =
- "ro.hdmi.cec.audio.system_audio_mode_muting.enabled";
-
@NonNull private final Context mContext;
@NonNull private final StorageAdapter mStorageAdapter;
@Nullable private final CecSettings mSystemConfig;
@@ -264,7 +258,7 @@ public class HdmiCecConfig {
case HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST:
return STORAGE_SHARED_PREFS;
case HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING:
- return STORAGE_SYSPROPS;
+ return STORAGE_SHARED_PREFS;
default:
throw new RuntimeException("Invalid CEC setting '" + setting.getName()
+ "' storage.");
@@ -282,7 +276,7 @@ public class HdmiCecConfig {
case HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST:
return setting.getName();
case HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING:
- return SYSPROP_SYSTEM_AUDIO_MODE_MUTING;
+ return setting.getName();
default:
throw new RuntimeException("Invalid CEC setting '" + setting.getName()
+ "' storage key.");
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 4110de6fee909..46b09dc07e61a 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -778,11 +778,14 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
switchToAudioInput();
}
// Mute device when feature is turned off and unmute device when feature is turned on.
- // PROPERTY_SYSTEM_AUDIO_MODE_MUTING_ENABLE is false when device never needs to be muted.
+ // CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING is false when device never needs to be muted.
+ boolean systemAudioModeMutingEnabled = mService.getHdmiCecConfig().getIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING)
+ == HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_ENABLED;
boolean currentMuteStatus =
mService.getAudioManager().isStreamMute(AudioManager.STREAM_MUSIC);
if (currentMuteStatus == newSystemAudioMode) {
- if (HdmiProperties.system_audio_mode_muting().orElse(true) || newSystemAudioMode) {
+ if (systemAudioModeMutingEnabled || newSystemAudioMode) {
mService.getAudioManager()
.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
@@ -806,7 +809,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
// Audio Mode is off even without terminating the ARC. This can stop the current
// audio device from playing audio when system audio mode is off.
if (mArcIntentUsed
- && !HdmiProperties.system_audio_mode_muting().orElse(true)
+ && !systemAudioModeMutingEnabled
&& !newSystemAudioMode
&& getLocalActivePort() == Constants.CEC_SWITCH_ARC) {
routeToInputFromPortId(getRoutingPort());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java
index a7f6b82fae10e..227e8c76987f8 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java
@@ -68,6 +68,15 @@ final class FakeHdmiCecConfig extends HdmiCecConfig {
+ " "
+ " "
+ " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ + " "
+ "";
FakeHdmiCecConfig(@NonNull Context context) {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
index 596faee46eb75..d10e075c51360 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java
@@ -750,9 +750,9 @@ public final class HdmiCecConfigTest {
}
@Test
- public void getIntValue_SystemProperty_BasicSanity() {
- when(mStorageAdapter.retrieveSystemProperty(
- HdmiCecConfig.SYSPROP_SYSTEM_AUDIO_MODE_MUTING,
+ public void getIntValue_SharedPref_BasicSanity() {
+ when(mStorageAdapter.retrieveSharedPref(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
Integer.toString(HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_ENABLED)))
.thenReturn(Integer.toString(HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED));
HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
@@ -997,7 +997,7 @@ public final class HdmiCecConfigTest {
}
@Test
- public void setIntValue_SystemProperty_BasicSanity() {
+ public void setIntValue_SharedPref_BasicSanity() {
HdmiCecConfig hdmiCecConfig = HdmiCecConfig.createFromStrings(
mContext, mStorageAdapter,
""
@@ -1015,8 +1015,8 @@ public final class HdmiCecConfigTest {
hdmiCecConfig.setIntValue(
HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED);
- verify(mStorageAdapter).storeSystemProperty(
- HdmiCecConfig.SYSPROP_SYSTEM_AUDIO_MODE_MUTING,
+ verify(mStorageAdapter).storeSharedPref(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
Integer.toString(HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED));
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index 25530940e9648..3fd3ce3cd0df2 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -27,6 +27,7 @@ import static com.android.server.hdmi.HdmiControlService.STANDBY_SCREEN_OFF;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.hdmi.HdmiPortInfo;
import android.hardware.hdmi.IHdmiControlCallback;
@@ -451,6 +452,39 @@ public class HdmiCecLocalDeviceAudioSystemTest {
.isTrue();
}
+ @Test
+ public void systemAudioModeMuting_enabled() {
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
+ HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_ENABLED);
+ mHdmiCecLocalDeviceAudioSystem.checkSupportAndSetSystemAudioMode(true);
+ assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isTrue();
+ assertThat(mHdmiControlService.getAudioManager().isStreamMute(
+ AudioManager.STREAM_MUSIC)).isFalse();
+ mHdmiCecLocalDeviceAudioSystem.checkSupportAndSetSystemAudioMode(false);
+ assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isFalse();
+ assertThat(mHdmiControlService.getAudioManager().isStreamMute(
+ AudioManager.STREAM_MUSIC)).isTrue();
+ }
+
+ @Test
+ public void systemAudioModeMuting_disabled() {
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
+ HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_DISABLED);
+ mHdmiCecLocalDeviceAudioSystem.checkSupportAndSetSystemAudioMode(true);
+ assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isTrue();
+ assertThat(mHdmiControlService.getAudioManager().isStreamMute(
+ AudioManager.STREAM_MUSIC)).isFalse();
+ mHdmiCecLocalDeviceAudioSystem.checkSupportAndSetSystemAudioMode(false);
+ assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isFalse();
+ assertThat(mHdmiControlService.getAudioManager().isStreamMute(
+ AudioManager.STREAM_MUSIC)).isFalse();
+ mHdmiControlService.getHdmiCecConfig().setIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_MODE_MUTING,
+ HdmiControlManager.SYSTEM_AUDIO_MODE_MUTING_ENABLED);
+ }
+
@Test
public void terminateSystemAudioMode_systemAudioModeOff() throws Exception {
mHdmiCecLocalDeviceAudioSystem.checkSupportAndSetSystemAudioMode(false);