diff options
author | Grace Jia <xiaotonj@google.com> | 2023-12-01 08:43:41 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-12-01 08:43:41 +0000 |
commit | 3952b78c76a4386331e6371c8c48330cf8ae5bc2 (patch) | |
tree | 807ae92be28b72928d8be713014a1857f9b4aca2 | |
parent | 36876c4214dd3afc7946698c7d72209799f74326 (diff) | |
parent | 335297f476fe0bf5f3170bbac2aa9cf97e1a2e5e (diff) | |
download | Telecomm-3952b78c76a4386331e6371c8c48330cf8ae5bc2.tar.gz |
Merge "Revert "Fix audio switch of speaker -> BT LE or speaker -> HA issue."" into main
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 c5e56b377..27e5a7dcb 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 3cd64c61a..9def4c0d4 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 86d2beefb..e3d4ec2f3 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)) @@ -781,10 +779,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()); } } |