summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values-da/strings.xml2
-rw-r--r--src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java4
-rw-r--r--src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java47
-rw-r--r--tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java11
-rw-r--r--tests/src/com/android/server/telecom/tests/BluetoothRouteManagerTest.java86
5 files changed, 28 insertions, 122 deletions
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index fff725758..4eead6668 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -73,7 +73,7 @@
<string name="non_primary_user" msgid="315564589279622098">"Det er kun ejeren af en enhed, der kan se og administrere blokerede numre."</string>
<string name="delete_icon_description" msgid="5335959254954774373">"Fjern blokering"</string>
<string name="blocked_numbers_butter_bar_title" msgid="582982373755950791">"Blokering er midlertidigt slået fra"</string>
- <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Når du har ringet eller sendt en sms-besked til alarmcentralen, bliver blokering slået fra for at sikre, at alarmcentralen kan komme i kontakt med dig."</string>
+ <string name="blocked_numbers_butter_bar_body" msgid="1261213114919301485">"Når du har ringet eller sendt en besked til alarmcentralen, bliver blokering slået fra for at sikre, at alarmcentralen kan komme i kontakt med dig."</string>
<string name="blocked_numbers_butter_bar_button" msgid="2704456308072489793">"Genaktiver nu"</string>
<string name="blocked_numbers_number_blocked_message" msgid="4314736791180919167">"<xliff:g id="BLOCKED_NUMBER">%1$s</xliff:g> blev blokeret"</string>
<string name="blocked_numbers_number_unblocked_message" msgid="2933071624674945601">"Blokeringen af <xliff:g id="UNBLOCKED_NUMBER">%1$s</xliff:g> blev ophævet"</string>
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
index c5e56b377..9ae58b33d 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
@@ -740,9 +740,7 @@ public class BluetoothDeviceManager {
}
public boolean isInbandRingingEnabled() {
- // Get the inband ringing enabled status of expected BT device to route call audio instead
- // of using the address of currently connected device.
- BluetoothDevice activeDevice = mBluetoothRouteManager.getMostRecentlyReportedActiveDevice();
+ BluetoothDevice activeDevice = mBluetoothRouteManager.getBluetoothAudioConnectedDevice();
Log.i(this, "isInbandRingingEnabled: activeDevice: " + activeDevice);
if (mBluetoothRouteManager.isCachedLeAudioDevice(activeDevice)) {
if (mBluetoothLeAudioService == null) {
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index 5b0eedeae..ceabd669a 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -47,7 +47,6 @@ import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
@@ -137,8 +136,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
@@ -256,27 +254,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:
@@ -693,10 +670,6 @@ public class BluetoothRouteManager extends StateMachine {
}
}
- public BluetoothDevice getMostRecentlyReportedActiveDevice() {
- return mMostRecentlyReportedActiveDevice;
- }
-
public boolean hasBtActiveDevice() {
return mLeAudioActiveDeviceCache != null ||
mHearingAidActiveDeviceCache != null ||
@@ -892,18 +865,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/BluetoothDeviceManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
index 86d2beefb..977cef9b8 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
@@ -739,14 +739,19 @@ public class BluetoothDeviceManagerTest extends TelecomTestCase {
when(mBluetoothLeAudio.isInbandRingtoneEnabled(1)).thenReturn(true);
when(mBluetoothLeAudio.getGroupId(eq(device3))).thenReturn(1);
receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device1,
+ BluetoothDeviceManager.DEVICE_TYPE_HEADSET));
+ receiverUnderTest.onReceive(mContext,
+ buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device2,
+ BluetoothDeviceManager.DEVICE_TYPE_HEADSET));
+ receiverUnderTest.onReceive(mContext,
buildConnectionActionIntent(BluetoothHeadset.STATE_CONNECTED, device3,
BluetoothDeviceManager.DEVICE_TYPE_LE_AUDIO));
leAudioCallbacksTest.getValue().onGroupNodeAdded(device3, 1);
+ when(mBluetoothLeAudio.getConnectedGroupLeadDevice(1)).thenReturn(device3);
when(mRouteManager.getBluetoothAudioConnectedDevice()).thenReturn(device3);
when(mRouteManager.isCachedLeAudioDevice(eq(device3))).thenReturn(true);
- when(mBluetoothLeAudio.getConnectedGroupLeadDevice(1)).thenReturn(device3);
- when(mRouteManager.getMostRecentlyReportedActiveDevice()).thenReturn(device3);
- assertEquals(1, mBluetoothDeviceManager.getNumConnectedDevices());
+ assertEquals(3, mBluetoothDeviceManager.getNumConnectedDevices());
assertTrue(mBluetoothDeviceManager.isInbandRingingEnabled());
}
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));
}