From a8728c993e71d4158ef88210dfc175ea508b9af5 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 31 Jul 2020 11:59:25 -0700 Subject: [PATCH] AudioService: suppress superfluous volume changed intents Do not broadcast VOLUME_CHANGED_ACTION intent if the externally visible volume index does not change: this can happen on aliased streams when the internal volume index changes but the externally visible index (divided by 10) does not change due to rounding. Bug: 156835211 Test: verify intent broacasts in activity manager manually. Change-Id: I98f25d175ada39fe1d2bc4f7d008f20a5d29ef16 --- .../java/com/android/server/audio/AudioService.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 2d77d6f8add81..8ebb6068e695a 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -5855,11 +5855,13 @@ public class AudioService extends IAudioService.Stub caller); } // fire changed intents for all streams - mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, index); - mVolumeChanged.putExtra(AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, oldIndex); - mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE_ALIAS, - mStreamVolumeAlias[mStreamType]); - sendBroadcastToAll(mVolumeChanged); + if (index != oldIndex) { + mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, index); + mVolumeChanged.putExtra(AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, oldIndex); + mVolumeChanged.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE_ALIAS, + mStreamVolumeAlias[mStreamType]); + sendBroadcastToAll(mVolumeChanged); + } } return changed; }