summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrace Jia <xiaotonj@google.com>2023-11-30 19:13:19 +0000
committerYuyang Huang <yuyangh@google.com>2023-11-30 23:00:30 +0000
commit335297f476fe0bf5f3170bbac2aa9cf97e1a2e5e (patch)
treef99847ca265d9ece781940197644d05bd073d538
parent885d79344d58a23c11b16db29140f410ba0a2ef6 (diff)
downloadTelecomm-335297f476fe0bf5f3170bbac2aa9cf97e1a2e5e.tar.gz
Revert "Fix audio switch of speaker -> BT LE or speaker -> HA issue."
This reverts commit 6e171ef44faf7153be1889a9d66b74aa8d1fb391. Reason for revert: test Test: BluetoothDeviceManagerTest Change-Id: Ia416daeed288c3cfac74423651106f7544432960
-rw-r--r--src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java50
-rw-r--r--src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java4
-rw-r--r--tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java6
3 files changed, 27 insertions, 33 deletions
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
index 9ae58b33d..a25394fbe 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java
@@ -27,6 +27,7 @@ import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.media.AudioManager;
import android.media.AudioDeviceInfo;
+import android.media.audio.common.AudioDevice;
import android.os.Bundle;
import android.telecom.Log;
import android.util.ArraySet;
@@ -40,13 +41,13 @@ import com.android.server.telecom.flags.FeatureFlags;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.concurrent.Executor;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.Executor;
public class BluetoothDeviceManager {
@@ -458,8 +459,8 @@ public class BluetoothDeviceManager {
disconnectSco();
} else {
disconnectSco();
- clearLeAudioOrSpeakerCommunicationDevice();
- clearHearingAidOrSpeakerCommunicationDevice();
+ clearLeAudioCommunicationDevice();
+ clearHearingAidCommunicationDevice();
}
}
@@ -479,9 +480,13 @@ public class BluetoothDeviceManager {
return mHearingAidSetAsCommunicationDevice;
}
- public void clearLeAudioOrSpeakerCommunicationDevice() {
+ public void clearLeAudioCommunicationDevice() {
Log.i(this, "clearLeAudioCommunicationDevice: mLeAudioSetAsCommunicationDevice = " +
mLeAudioSetAsCommunicationDevice + " device = " + mLeAudioDevice);
+ if (!mLeAudioSetAsCommunicationDevice) {
+ return;
+ }
+ mLeAudioSetAsCommunicationDevice = false;
if (mLeAudioDevice != null) {
mBluetoothRouteManager.onAudioLost(mLeAudioDevice);
mLeAudioDevice = null;
@@ -493,22 +498,20 @@ public class BluetoothDeviceManager {
}
AudioDeviceInfo audioDeviceInfo = mAudioManager.getCommunicationDevice();
- if (audioDeviceInfo != null) {
- if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET) {
- Log.i(this, "clearLeAudioCommunicationDevice: clearing le audio");
- mBluetoothRouteManager.onAudioLost(audioDeviceInfo.getAddress());
- mAudioManager.clearCommunicationDevice();
- } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
- Log.i(this, "clearLeAudioCommunicationDevice: clearing speaker");
- mAudioManager.clearCommunicationDevice();
- }
+ if (audioDeviceInfo != null && audioDeviceInfo.getType()
+ == AudioDeviceInfo.TYPE_BLE_HEADSET) {
+ mBluetoothRouteManager.onAudioLost(audioDeviceInfo.getAddress());
+ mAudioManager.clearCommunicationDevice();
}
- mLeAudioSetAsCommunicationDevice = false;
}
- public void clearHearingAidOrSpeakerCommunicationDevice() {
+ public void clearHearingAidCommunicationDevice() {
Log.i(this, "clearHearingAidCommunicationDevice: mHearingAidSetAsCommunicationDevice = "
+ mHearingAidSetAsCommunicationDevice);
+ if (!mHearingAidSetAsCommunicationDevice) {
+ return;
+ }
+ mHearingAidSetAsCommunicationDevice = false;
if (mHearingAidDevice != null) {
mBluetoothRouteManager.onAudioLost(mHearingAidDevice);
mHearingAidDevice = null;
@@ -520,17 +523,10 @@ public class BluetoothDeviceManager {
}
AudioDeviceInfo audioDeviceInfo = mAudioManager.getCommunicationDevice();
- if (audioDeviceInfo != null) {
- if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_HEARING_AID) {
- Log.i(this, "clearHearingAidCommunicationDevice: clearing hearing aid");
- mBluetoothRouteManager.onAudioLost(audioDeviceInfo.getAddress());
- mAudioManager.clearCommunicationDevice();
- } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
- Log.i(this, "clearHearingAidCommunicationDevice: clearing speaker");
- mAudioManager.clearCommunicationDevice();
- }
+ if (audioDeviceInfo != null && audioDeviceInfo.getType()
+ == AudioDeviceInfo.TYPE_HEARING_AID) {
+ mAudioManager.clearCommunicationDevice();
}
- mHearingAidSetAsCommunicationDevice = false;
}
public boolean setLeAudioCommunicationDevice() {
@@ -567,7 +563,7 @@ public class BluetoothDeviceManager {
}
// clear hearing aid communication device if set
- clearHearingAidOrSpeakerCommunicationDevice();
+ clearHearingAidCommunicationDevice();
// Turn BLE_OUT_HEADSET ON.
boolean result = mAudioManager.setCommunicationDevice(bleHeadset);
@@ -616,7 +612,7 @@ public class BluetoothDeviceManager {
}
// clear LE audio communication device if set
- clearLeAudioOrSpeakerCommunicationDevice();
+ clearLeAudioCommunicationDevice();
// Turn hearing aid ON.
boolean result = mAudioManager.setCommunicationDevice(hearingAid);
diff --git a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
index ceabd669a..56f461af3 100644
--- a/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
+++ b/src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java
@@ -640,7 +640,7 @@ public class BluetoothRouteManager extends StateMachine {
mCommunicationDeviceTracker.clearCommunicationDevice(
AudioDeviceInfo.TYPE_BLE_HEADSET);
} else {
- mDeviceManager.clearLeAudioOrSpeakerCommunicationDevice();
+ mDeviceManager.clearLeAudioCommunicationDevice();
}
}
} else if (deviceType == BluetoothDeviceManager.DEVICE_TYPE_HEARING_AID) {
@@ -650,7 +650,7 @@ public class BluetoothRouteManager extends StateMachine {
mCommunicationDeviceTracker.clearCommunicationDevice(
AudioDeviceInfo.TYPE_HEARING_AID);
} else {
- mDeviceManager.clearHearingAidOrSpeakerCommunicationDevice();
+ mDeviceManager.clearHearingAidCommunicationDevice();
}
}
} else if (deviceType == BluetoothDeviceManager.DEVICE_TYPE_HEADSET) {
diff --git a/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
index 977cef9b8..0116d2df0 100644
--- a/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java
@@ -425,7 +425,6 @@ public class BluetoothDeviceManagerTest extends TelecomTestCase {
List<AudioDeviceInfo> devices = new ArrayList<>();
devices.add(mockAudioDeviceInfo);
- when(mockAudioManager.getCommunicationDevice()).thenReturn(mSpeakerInfo);
when(mockAudioManager.getAvailableCommunicationDevices())
.thenReturn(devices);
when(mockAudioManager.setCommunicationDevice(eq(mockAudioDeviceInfo)))
@@ -461,7 +460,6 @@ public class BluetoothDeviceManagerTest extends TelecomTestCase {
List<AudioDeviceInfo> devices = new ArrayList<>();
devices.add(mockAudioDeviceInfo);
- when(mockAudioManager.getCommunicationDevice()).thenReturn(mSpeakerInfo);
when(mockAudioManager.getAvailableCommunicationDevices())
.thenReturn(devices);
when(mockAudioManager.setCommunicationDevice(mockAudioDeviceInfo))
@@ -786,10 +784,10 @@ public class BluetoothDeviceManagerTest extends TelecomTestCase {
assertFalse(mCommunicationDeviceTracker.isAudioDeviceSetForType(device_type));
} else {
if (device_type == AudioDeviceInfo.TYPE_BLE_HEADSET) {
- mBluetoothDeviceManager.clearLeAudioOrSpeakerCommunicationDevice();
+ mBluetoothDeviceManager.clearLeAudioCommunicationDevice();
assertFalse(mBluetoothDeviceManager.isLeAudioCommunicationDevice());
} else {
- mBluetoothDeviceManager.clearHearingAidOrSpeakerCommunicationDevice();
+ mBluetoothDeviceManager.clearHearingAidCommunicationDevice();
assertFalse(mBluetoothDeviceManager.isHearingAidSetAsCommunicationDevice());
}
}