AudioService: fix volume group mute

Make sure the volume applied to audio policy by a volume group follows
the mute state of the associated public stream if any.

Bug: 156559315
Test: repro steps in bug
Test: atest AudioManagerTest#testVolume
Test: atest AudioVolumeGroupTest

Change-Id: I95e96f3524b27600c59a2cf093cd3309430d28ca
This commit is contained in:
Eric Laurent
2020-06-11 15:49:07 -07:00
committed by Jean-Michel Trivi
parent c357f2cafd
commit b94b9c60f1

View File

@@ -5322,6 +5322,15 @@ public class AudioService extends IAudioService.Stub
}
private void setVolumeIndexInt(int index, int device, int flags) {
// Reflect mute state of corresponding stream by forcing index to 0 if muted
// Only set audio policy BT SCO stream volume to 0 when the stream is actually muted.
// This allows RX path muting by the audio HAL only when explicitly muted but not when
// index is just set to 0 to repect BT requirements
if (mStreamStates[mPublicStreamType].isFullyMuted()) {
index = 0;
} else if (mPublicStreamType == AudioSystem.STREAM_BLUETOOTH_SCO && index == 0) {
index = 1;
}
// Set the volume index
AudioSystem.setVolumeIndexForAttributes(mAudioAttributes, index, device);
}