AudioService: fix CTS verifier for stream mute

When changing volume, only change the mute state when the
device for which the volume is being changed, is the current
device the stream alias is routed to.

Bug: 264013194
Test: CTS Verifier Ringer Mode Tests
Change-Id: I45e54db86dbfd8a8cbb307e74f7452cf6bbfaf58
This commit is contained in:
Jean-Michel Trivi
2023-01-11 04:44:24 +00:00
parent ac576e7ee4
commit 99e86bf9bd

View File

@@ -3603,9 +3603,11 @@ public class AudioService extends IAudioService.Stub
setRingerMode(getNewRingerMode(stream, index, flags),
TAG + ".onSetStreamVolume", false /*external*/);
}
// setting non-zero volume for a muted stream unmutes the stream and vice versa,
// setting non-zero volume for a muted stream unmutes the stream and vice versa
// (only when changing volume for the current device),
// except for BT SCO stream where only explicit mute is allowed to comply to BT requirements
if (streamType != AudioSystem.STREAM_BLUETOOTH_SCO) {
if ((streamType != AudioSystem.STREAM_BLUETOOTH_SCO)
&& (getDeviceForStream(stream) == device)) {
mStreamStates[stream].mute(index == 0);
}
}