Loading src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java +23 −27 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -458,8 +459,8 @@ public class BluetoothDeviceManager { disconnectSco(); } else { disconnectSco(); clearLeAudioOrSpeakerCommunicationDevice(); clearHearingAidOrSpeakerCommunicationDevice(); clearLeAudioCommunicationDevice(); clearHearingAidCommunicationDevice(); } } Loading @@ -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; Loading @@ -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"); if (audioDeviceInfo != null && audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET) { mBluetoothRouteManager.onAudioLost(audioDeviceInfo.getAddress()); mAudioManager.clearCommunicationDevice(); } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { Log.i(this, "clearLeAudioCommunicationDevice: clearing speaker"); 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; Loading @@ -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()); if (audioDeviceInfo != null && audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_HEARING_AID) { mAudioManager.clearCommunicationDevice(); } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { Log.i(this, "clearHearingAidCommunicationDevice: clearing speaker"); mAudioManager.clearCommunicationDevice(); } } mHearingAidSetAsCommunicationDevice = false; } public boolean setLeAudioCommunicationDevice() { Loading Loading @@ -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); Loading Loading @@ -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); Loading src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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) { Loading tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -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))) Loading Loading @@ -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)) Loading Loading @@ -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()); } } Loading Loading
src/com/android/server/telecom/bluetooth/BluetoothDeviceManager.java +23 −27 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -458,8 +459,8 @@ public class BluetoothDeviceManager { disconnectSco(); } else { disconnectSco(); clearLeAudioOrSpeakerCommunicationDevice(); clearHearingAidOrSpeakerCommunicationDevice(); clearLeAudioCommunicationDevice(); clearHearingAidCommunicationDevice(); } } Loading @@ -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; Loading @@ -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"); if (audioDeviceInfo != null && audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BLE_HEADSET) { mBluetoothRouteManager.onAudioLost(audioDeviceInfo.getAddress()); mAudioManager.clearCommunicationDevice(); } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { Log.i(this, "clearLeAudioCommunicationDevice: clearing speaker"); 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; Loading @@ -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()); if (audioDeviceInfo != null && audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_HEARING_AID) { mAudioManager.clearCommunicationDevice(); } else if (audioDeviceInfo.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { Log.i(this, "clearHearingAidCommunicationDevice: clearing speaker"); mAudioManager.clearCommunicationDevice(); } } mHearingAidSetAsCommunicationDevice = false; } public boolean setLeAudioCommunicationDevice() { Loading Loading @@ -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); Loading Loading @@ -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); Loading
src/com/android/server/telecom/bluetooth/BluetoothRouteManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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) { Loading
tests/src/com/android/server/telecom/tests/BluetoothDeviceManagerTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -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))) Loading Loading @@ -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)) Loading Loading @@ -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()); } } Loading