Merge "Improve reliability of soundbar volume UI on TVs." into udc-dev

This commit is contained in:
Yan Han
2023-05-15 09:01:41 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 11 deletions

View File

@@ -1013,11 +1013,10 @@ abstract class HdmiCecLocalDevice extends HdmiLocalDevice {
}
@ServiceThreadOnly
void addAvbAudioStatusAction(int targetAddress) {
void startNewAvbAudioStatusAction(int targetAddress) {
assertRunOnServiceThread();
if (!hasAction(AbsoluteVolumeAudioStatusAction.class)) {
addAndStartAction(new AbsoluteVolumeAudioStatusAction(this, targetAddress));
}
removeAction(AbsoluteVolumeAudioStatusAction.class);
addAndStartAction(new AbsoluteVolumeAudioStatusAction(this, targetAddress));
}
@ServiceThreadOnly

View File

@@ -4341,12 +4341,9 @@ public class HdmiControlService extends SystemService {
switch (systemAudioDeviceInfo.getDeviceFeatures().getSetAudioVolumeLevelSupport()) {
case DeviceFeatures.FEATURE_SUPPORTED:
if (currentVolumeBehavior != AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE) {
// If we're currently using adjust-only absolute volume behavior, switch to
// full volume behavior until we successfully adopt absolute volume behavior
switchToFullVolumeBehavior();
// Start an action that will call enableAbsoluteVolumeBehavior
// once the System Audio device sends <Report Audio Status>
localCecDevice.addAvbAudioStatusAction(
localCecDevice.startNewAvbAudioStatusAction(
systemAudioDeviceInfo.getLogicalAddress());
}
return;
@@ -4358,10 +4355,13 @@ public class HdmiControlService extends SystemService {
!= AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_ADJUST_ONLY) {
// If we're currently using absolute volume behavior, switch to full volume
// behavior until we successfully adopt adjust-only absolute volume behavior
switchToFullVolumeBehavior();
if (currentVolumeBehavior == AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE) {
getAudioManager().setDeviceVolumeBehavior(getAvbAudioOutputDevice(),
AudioManager.DEVICE_VOLUME_BEHAVIOR_FULL);
}
// Start an action that will call enableAbsoluteVolumeBehavior
// once the System Audio device sends <Report Audio Status>
localCecDevice.addAvbAudioStatusAction(
localCecDevice.startNewAvbAudioStatusAction(
systemAudioDeviceInfo.getLogicalAddress());
}
} else {
@@ -4369,7 +4369,9 @@ public class HdmiControlService extends SystemService {
}
return;
case DeviceFeatures.FEATURE_SUPPORT_UNKNOWN:
switchToFullVolumeBehavior();
if (currentVolumeBehavior == AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE) {
switchToFullVolumeBehavior();
}
localCecDevice.querySetAudioVolumeLevelSupport(
systemAudioDeviceInfo.getLogicalAddress());
}