summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2023-11-30 00:24:37 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-11-30 00:24:37 +0000
commitedfc965759800d31a06ebef666dd2f80952c8500 (patch)
treed7fb6532176bba66dff7b05268c8e0611544753b
parent1014751959823d91aa8718f1c7fb2eeb11c7fcee (diff)
parent1963b1f1f5ec56f714e37033ef3c39ab922d9319 (diff)
downloadTelecomm-edfc965759800d31a06ebef666dd2f80952c8500.tar.gz
Merge "Revert "Hearing Aid: Connect route when right HA is connected first"" into main
-rw-r--r--src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java43
-rw-r--r--tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java86
2 files changed, 18 insertions, 111 deletions
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index ed2a72c0a..644d9aeda 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -45,7 +45,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Map;
-import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -135,8 +134,7 @@ public class BluetoothRouteManager extends StateMachine {
@Override
public void enter() {
BluetoothDevice erroneouslyConnectedDevice = getBluetoothAudioConnectedDevice();
- if (erroneouslyConnectedDevice != null &&
- !erroneouslyConnectedDevice.equals(mHearingAidActiveDeviceCache)) {
+ if (erroneouslyConnectedDevice != null) {
Log.w(LOG_TAG, "Entering AudioOff state but device %s appears to be connected. " +
"Switching to audio-on state for that device.", erroneouslyConnectedDevice);
// change this to just transition to the new audio on state
@@ -254,27 +252,6 @@ public class BluetoothRouteManager extends StateMachine {
SomeArgs args = (SomeArgs) msg.obj;
String address = (String) args.arg2;
boolean switchingBtDevices = !Objects.equals(mDeviceAddress, address);
-
- if (switchingBtDevices == true) { // check if it is an hearing aid pair
- BluetoothAdapter bluetoothAdapter = mDeviceManager.getBluetoothAdapter();
- if (bluetoothAdapter != null) {
- List<BluetoothDevice> activeHearingAids =
- bluetoothAdapter.getActiveDevices(BluetoothProfile.HEARING_AID);
- for (BluetoothDevice hearingAid : activeHearingAids) {
- if (hearingAid != null) {
- String hearingAidAddress = hearingAid.getAddress();
- if (hearingAidAddress != null) {
- if (hearingAidAddress.equals(address) ||
- hearingAidAddress.equals(mDeviceAddress)) {
- switchingBtDevices = false;
- break;
- }
- }
- }
- }
-
- }
- }
try {
switch (msg.what) {
case NEW_DEVICE_CONNECTED:
@@ -887,18 +864,12 @@ public class BluetoothRouteManager extends StateMachine {
: mDeviceManager.isHearingAidSetAsCommunicationDevice();
if (bluetoothHearingAid != null) {
if (isHearingAidSetForCommunication) {
- List<BluetoothDevice> hearingAidsActiveDevices = bluetoothAdapter.getActiveDevices(
- BluetoothProfile.HEARING_AID);
- if (hearingAidsActiveDevices.contains(mHearingAidActiveDeviceCache)) {
- hearingAidActiveDevice = mHearingAidActiveDeviceCache;
- activeDevices++;
- } else {
- for (BluetoothDevice device : hearingAidsActiveDevices) {
- if (device != null) {
- hearingAidActiveDevice = device;
- activeDevices++;
- break;
- }
+ for (BluetoothDevice device : bluetoothAdapter.getActiveDevices(
+ BluetoothProfile.HEARING_AID)) {
+ if (device != null) {
+ hearingAidActiveDevice = device;
+ activeDevices++;
+ break;
}
}
}
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
index e1ef08ae2..ee59cb8e7 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -38,8 +37,6 @@ import android.os.Parcel;
import android.telecom.Log;
import android.test.suitebuilder.annotation.SmallTest;
-import android.media.AudioDeviceInfo;
-
import com.android.internal.os.SomeArgs;
import com.android.server.telecom.CallAudioCommunicationDeviceTracker;
import com.android.server.telecom.TelecomSystem;
@@ -65,14 +62,7 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
static final BluetoothDevice DEVICE1 = makeBluetoothDevice("00:00:00:00:00:01");
static final BluetoothDevice DEVICE2 = makeBluetoothDevice("00:00:00:00:00:02");
static final BluetoothDevice DEVICE3 = makeBluetoothDevice("00:00:00:00:00:03");
- static final BluetoothDevice HEARING_AID_DEVICE_LEFT = makeBluetoothDevice("CA:FE:DE:CA:00:01");
- static final BluetoothDevice HEARING_AID_DEVICE_RIGHT =
- makeBluetoothDevice("CA:FE:DE:CA:00:02");
- // See HearingAidService#getActiveDevices
- // Note: It is really important that the left HA is the first one. The left HA is always
- // in the first index (0) and the right one in the second index (1).
- static final BluetoothDevice[] HEARING_AIDS =
- new BluetoothDevice[]{HEARING_AID_DEVICE_LEFT, HEARING_AID_DEVICE_RIGHT};
+ static final BluetoothDevice HEARING_AID_DEVICE = makeBluetoothDevice("00:00:00:00:00:04");
@Mock private BluetoothAdapter mBluetoothAdapter;
@Mock private BluetoothDeviceManager mDeviceManager;
@@ -97,59 +87,6 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
@SmallTest
@Test
- public void testConnectLeftHearingAidWhenLeftIsActive() {
- BluetoothRouteManager sm = setupStateMachine(
- BluetoothRouteManager.AUDIO_OFF_STATE_NAME, HEARING_AID_DEVICE_LEFT);
- sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
- BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
- when(mDeviceManager.connectAudio(anyString(), anyBoolean())).thenReturn(true);
- when(mDeviceManager.isHearingAidSetAsCommunicationDevice()).thenReturn(true);
-
- setupConnectedDevices(null, HEARING_AIDS, null, null, HEARING_AIDS, null);
- when(mBluetoothHeadset.getAudioState(nullable(BluetoothDevice.class)))
- .thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
-
- executeRoutingAction(sm,
- BluetoothRouteManager.NEW_DEVICE_CONNECTED, HEARING_AID_DEVICE_LEFT.getAddress());
-
- executeRoutingAction(sm,
- BluetoothRouteManager.CONNECT_BT, HEARING_AID_DEVICE_LEFT.getAddress());
-
- assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
- + ":" + HEARING_AID_DEVICE_LEFT.getAddress(), sm.getCurrentState().getName());
-
- sm.quitNow();
- }
-
- @SmallTest
- @Test
- public void testConnectRightHearingAidWhenLeftIsActive() {
- BluetoothRouteManager sm = setupStateMachine(
- BluetoothRouteManager.AUDIO_OFF_STATE_NAME, HEARING_AID_DEVICE_RIGHT);
- sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
- BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
- when(mDeviceManager.connectAudio(anyString(), anyBoolean())).thenReturn(true);
- when(mDeviceManager.isHearingAidSetAsCommunicationDevice()).thenReturn(true);
-
-
- setupConnectedDevices(null, HEARING_AIDS, null, null, HEARING_AIDS, null);
- when(mBluetoothHeadset.getAudioState(nullable(BluetoothDevice.class)))
- .thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
-
- executeRoutingAction(sm,
- BluetoothRouteManager.NEW_DEVICE_CONNECTED, HEARING_AID_DEVICE_LEFT.getAddress());
-
- executeRoutingAction(sm,
- BluetoothRouteManager.CONNECT_BT, HEARING_AID_DEVICE_LEFT.getAddress());
-
- assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
- + ":" + HEARING_AID_DEVICE_LEFT.getAddress(), sm.getCurrentState().getName());
-
- sm.quitNow();
- }
-
- @SmallTest
- @Test
public void testConnectBtRetryWhileNotConnected() {
BluetoothRouteManager sm = setupStateMachine(
BluetoothRouteManager.AUDIO_OFF_STATE_NAME, null);
@@ -176,15 +113,15 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
BluetoothRouteManager sm = setupStateMachine(
BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, DEVICE1);
setupConnectedDevices(new BluetoothDevice[]{DEVICE1},
- HEARING_AIDS, new BluetoothDevice[]{DEVICE2},
- DEVICE1, HEARING_AIDS, DEVICE2);
+ new BluetoothDevice[]{HEARING_AID_DEVICE}, new BluetoothDevice[]{DEVICE2},
+ DEVICE1, HEARING_AID_DEVICE, DEVICE2);
sm.onActiveDeviceChanged(DEVICE1, BluetoothDeviceManager.DEVICE_TYPE_HEADSET);
sm.onActiveDeviceChanged(DEVICE2, BluetoothDeviceManager.DEVICE_TYPE_LE_AUDIO);
- sm.onActiveDeviceChanged(HEARING_AID_DEVICE_LEFT,
+ sm.onActiveDeviceChanged(HEARING_AID_DEVICE,
BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID);
executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST, DEVICE1.getAddress());
- verifyConnectionAttempt(HEARING_AID_DEVICE_LEFT, 0);
+ verifyConnectionAttempt(HEARING_AID_DEVICE, 0);
verifyConnectionAttempt(DEVICE1, 0);
verifyConnectionAttempt(DEVICE2, 0);
assertEquals(BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX
@@ -239,11 +176,11 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
@Test
public void testSkipInactiveBtDeviceWhenEvaluateActualState() {
BluetoothRouteManager sm = setupStateMachine(
- BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, HEARING_AID_DEVICE_LEFT);
- setupConnectedDevices(null, HEARING_AIDS,
- null, null, HEARING_AIDS, null);
+ BluetoothRouteManager.AUDIO_CONNECTED_STATE_NAME_PREFIX, HEARING_AID_DEVICE);
+ setupConnectedDevices(null, new BluetoothDevice[]{HEARING_AID_DEVICE},
+ null, null, HEARING_AID_DEVICE, null);
executeRoutingAction(sm, BluetoothRouteManager.BT_AUDIO_LOST,
- HEARING_AID_DEVICE_LEFT.getAddress());
+ HEARING_AID_DEVICE.getAddress());
assertEquals(BluetoothRouteManager.AUDIO_OFF_STATE_NAME, sm.getCurrentState().getName());
sm.quitNow();
}
@@ -290,11 +227,10 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
private void setupConnectedDevices(BluetoothDevice[] hfpDevices,
BluetoothDevice[] hearingAidDevices, BluetoothDevice[] leAudioDevices,
- BluetoothDevice hfpActiveDevice, BluetoothDevice[] hearingAidActiveDevices,
+ BluetoothDevice hfpActiveDevice, BluetoothDevice hearingAidActiveDevice,
BluetoothDevice leAudioDevice) {
if (hfpDevices == null) hfpDevices = new BluetoothDevice[]{};
if (hearingAidDevices == null) hearingAidDevices = new BluetoothDevice[]{};
- if (hearingAidActiveDevices == null) hearingAidActiveDevices = new BluetoothDevice[]{};
if (leAudioDevice == null) leAudioDevices = new BluetoothDevice[]{};
when(mDeviceManager.getNumConnectedDevices()).thenReturn(
@@ -313,7 +249,7 @@ public class BluetoothRouteManagerTest extends TelecomTestCase {
when(mBluetoothHearingAid.getConnectedDevices())
.thenReturn(Arrays.asList(hearingAidDevices));
when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.HEARING_AID)))
- .thenReturn(Arrays.asList(hearingAidActiveDevices));
+ .thenReturn(Arrays.asList(hearingAidActiveDevice, null));
when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.LE_AUDIO)))
.thenReturn(Arrays.asList(leAudioDevice, null));
}