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

Commit 7ea873b0 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Jakub Pawłowski
Browse files

AudioService: conditional logging of hearing aid volume

To avoid confusion when reading audio dumpsys, do not log
hearing aid volume changes when a DEVICE_OUT_HEARING_AID is
not connected.

Bug: 236983951
Test: adb shell dumpsys audio | grep HEARING_AID
Merged-In: I36f39e88e11f4e8ed644b54bfb15308f08a3d698
Change-Id: I36f39e88e11f4e8ed644b54bfb15308f08a3d698
parent a4d60be7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1323,7 +1323,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: {
+16 −0
Original line number Diff line number Diff line
@@ -1159,6 +1159,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) {
+7 −3
Original line number Diff line number Diff line
@@ -423,7 +423,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");
@@ -440,8 +441,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);
    }