diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/Constants.java | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 18 |
2 files changed, 22 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/hdmi/Constants.java b/services/core/java/com/android/server/hdmi/Constants.java index c235299e3a65..090d728aedc8 100644 --- a/services/core/java/com/android/server/hdmi/Constants.java +++ b/services/core/java/com/android/server/hdmi/Constants.java @@ -631,10 +631,14 @@ final class Constants { static final String DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX = "enable_earc_tx"; static final String DEVICE_CONFIG_FEATURE_FLAG_TRANSITION_ARC_TO_EARC_TX = "transition_arc_to_earc_tx"; + // Name is abbreviated slightly to avoid line length issues + static final String DEVICE_CONFIG_FEATURE_FLAG_TV_NUMERIC_SOUNDBAR_VOLUME_UI = + "enable_numeric_soundbar_volume_ui_on_tv"; @StringDef({ DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX, - DEVICE_CONFIG_FEATURE_FLAG_TRANSITION_ARC_TO_EARC_TX + DEVICE_CONFIG_FEATURE_FLAG_TRANSITION_ARC_TO_EARC_TX, + DEVICE_CONFIG_FEATURE_FLAG_TV_NUMERIC_SOUNDBAR_VOLUME_UI }) @interface FeatureFlag {} diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 9edab6da1a7e..e87ed0a32a97 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -458,6 +458,9 @@ public class HdmiControlService extends SystemService { private boolean mEarcTxFeatureFlagEnabled = false; @ServiceThreadOnly + private boolean mNumericSoundbarVolumeUiOnTvFeatureFlagEnabled = false; + + @ServiceThreadOnly private boolean mTransitionFromArcToEarcTxEnabled = false; @ServiceThreadOnly @@ -682,6 +685,8 @@ public class HdmiControlService extends SystemService { Constants.DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX, false); mTransitionFromArcToEarcTxEnabled = mDeviceConfig.getBoolean( Constants.DEVICE_CONFIG_FEATURE_FLAG_TRANSITION_ARC_TO_EARC_TX, false); + mNumericSoundbarVolumeUiOnTvFeatureFlagEnabled = mDeviceConfig.getBoolean( + Constants.DEVICE_CONFIG_FEATURE_FLAG_TV_NUMERIC_SOUNDBAR_VOLUME_UI, false); synchronized (mLock) { mEarcEnabled = (mHdmiCecConfig.getIntValue( @@ -901,6 +906,17 @@ public class HdmiControlService extends SystemService { false); } }); + + mDeviceConfig.addOnPropertiesChangedListener(getContext().getMainExecutor(), + new DeviceConfig.OnPropertiesChangedListener() { + @Override + public void onPropertiesChanged(DeviceConfig.Properties properties) { + mNumericSoundbarVolumeUiOnTvFeatureFlagEnabled = properties.getBoolean( + Constants.DEVICE_CONFIG_FEATURE_FLAG_TV_NUMERIC_SOUNDBAR_VOLUME_UI, + false); + checkAndUpdateAbsoluteVolumeBehavior(); + } + }); } /** Returns true if the device screen is off */ boolean isScreenOff() { @@ -4337,7 +4353,7 @@ public class HdmiControlService extends SystemService { case DeviceFeatures.FEATURE_NOT_SUPPORTED: // TVs may adopt adjust-only absolute volume behavior if condition 4 isn't met. // This allows the device to display numeric volume UI for the System Audio device. - if (tv() != null) { + if (tv() != null && mNumericSoundbarVolumeUiOnTvFeatureFlagEnabled) { if (currentVolumeBehavior != AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY) { // If we're currently using absolute volume behavior, switch to full volume |