Merge "DO NOT MERGE AudioService: setDeviceVolume no-op when for current device" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2023-02-08 21:03:04 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 6 deletions

View File

@@ -3831,8 +3831,15 @@ public class AudioService extends IAudioService.Stub
// VOLUME_CHANGED_ACTION intent to see if the current device is the one being modified // VOLUME_CHANGED_ACTION intent to see if the current device is the one being modified
final int currDev = getDeviceForStream(vi.getStreamType()); final int currDev = getDeviceForStream(vi.getStreamType());
final boolean skipping = (currDev == ada.getInternalType());
AudioService.sVolumeLogger.log(new DeviceVolumeEvent(vi.getStreamType(), index, ada, AudioService.sVolumeLogger.log(new DeviceVolumeEvent(vi.getStreamType(), index, ada,
currDev, callingPackage)); currDev, callingPackage, skipping));
if (skipping) {
// setDeviceVolume was called on a device currently being used
return;
}
// TODO handle unmuting of current audio device // TODO handle unmuting of current audio device
// if a stream is not muted but the VolumeInfo is for muting, set the volume index // if a stream is not muted but the VolumeInfo is for muting, set the volume index

View File

@@ -174,15 +174,17 @@ public class AudioServiceEvents {
final String mDeviceAddress; final String mDeviceAddress;
final String mCaller; final String mCaller;
final int mDeviceForStream; final int mDeviceForStream;
final boolean mSkipped;
DeviceVolumeEvent(int streamType, int index, @NonNull AudioDeviceAttributes device, DeviceVolumeEvent(int streamType, int index, @NonNull AudioDeviceAttributes device,
int deviceForStream, String callingPackage) { int deviceForStream, String callingPackage, boolean skipped) {
mStream = streamType; mStream = streamType;
mVolIndex = index; mVolIndex = index;
mDeviceNativeType = "0x" + Integer.toHexString(device.getInternalType()); mDeviceNativeType = "0x" + Integer.toHexString(device.getInternalType());
mDeviceAddress = device.getAddress(); mDeviceAddress = device.getAddress();
mDeviceForStream = deviceForStream; mDeviceForStream = deviceForStream;
mCaller = callingPackage; mCaller = callingPackage;
mSkipped = skipped;
// log metrics // log metrics
new MediaMetrics.Item(MediaMetrics.Name.AUDIO_VOLUME_EVENT) new MediaMetrics.Item(MediaMetrics.Name.AUDIO_VOLUME_EVENT)
.set(MediaMetrics.Property.EVENT, "setDeviceVolume") .set(MediaMetrics.Property.EVENT, "setDeviceVolume")
@@ -197,14 +199,18 @@ public class AudioServiceEvents {
@Override @Override
public String eventToString() { public String eventToString() {
return new StringBuilder("setDeviceVolume(stream:") final StringBuilder sb = new StringBuilder("setDeviceVolume(stream:")
.append(AudioSystem.streamToString(mStream)) .append(AudioSystem.streamToString(mStream))
.append(" index:").append(mVolIndex) .append(" index:").append(mVolIndex)
.append(" device:").append(mDeviceNativeType) .append(" device:").append(mDeviceNativeType)
.append(" addr:").append(mDeviceAddress) .append(" addr:").append(mDeviceAddress)
.append(") from ").append(mCaller) .append(") from ").append(mCaller);
.append(" currDevForStream:Ox").append(Integer.toHexString(mDeviceForStream)) if (mSkipped) {
.toString(); sb.append(" skipped [device in use]");
} else {
sb.append(" currDevForStream:Ox").append(Integer.toHexString(mDeviceForStream));
}
return sb.toString();
} }
} }