Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f9a85dd authored by Vlad Popa's avatar Vlad Popa
Browse files

Refactor the avrcp update on bt contextual volume change

Test: repro steps in bug
Bug: 379009970
Flag: EXEMPT bugfix
Change-Id: I8726da84f86268a0429ee8bc111bbb0920e8af81
parent 01cec45f
Loading
Loading
Loading
Loading
+11 −16
Original line number Diff line number Diff line
@@ -4951,31 +4951,24 @@ public class AudioService extends IAudioService.Stub
        }
        final Set<Integer> deviceTypes = getDeviceSetForStreamDirect(streamType);
        Set<Integer> absVolumeDeviceTypes = new ArraySet<>(
                AudioSystem.DEVICE_OUT_ALL_A2DP_SET);
        absVolumeDeviceTypes.addAll(mAbsVolumeMultiModeCaseDevices);
        final Set<Integer> a2dpDevices = AudioSystem.intersectionAudioDeviceTypes(
                AudioSystem.DEVICE_OUT_ALL_A2DP_SET, deviceTypes);
        if (!a2dpDevices.isEmpty()) {
            int index = getStreamVolume(streamType,
                    a2dpDevices.toArray(new Integer[0])[0].intValue());
            mDeviceBroker.postSetAvrcpAbsoluteVolumeIndex(index);
        }
        final Set<Integer> absVolumeMultiModeCaseDevices =
                AudioSystem.intersectionAudioDeviceTypes(
                        mAbsVolumeMultiModeCaseDevices, deviceTypes);
        if (absVolumeMultiModeCaseDevices.isEmpty()) {
        final Set<Integer> absVolumeDevices =
                AudioSystem.intersectionAudioDeviceTypes(absVolumeDeviceTypes, deviceTypes);
        if (absVolumeDevices.isEmpty()) {
            return;
        }
        if (absVolumeMultiModeCaseDevices.size() > 1) {
        if (absVolumeDevices.size() > 1) {
            Log.w(TAG, "onUpdateContextualVolumes too many active devices: "
                    + absVolumeMultiModeCaseDevices.stream().map(AudioSystem::getOutputDeviceName)
                    + absVolumeDevices.stream().map(AudioSystem::getOutputDeviceName)
                        .collect(Collectors.joining(","))
                    + ", for stream: " + streamType);
            return;
        }
        final int device = absVolumeMultiModeCaseDevices.toArray(new Integer[0])[0].intValue();
        final int device = absVolumeDevices.toArray(new Integer[0])[0].intValue();
        final int index = getStreamVolume(streamType, device);
        if (DEBUG_VOL) {
@@ -4989,6 +4982,8 @@ public class AudioService extends IAudioService.Stub
                    getVssForStreamOrDefault(streamType).getMaxIndex(), streamType);
        } else if (device == AudioSystem.DEVICE_OUT_HEARING_AID) {
            mDeviceBroker.postSetHearingAidVolumeIndex(index * 10, streamType);
        } else if (AudioSystem.DEVICE_OUT_ALL_A2DP_SET.contains(device)) {
            mDeviceBroker.postSetAvrcpAbsoluteVolumeIndex(index);
        } else {
            return;
        }