diff options
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 5f15995687b7..77cf8f120112 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -8677,13 +8677,18 @@ public class AudioService extends IAudioService.Stub // fire changed intents for all streams, but only when the device it changed on // is the current device if ((index != oldIndex) && isCurrentDevice) { - 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]); - AudioService.sVolumeLogger.enqueue(new VolChangedBroadcastEvent( - mStreamType, mStreamVolumeAlias[mStreamType], index)); - sendBroadcastToAll(mVolumeChanged, mVolumeChangedOptions); + // for single volume devices, only send the volume change broadcast + // on the alias stream + if (!mIsSingleVolume || (mStreamVolumeAlias[mStreamType] == mStreamType)) { + 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]); + AudioService.sVolumeLogger.enqueue(new VolChangedBroadcastEvent( + mStreamType, mStreamVolumeAlias[mStreamType], index)); + sendBroadcastToAll(mVolumeChanged, mVolumeChangedOptions); + } } } return changed; |