diff options
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 53fcf3293525..4a01c61830d0 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3710,6 +3710,10 @@ public class AudioService extends IAudioService.Stub Objects.requireNonNull(vi); Objects.requireNonNull(ada); Objects.requireNonNull(callingPackage); + + AudioService.sVolumeLogger.loglogi("setDeviceVolume" + " from:" + callingPackage + " " + + vi + " " + ada, TAG); + if (!vi.hasStreamType()) { Log.e(TAG, "Unsupported non-stream type based VolumeInfo", new Exception()); return; @@ -7839,6 +7843,7 @@ public class AudioService extends IAudioService.Stub boolean hasModifyAudioSettings) { boolean changed; int oldIndex; + final boolean isCurrentDevice; synchronized (mSettingsLock) { synchronized (VolumeStreamState.class) { oldIndex = getIndex(device); @@ -7854,7 +7859,7 @@ public class AudioService extends IAudioService.Stub // - there is no volume index stored for this device on alias stream. // If changing volume of current device, also change volume of current // device on aliased stream - final boolean isCurrentDevice = (device == getDeviceForStream(mStreamType)); + isCurrentDevice = (device == getDeviceForStream(mStreamType)); final int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { final VolumeStreamState aliasStreamState = mStreamStates[streamType]; @@ -7894,8 +7899,9 @@ public class AudioService extends IAudioService.Stub EventLogTags.writeVolumeChanged(mStreamType, oldIndex, index, mIndexMax / 10, caller); } - // fire changed intents for all streams - if (index != oldIndex) { + // 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, |