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

Commit 09592d52 authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Set Hearing Aid volume after connection

Hearing Aid don't remember last volume level, they must be reminded what
the volume was right after connection.

Bug: 69623109
Test: connect Hearing Aid, play music
Change-Id: Ifa0bd31a49950a14837a6d1a26d5eb6a8ec554f5
parent 8cf1ae49
Loading
Loading
Loading
Loading
+18 −20
Original line number Diff line number Diff line
@@ -1649,16 +1649,7 @@ public class AudioService extends IAudioService.Stub

            // Check if volume update should be send to Hearing Aid
            if ((device & AudioSystem.DEVICE_OUT_HEARING_AID) != 0) {
                synchronized (mHearingAidLock) {
                    if (mHearingAid != null) {
                        //hearing aid expect volume value in range -128dB to 0dB
                        int gainDB = (int)AudioSystem.getStreamVolumeDB(streamType, newIndex/10,
                                AudioSystem.DEVICE_OUT_HEARING_AID);
                        if (gainDB < BT_HEARING_AID_GAIN_MIN)
                            gainDB = BT_HEARING_AID_GAIN_MIN;
                        mHearingAid.setVolume(gainDB);
                    }
                }
                setHearingAidVolume(newIndex);
            }

            // Check if volume update should be sent to Hdmi system audio.
@@ -1907,16 +1898,7 @@ public class AudioService extends IAudioService.Stub
            }

            if ((device & AudioSystem.DEVICE_OUT_HEARING_AID) != 0) {
                synchronized (mHearingAidLock) {
                    if (mHearingAid != null) {
                        //hearing aid expect volume value in range -128dB to 0dB
                        int gainDB = (int)AudioSystem.getStreamVolumeDB(streamType, index/10, AudioSystem.DEVICE_OUT_HEARING_AID);
                        if (gainDB < BT_HEARING_AID_GAIN_MIN)
                            gainDB = BT_HEARING_AID_GAIN_MIN;
                        mHearingAid.setVolume(gainDB);

                    }
                }
                setHearingAidVolume(index);
            }

            if (streamTypeAlias == AudioSystem.STREAM_MUSIC) {
@@ -5624,8 +5606,24 @@ public class AudioService extends IAudioService.Stub
                makeDeviceListKey(AudioSystem.DEVICE_IN_BLUETOOTH_A2DP, address));
    }

    private void setHearingAidVolume(int index) {
        synchronized (mHearingAidLock) {
            if (mHearingAid != null) {
                //hearing aid expect volume value in range -128dB to 0dB
                int gainDB = (int)AudioSystem.getStreamVolumeDB(AudioSystem.STREAM_MUSIC, index/10,
                        AudioSystem.DEVICE_OUT_HEARING_AID);
                if (gainDB < BT_HEARING_AID_GAIN_MIN)
                    gainDB = BT_HEARING_AID_GAIN_MIN;
                mHearingAid.setVolume(gainDB);
            }
        }
    }

    // must be called synchronized on mConnectedDevices
    private void makeHearingAidDeviceAvailable(String address, String name, String eventSource) {
        int index = mStreamStates[AudioSystem.STREAM_MUSIC].getIndex(AudioSystem.DEVICE_OUT_HEARING_AID);
        setHearingAidVolume(index);

        AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_HEARING_AID,
                AudioSystem.DEVICE_STATE_AVAILABLE, address, name);
        mConnectedDevices.put(