Loading android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -709,7 +709,6 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac + device + ", mHfpActiveDevice=" + mHfpActiveDevice); if (!Objects.equals(mHfpActiveDevice, device)) { if (device != null) { setHearingAidActiveDevice(null, true); Loading @@ -717,7 +716,7 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac updateLeAudioActiveDeviceIfDualMode(mHfpActiveDevice, device); if (!Utils.isDualModeAudioEnabled() || device == null) { if ((!Utils.isDualModeAudioEnabled() && device == null)) { Log.d(TAG, "HFP active device is null. Try to fallback to the active device."); synchronized (mLock) { setFallbackDeviceActiveLocked(null); Loading android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +37 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,43 @@ public class ActiveDeviceManagerTest { verify(mA2dpService, never()).setActiveDevice(mA2dpHeadsetDevice); } @Test public void switchActiveDeviceFromLeToHfp_noFallbackToLe() { // Turn off the dual mode audio flag Utils.setDualModeAudioStateForTesting(false); // Connect A2DP + HFP device, set it not active a2dpConnected(mA2dpHeadsetDevice, true); headsetConnected(mA2dpHeadsetDevice, true); a2dpActiveDeviceChanged(null); headsetActiveDeviceChanged(null); mTestLooper.dispatchAll(); Mockito.clearInvocations(mHeadsetService); Mockito.clearInvocations(mA2dpService); Mockito.clearInvocations(mLeAudioService); // Connect LE Audio device, set it to inactive leAudioConnected(mLeAudioDevice); leAudioActiveDeviceChanged(mLeAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService).setActiveDevice(mLeAudioDevice); assertThat(mActiveDeviceManager.getLeAudioActiveDevice()).isEqualTo(mLeAudioDevice); Mockito.clearInvocations(mHeadsetService); Mockito.clearInvocations(mA2dpService); Mockito.clearInvocations(mLeAudioService); // Set LE Audio device to inactive // Set A2DP + HFP device to active leAudioActiveDeviceChanged(null); headsetActiveDeviceChanged(mA2dpHeadsetDevice); mTestLooper.dispatchAll(); // A2DP + HFP should now be active verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mA2dpService).setActiveDevice(mA2dpHeadsetDevice); } @Test public void hfpActivatedAfterTimeout_shouldActivateA2dpAgain() { a2dpConnected(mA2dpHeadsetDevice, true); Loading Loading
android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -709,7 +709,6 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac + device + ", mHfpActiveDevice=" + mHfpActiveDevice); if (!Objects.equals(mHfpActiveDevice, device)) { if (device != null) { setHearingAidActiveDevice(null, true); Loading @@ -717,7 +716,7 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac updateLeAudioActiveDeviceIfDualMode(mHfpActiveDevice, device); if (!Utils.isDualModeAudioEnabled() || device == null) { if ((!Utils.isDualModeAudioEnabled() && device == null)) { Log.d(TAG, "HFP active device is null. Try to fallback to the active device."); synchronized (mLock) { setFallbackDeviceActiveLocked(null); Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +37 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,43 @@ public class ActiveDeviceManagerTest { verify(mA2dpService, never()).setActiveDevice(mA2dpHeadsetDevice); } @Test public void switchActiveDeviceFromLeToHfp_noFallbackToLe() { // Turn off the dual mode audio flag Utils.setDualModeAudioStateForTesting(false); // Connect A2DP + HFP device, set it not active a2dpConnected(mA2dpHeadsetDevice, true); headsetConnected(mA2dpHeadsetDevice, true); a2dpActiveDeviceChanged(null); headsetActiveDeviceChanged(null); mTestLooper.dispatchAll(); Mockito.clearInvocations(mHeadsetService); Mockito.clearInvocations(mA2dpService); Mockito.clearInvocations(mLeAudioService); // Connect LE Audio device, set it to inactive leAudioConnected(mLeAudioDevice); leAudioActiveDeviceChanged(mLeAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService).setActiveDevice(mLeAudioDevice); assertThat(mActiveDeviceManager.getLeAudioActiveDevice()).isEqualTo(mLeAudioDevice); Mockito.clearInvocations(mHeadsetService); Mockito.clearInvocations(mA2dpService); Mockito.clearInvocations(mLeAudioService); // Set LE Audio device to inactive // Set A2DP + HFP device to active leAudioActiveDeviceChanged(null); headsetActiveDeviceChanged(mA2dpHeadsetDevice); mTestLooper.dispatchAll(); // A2DP + HFP should now be active verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mA2dpService).setActiveDevice(mA2dpHeadsetDevice); } @Test public void hfpActivatedAfterTimeout_shouldActivateA2dpAgain() { a2dpConnected(mA2dpHeadsetDevice, true); Loading