Merge "Fix ACTION_VOLUME_CHANGED behavior" into tm-qpr-dev

This commit is contained in:
Jean-Michel Trivi
2022-11-23 16:15:21 +00:00
committed by Android (Google) Code Review

View File

@@ -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,