From 4fb3b602156d093c1082be88f2f016f3a791a978 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Tue, 13 Jan 2015 12:19:53 -0800 Subject: [PATCH] AudioService: handle stream mute by stream alias Handle stream mute/unmute requests at the stream alias level (like is done volume changes) to be consistent. E.g a request to mute/unmute a stream will affect all streams sharing the same alias for volume management. Bug: 18844550. Change-Id: Ie2e463c58df0371589150f0ebb9b36c38b14e1be --- media/java/android/media/AudioService.java | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 5b6ca29873553..f4c8986b74403 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -1511,9 +1511,11 @@ public class AudioService extends IAudioService.Stub { if (mUseFixedVolume) { return; } - + int streamAlias = mStreamVolumeAlias[streamType]; for (int stream = 0; stream < mStreamStates.length; stream++) { - if (!isStreamAffectedByMute(stream) || stream == streamType) continue; + if (!isStreamAffectedByMute(streamAlias) || streamAlias == mStreamVolumeAlias[stream]) { + continue; + } mStreamStates[stream].mute(cb, state); } } @@ -1526,17 +1528,21 @@ public class AudioService extends IAudioService.Stub { if (streamType == AudioManager.USE_DEFAULT_STREAM_TYPE) { streamType = getActiveStreamType(streamType); } - - if (isStreamAffectedByMute(streamType)) { - if (streamType == AudioSystem.STREAM_MUSIC) { + int streamAlias = mStreamVolumeAlias[streamType]; + if (isStreamAffectedByMute(streamAlias)) { + if (streamAlias == AudioSystem.STREAM_MUSIC) { setSystemAudioMute(state); } - mStreamStates[streamType].mute(cb, state); + for (int stream = 0; stream < mStreamStates.length; stream++) { + if (streamAlias == mStreamVolumeAlias[stream]) { + mStreamStates[stream].mute(cb, state); - Intent intent = new Intent(AudioManager.STREAM_MUTE_CHANGED_ACTION); - intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, streamType); - intent.putExtra(AudioManager.EXTRA_STREAM_VOLUME_MUTED, state); - sendBroadcastToAll(intent); + Intent intent = new Intent(AudioManager.STREAM_MUTE_CHANGED_ACTION); + intent.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, stream); + intent.putExtra(AudioManager.EXTRA_STREAM_VOLUME_MUTED, state); + sendBroadcastToAll(intent); + } + } } }