summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Hsu <jasonwshsu@google.com> 2022-09-13 06:03:14 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-09-13 06:03:14 +0000
commit7b083c729be1fb8574dc7de3bfa0132156236c15 (patch)
treefc4c78f145526487ca9a0be793728bb1cea950de
parent7fbcf5975028adc7c7ba3b01864d36624d6b69ae (diff)
parentbf7c555c2f43b525d0cdb5deb57a25f62eceb233 (diff)
Merge "Fix hearing aid appears wrong side after device reboot." into tm-qpr-dev am: bf7c555c2f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19903185 Change-Id: Ifee717d914fdd1cc3800c08ea7bafc95482fca9e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java41
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java36
2 files changed, 70 insertions, 7 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
index 818f5ca33ebf..cf4e1ee99f92 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
@@ -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) {
- return profileProxy.getHiSyncId(device);
+ final LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager();
+ final HearingAidProfile profileProxy = profileManager.getHearingAidProfile();
+ if (profileProxy == null) {
+ return BluetoothHearingAid.HI_SYNC_ID_INVALID;
}
- return BluetoothHearingAid.HI_SYNC_ID_INVALID;
+
+ return profileProxy.getHiSyncId(device);
+ }
+
+ 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);
}
}
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
index d80a59178c1c..611b0a4a28b8 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
@@ -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);
}
/**
@@ -251,6 +260,29 @@ public class HearingAidDeviceManagerTest {
}
/**
+ * 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.
* No need to process it.