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

Commit 0075e993 authored by Jack He's avatar Jack He Committed by Gerrit Code Review
Browse files

Merge "LeAudio: Fix volume control"

parents cac091ce 51d75fbc
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2376,6 +2376,14 @@ public class AudioSystem
        return types.size() == 1 && types.contains(type);
    }

    /**
     * @hide
     * Return true if the audio device type is a Bluetooth LE Audio device.
     */
    public static boolean isLeAudioDeviceType(int type) {
        return DEVICE_OUT_ALL_BLE_SET.contains(type);
    }

    /** @hide */
    public static final int DEFAULT_MUTE_STREAMS_AFFECTED =
            (1 << STREAM_MUSIC) |
+11 −8
Original line number Diff line number Diff line
@@ -3243,8 +3243,7 @@ public class AudioService extends IAudioService.Stub
                dispatchAbsoluteVolumeChanged(streamType, info, newIndex);
            }

            if ((device == AudioSystem.DEVICE_OUT_BLE_HEADSET
                    || device == AudioSystem.DEVICE_OUT_BLE_BROADCAST)
            if (AudioSystem.isLeAudioDeviceType(device)
                    && streamType == getBluetoothContextualVolumeStream()
                    && (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
                if (DEBUG_VOL) {
@@ -3937,8 +3936,7 @@ public class AudioService extends IAudioService.Stub
                dispatchAbsoluteVolumeChanged(streamType, info, index);
            }

            if ((device == AudioSystem.DEVICE_OUT_BLE_HEADSET
                    || device == AudioSystem.DEVICE_OUT_BLE_BROADCAST)
            if (AudioSystem.isLeAudioDeviceType(device)
                    && streamType == getBluetoothContextualVolumeStream()
                    && (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) == 0) {
                if (DEBUG_VOL) {
@@ -6776,7 +6774,8 @@ public class AudioService extends IAudioService.Stub
            return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE_MULTI_MODE;
        }
        if (isAbsoluteVolumeDevice(audioSystemDeviceOut)
                || isA2dpAbsoluteVolumeDevice(audioSystemDeviceOut)) {
                || isA2dpAbsoluteVolumeDevice(audioSystemDeviceOut)
                || AudioSystem.isLeAudioDeviceType(audioSystemDeviceOut)) {
            return AudioManager.DEVICE_VOLUME_BEHAVIOR_ABSOLUTE;
        }
        return AudioManager.DEVICE_VOLUME_BEHAVIOR_VARIABLE;
@@ -7543,7 +7542,9 @@ public class AudioService extends IAudioService.Stub
            int index;
            if (isFullyMuted()) {
                index = 0;
            } else if (isAbsoluteVolumeDevice(device) || isA2dpAbsoluteVolumeDevice(device)) {
            } else if (isAbsoluteVolumeDevice(device)
                    || isA2dpAbsoluteVolumeDevice(device)
                    || AudioSystem.isLeAudioDeviceType(device)) {
                index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
            } else if (isFullVolumeDevice(device)) {
                index = (mIndexMax + 5)/10;
@@ -7565,7 +7566,8 @@ public class AudioService extends IAudioService.Stub
                        if (isFullyMuted()) {
                            index = 0;
                        } else if (isAbsoluteVolumeDevice(device)
                                || isA2dpAbsoluteVolumeDevice(device)) {
                                || isA2dpAbsoluteVolumeDevice(device)
                                || AudioSystem.isLeAudioDeviceType(device)) {
                            index = getAbsoluteVolumeIndex((getIndex(device) + 5)/10);
                        } else if (isFullVolumeDevice(device)) {
                            index = (mIndexMax + 5)/10;
@@ -7986,7 +7988,8 @@ public class AudioService extends IAudioService.Stub
                    int streamDevice = getDeviceForStream(streamType);
                    if ((device != streamDevice)
                            && (isAbsoluteVolumeDevice(device)
                            || isA2dpAbsoluteVolumeDevice(device))) {
                                || isA2dpAbsoluteVolumeDevice(device)
                                || AudioSystem.isLeAudioDeviceType(device))) {
                        mStreamStates[streamType].applyDeviceVolume_syncVSS(device);
                    }
                    mStreamStates[streamType].applyDeviceVolume_syncVSS(streamDevice);
+1 −1
Original line number Diff line number Diff line
@@ -394,7 +394,7 @@ public class AudioServiceEvents {
                case VOL_SET_LE_AUDIO_VOL:
                    return new StringBuilder("setLeAudioVolume:")
                            .append(" index:").append(mVal1)
                            .append(" gain dB:").append(mVal2)
                            .append(" maxIndex:").append(mVal2)
                            .toString();
                case VOL_SET_AVRCP_VOL:
                    return new StringBuilder("setAvrcpVolume:")
+2 −3
Original line number Diff line number Diff line
@@ -410,9 +410,8 @@ public class BtHelper {
            }
            return;
        }
        /* leaudio expect volume value in range 0 to 255
         */
        int volume = (index * (BT_LE_AUDIO_MAX_VOL - BT_LE_AUDIO_MIN_VOL)) / maxIndex ;
        /* leaudio expect volume value in range 0 to 255 */
        int volume = (int) Math.round((double) index * BT_LE_AUDIO_MAX_VOL / maxIndex);

        if (AudioService.DEBUG_VOL) {
            Log.i(TAG, "setLeAudioVolume: calling mLeAudio.setVolume idx="