summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/Constants.java6
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java18
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