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

Commit ddf6aa97 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "active_device_volume_level" into tm-qpr-dev

* changes:
  BleAudioVolume: Fix calculation for the activated device
  AudioService: conditional logging of hearing aid volume
parents 3348d719 0cc6f636
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1365,7 +1365,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
                    break;
                case MSG_II_SET_HEARING_AID_VOLUME:
                    synchronized (mDeviceStateLock) {
                        mBtHelper.setHearingAidVolume(msg.arg1, msg.arg2);
                        mBtHelper.setHearingAidVolume(msg.arg1, msg.arg2,
                                mDeviceInventory.isHearingAidConnected());
                    }
                    break;
                case MSG_II_SET_LE_AUDIO_OUT_VOLUME: {
+18 −1
Original line number Diff line number Diff line
@@ -377,7 +377,8 @@ public class AudioDeviceInventory {
                        makeLeAudioDeviceUnavailable(address, btInfo.mAudioSystemDevice);
                    } else if (switchToAvailable) {
                        makeLeAudioDeviceAvailable(address, BtHelper.getName(btInfo.mDevice),
                                streamType, btInfo.mVolume, btInfo.mAudioSystemDevice,
                                streamType, btInfo.mVolume == -1 ? -1 : btInfo.mVolume * 10,
                                btInfo.mAudioSystemDevice,
                                "onSetBtActiveDevice");
                    }
                    break;
@@ -1161,6 +1162,22 @@ public class AudioDeviceInventory {
                .record();
    }

    /**
     * Returns whether a device of type DEVICE_OUT_HEARING_AID is connected.
     * Visibility by APM plays no role
     * @return true if a DEVICE_OUT_HEARING_AID is connected, false otherwise.
     */
    boolean isHearingAidConnected() {
        synchronized (mDevicesLock) {
            for (DeviceInfo di : mConnectedDevices.values()) {
                if (di.mDeviceType == AudioSystem.DEVICE_OUT_HEARING_AID) {
                    return true;
                }
            }
            return false;
        }
    }

    @GuardedBy("mDevicesLock")
    private void makeLeAudioDeviceAvailable(String address, String name, int streamType,
            int volumeIndex, int device, String eventSource) {
+3 −4
Original line number Diff line number Diff line
@@ -4011,7 +4011,7 @@ public class AudioService extends IAudioService.Stub
        }
    }
    private void setLeAudioVolumeOnModeUpdate(int mode) {
    private void setLeAudioVolumeOnModeUpdate(int mode, int streamType, int device) {
        switch (mode) {
            case AudioSystem.MODE_IN_COMMUNICATION:
            case AudioSystem.MODE_IN_CALL:
@@ -4025,8 +4025,6 @@ public class AudioService extends IAudioService.Stub
                return;
        }
        int streamType = getBluetoothContextualVolumeStream(mode);
        // Currently, DEVICE_OUT_BLE_HEADSET is the only output type for LE_AUDIO profile.
        // (See AudioDeviceBroker#createBtDeviceInfo())
        int index = mStreamStates[streamType].getIndex(AudioSystem.DEVICE_OUT_BLE_HEADSET);
@@ -4037,6 +4035,7 @@ public class AudioService extends IAudioService.Stub
                    + index + " maxIndex=" + maxIndex + " streamType=" + streamType);
        }
        mDeviceBroker.postSetLeAudioVolumeIndex(index, maxIndex, streamType);
        mDeviceBroker.postApplyVolumeOnDevice(streamType, device, "setLeAudioVolumeOnModeUpdate");
    }
    private void setStreamVolume(int streamType, int index, int flags,
@@ -5417,7 +5416,7 @@ public class AudioService extends IAudioService.Stub
                // Forcefully set LE audio volume as a workaround, since the value of 'device'
                // is not DEVICE_OUT_BLE_* even when BLE is connected.
                setLeAudioVolumeOnModeUpdate(mode);
                setLeAudioVolumeOnModeUpdate(mode, streamType, device);
                // when entering RINGTONE, IN_CALL or IN_COMMUNICATION mode, clear all SCO
                // connections not started by the application changing the mode when pid changes
+7 −3
Original line number Diff line number Diff line
@@ -424,7 +424,8 @@ public class BtHelper {
        mLeAudio.setVolume(volume);
    }

    /*package*/ synchronized void setHearingAidVolume(int index, int streamType) {
    /*package*/ synchronized void setHearingAidVolume(int index, int streamType,
            boolean isHeadAidConnected) {
        if (mHearingAid == null) {
            if (AudioService.DEBUG_VOL) {
                Log.i(TAG, "setHearingAidVolume: null mHearingAid");
@@ -441,8 +442,11 @@ public class BtHelper {
            Log.i(TAG, "setHearingAidVolume: calling mHearingAid.setVolume idx="
                    + index + " gain=" + gainDB);
        }
        // do not log when hearing aid is not connected to avoid confusion when reading dumpsys
        if (isHeadAidConnected) {
            AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent(
                    AudioServiceEvents.VolumeEvent.VOL_SET_HEARING_AID_VOL, index, gainDB));
        }
        mHearingAid.setVolume(gainDB);
    }