Loading android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java +15 −3 Original line number Diff line number Diff line Loading @@ -1135,12 +1135,18 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac Log.d(TAG, "setFallbackDeviceActive, recently removed: " + recentlyRemovedDevice); mDbManager = mAdapterService.getDatabase(); List<BluetoothDevice> connectedHearingAidDevices = new ArrayList<>(); final LeAudioService leAudioService = mFactory.getLeAudioService(); if (!mHearingAidConnectedDevices.isEmpty()) { connectedHearingAidDevices.addAll(mHearingAidConnectedDevices); } if (!mLeHearingAidConnectedDevices.isEmpty()) { connectedHearingAidDevices.addAll(mLeHearingAidConnectedDevices); if (!mLeHearingAidConnectedDevices.isEmpty() && leAudioService != null) { for (BluetoothDevice dev : mLeAudioConnectedDevices) { if (leAudioService.isGroupAvailableForStream(leAudioService.getGroupId(dev))) { connectedHearingAidDevices.add(dev); } } } if (!connectedHearingAidDevices.isEmpty()) { BluetoothDevice device = mDbManager.getMostRecentlyConnectedDevicesInList(connectedHearingAidDevices); Loading Loading @@ -1196,7 +1202,13 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac } List<BluetoothDevice> connectedDevices = new ArrayList<>(); connectedDevices.addAll(mLeAudioConnectedDevices); if (leAudioService != null) { for (BluetoothDevice dev : mLeAudioConnectedDevices) { if (leAudioService.isGroupAvailableForStream(leAudioService.getGroupId(dev))) { connectedDevices.add(dev); } } } Log.d(TAG, "Audio mode: " + mAudioManager.getMode()); switch (mAudioManager.getMode()) { case AudioManager.MODE_NORMAL: Loading android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +60 −0 Original line number Diff line number Diff line Loading @@ -854,6 +854,66 @@ public class ActiveDeviceManagerTest { verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from A2DP */ @Test public void leAudioFallbackA2dpToLeaudio_notReadyForStream() { when(mLeAudioService.isGroupAvailableForStream(anyInt())).thenReturn(false); leAudioConnected(mLeAudioDevice); a2dpConnected(mA2dpDevice, true); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mA2dpService).setActiveDevice(mA2dpDevice); a2dpDisconnected(mA2dpDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from A2DP */ @Test public void leAudioFallbackLeaudioToLeaudio_notReadyForStream() { /* LeAudio device from group 1 - not ready for stream */ when(mLeAudioService.getGroupId(mLeAudioDevice)).thenReturn(1); /* LeAudio device from group 1 - ready for stream */ when(mLeAudioService.getGroupId(mSecondaryAudioDevice)).thenReturn(2); when(mLeAudioService.isGroupAvailableForStream(1)).thenReturn(false); when(mLeAudioService.isGroupAvailableForStream(2)).thenReturn(true); leAudioConnected(mLeAudioDevice); leAudioConnected(mSecondaryAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mLeAudioService).setActiveDevice(mSecondaryAudioDevice); leAudioDisconnected(mSecondaryAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from ASHA */ @Test public void leAudioFallbackAshaToLeaudio_notReadyForStream() { when(mLeAudioService.isGroupAvailableForStream(anyInt())).thenReturn(false); leAudioConnected(mLeAudioDevice); hearingAidConnected(mHearingAidDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mHearingAidService).setActiveDevice(mHearingAidDevice); hearingAidDisconnected(mHearingAidDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** Two LE Audio are connected. Should set the second one active. */ @Test public void secondLeAudioConnected_setSecondLeAudioActive() { Loading Loading
android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java +15 −3 Original line number Diff line number Diff line Loading @@ -1135,12 +1135,18 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac Log.d(TAG, "setFallbackDeviceActive, recently removed: " + recentlyRemovedDevice); mDbManager = mAdapterService.getDatabase(); List<BluetoothDevice> connectedHearingAidDevices = new ArrayList<>(); final LeAudioService leAudioService = mFactory.getLeAudioService(); if (!mHearingAidConnectedDevices.isEmpty()) { connectedHearingAidDevices.addAll(mHearingAidConnectedDevices); } if (!mLeHearingAidConnectedDevices.isEmpty()) { connectedHearingAidDevices.addAll(mLeHearingAidConnectedDevices); if (!mLeHearingAidConnectedDevices.isEmpty() && leAudioService != null) { for (BluetoothDevice dev : mLeAudioConnectedDevices) { if (leAudioService.isGroupAvailableForStream(leAudioService.getGroupId(dev))) { connectedHearingAidDevices.add(dev); } } } if (!connectedHearingAidDevices.isEmpty()) { BluetoothDevice device = mDbManager.getMostRecentlyConnectedDevicesInList(connectedHearingAidDevices); Loading Loading @@ -1196,7 +1202,13 @@ public class ActiveDeviceManager implements AdapterService.BluetoothStateCallbac } List<BluetoothDevice> connectedDevices = new ArrayList<>(); connectedDevices.addAll(mLeAudioConnectedDevices); if (leAudioService != null) { for (BluetoothDevice dev : mLeAudioConnectedDevices) { if (leAudioService.isGroupAvailableForStream(leAudioService.getGroupId(dev))) { connectedDevices.add(dev); } } } Log.d(TAG, "Audio mode: " + mAudioManager.getMode()); switch (mAudioManager.getMode()) { case AudioManager.MODE_NORMAL: Loading
android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java +60 −0 Original line number Diff line number Diff line Loading @@ -854,6 +854,66 @@ public class ActiveDeviceManagerTest { verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from A2DP */ @Test public void leAudioFallbackA2dpToLeaudio_notReadyForStream() { when(mLeAudioService.isGroupAvailableForStream(anyInt())).thenReturn(false); leAudioConnected(mLeAudioDevice); a2dpConnected(mA2dpDevice, true); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mA2dpService).setActiveDevice(mA2dpDevice); a2dpDisconnected(mA2dpDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from A2DP */ @Test public void leAudioFallbackLeaudioToLeaudio_notReadyForStream() { /* LeAudio device from group 1 - not ready for stream */ when(mLeAudioService.getGroupId(mLeAudioDevice)).thenReturn(1); /* LeAudio device from group 1 - ready for stream */ when(mLeAudioService.getGroupId(mSecondaryAudioDevice)).thenReturn(2); when(mLeAudioService.isGroupAvailableForStream(1)).thenReturn(false); when(mLeAudioService.isGroupAvailableForStream(2)).thenReturn(true); leAudioConnected(mLeAudioDevice); leAudioConnected(mSecondaryAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mLeAudioService).setActiveDevice(mSecondaryAudioDevice); leAudioDisconnected(mSecondaryAudioDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** * LE Audio is connected but is not ready for stream (no available context types). Check if it's * not used as fallback device from ASHA */ @Test public void leAudioFallbackAshaToLeaudio_notReadyForStream() { when(mLeAudioService.isGroupAvailableForStream(anyInt())).thenReturn(false); leAudioConnected(mLeAudioDevice); hearingAidConnected(mHearingAidDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); verify(mHearingAidService).setActiveDevice(mHearingAidDevice); hearingAidDisconnected(mHearingAidDevice); mTestLooper.dispatchAll(); verify(mLeAudioService, never()).setActiveDevice(mLeAudioDevice); } /** Two LE Audio are connected. Should set the second one active. */ @Test public void secondLeAudioConnected_setSecondLeAudioActive() { Loading