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

Commit d50b929a authored by Jason Hsu's avatar Jason Hsu Committed by Automerger Merge Worker
Browse files

Merge "Fix hearing aid appears wrong side after device reboot." into...

Merge "Fix hearing aid appears wrong side after device reboot." into tm-qpr-dev am: bf7c555c am: 7b083c72

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19903185



Change-Id: I670bb5dc4dc1d801e92f520ea90695dc4ba1fe9a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 227261d9 7b083c72
Loading
Loading
Loading
Loading
+36 −5
Original line number Diff line number Diff line
@@ -46,16 +46,43 @@ public class HearingAidDeviceManager {
        if (isValidHiSyncId(hiSyncId)) {
            // Once hiSyncId is valid, assign hiSyncId
            newDevice.setHiSyncId(hiSyncId);
            final int side = getDeviceSide(newDevice.getDevice());
            final int mode = getDeviceMode(newDevice.getDevice());
            newDevice.setDeviceSide(side);
            newDevice.setDeviceMode(mode);
        }
    }

    private long getHiSyncId(BluetoothDevice device) {
        LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
        HearingAidProfile profileProxy = profileManager.getHearingAidProfile();
        if (profileProxy != null) {
        final LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
        final HearingAidProfile profileProxy = profileManager.getHearingAidProfile();
        if (profileProxy == null) {
            return BluetoothHearingAid.HI_SYNC_ID_INVALID;
        }

        return profileProxy.getHiSyncId(device);
    }
        return BluetoothHearingAid.HI_SYNC_ID_INVALID;

    private int getDeviceSide(BluetoothDevice device) {
        final LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
        final HearingAidProfile profileProxy = profileManager.getHearingAidProfile();
        if (profileProxy == null) {
            Log.w(TAG, "HearingAidProfile is not supported and not ready to fetch device side");
            return HearingAidProfile.DeviceSide.SIDE_INVALID;
        }

        return profileProxy.getDeviceSide(device);
    }

    private int getDeviceMode(BluetoothDevice device) {
        final LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
        final HearingAidProfile profileProxy = profileManager.getHearingAidProfile();
        if (profileProxy == null) {
            Log.w(TAG, "HearingAidProfile is not supported and not ready to fetch device mode");
            return HearingAidProfile.DeviceMode.MODE_INVALID;
        }

        return profileProxy.getDeviceMode(device);
    }

    boolean setSubDeviceIfNeeded(CachedBluetoothDevice newDevice) {
@@ -98,6 +125,10 @@ public class HearingAidDeviceManager {
                if (isValidHiSyncId(newHiSyncId)) {
                    cachedDevice.setHiSyncId(newHiSyncId);
                    newSyncIdSet.add(newHiSyncId);
                    final int side = getDeviceSide(cachedDevice.getDevice());
                    final int mode = getDeviceMode(cachedDevice.getDevice());
                    cachedDevice.setDeviceSide(side);
                    cachedDevice.setDeviceMode(mode);
                }
            }
        }
+34 −2
Original line number Diff line number Diff line
@@ -102,16 +102,25 @@ public class HearingAidDeviceManagerTest {
    }

    /**
     * Test initHearingAidDeviceIfNeeded, a valid HiSyncId will be assigned
     * Test initHearingAidDeviceIfNeeded, set HearingAid's information, including HiSyncId,
     * deviceSide, deviceMode.
     */
    @Test
    public void initHearingAidDeviceIfNeeded_validHiSyncId_verifyHiSyncId() {
    public void initHearingAidDeviceIfNeeded_validHiSyncId_setHearingAidInfos() {
        when(mHearingAidProfile.getHiSyncId(mDevice1)).thenReturn(HISYNCID1);
        when(mHearingAidProfile.getDeviceMode(mDevice1)).thenReturn(
                HearingAidProfile.DeviceMode.MODE_BINAURAL);
        when(mHearingAidProfile.getDeviceSide(mDevice1)).thenReturn(
                HearingAidProfile.DeviceSide.SIDE_RIGHT);

        assertThat(mCachedDevice1.getHiSyncId()).isNotEqualTo(HISYNCID1);
        mHearingAidDeviceManager.initHearingAidDeviceIfNeeded(mCachedDevice1);

        assertThat(mCachedDevice1.getHiSyncId()).isEqualTo(HISYNCID1);
        assertThat(mCachedDevice1.getDeviceMode()).isEqualTo(
                HearingAidProfile.DeviceMode.MODE_BINAURAL);
        assertThat(mCachedDevice1.getDeviceSide()).isEqualTo(
                HearingAidProfile.DeviceSide.SIDE_RIGHT);
    }

    /**
@@ -250,6 +259,29 @@ public class HearingAidDeviceManagerTest {
        verify(mHearingAidDeviceManager, never()).onHiSyncIdChanged(anyLong());
    }

    /**
     * Test updateHearingAidsDevices, set HearingAid's information, including HiSyncId, deviceSide,
     * deviceMode.
     */
    @Test
    public void updateHearingAidsDevices_validHiSyncId_setHearingAidInfos() {
        when(mHearingAidProfile.getHiSyncId(mDevice1)).thenReturn(HISYNCID1);
        when(mHearingAidProfile.getDeviceMode(mDevice1)).thenReturn(
                HearingAidProfile.DeviceMode.MODE_BINAURAL);
        when(mHearingAidProfile.getDeviceSide(mDevice1)).thenReturn(
                HearingAidProfile.DeviceSide.SIDE_RIGHT);
        mCachedDeviceManager.mCachedDevices.add(mCachedDevice1);

        mHearingAidDeviceManager.updateHearingAidsDevices();

        assertThat(mCachedDevice1.getHiSyncId()).isEqualTo(HISYNCID1);
        assertThat(mCachedDevice1.getDeviceMode()).isEqualTo(
                HearingAidProfile.DeviceMode.MODE_BINAURAL);
        assertThat(mCachedDevice1.getDeviceSide()).isEqualTo(
                HearingAidProfile.DeviceSide.SIDE_RIGHT);
        verify(mHearingAidDeviceManager).onHiSyncIdChanged(HISYNCID1);
    }

    /**
     * Test onProfileConnectionStateChangedIfProcessed.
     * When first hearing aid device is connected, to process it same as other generic devices.