Merge "Bass: Use checking if broadcast is active instead of synced to BISes" into main
diff --git a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
index e4ce96a..2fff02e 100644
--- a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
+++ b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
@@ -4054,13 +4054,11 @@
}
/** Check if any sink receivers are receiving broadcast stream */
- public boolean isAnyReceiverReceivingBroadcast(List<BluetoothDevice> devices) {
+ public boolean isAnyReceiverActive(List<BluetoothDevice> devices) {
for (BluetoothDevice device : devices) {
for (BluetoothLeBroadcastReceiveState receiveState : getAllSources(device)) {
- for (int i = 0; i < receiveState.getNumSubgroups(); i++) {
- if (isSyncedToBroadcastStream(receiveState.getBisSyncState().get(i))) {
- return true;
- }
+ if (isReceiverActive(receiveState)) {
+ return true;
}
}
}
diff --git a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
index ec1c9c4..d05b677 100644
--- a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
+++ b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
@@ -2939,7 +2939,7 @@
return false;
}
- return bassClientService.isAnyReceiverReceivingBroadcast(getGroupDevices(groupId));
+ return bassClientService.isAnyReceiverActive(getGroupDevices(groupId));
}
private void notifyGroupStreamStatusChanged(int groupId, int groupStreamStatus) {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
index 0796f48..8f3dd8a 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
@@ -4441,27 +4441,36 @@
}
@Test
- public void testIsAnyReceiverReceivingBroadcast() {
+ public void testIsAnyReceiverActive() {
prepareConnectedDeviceGroup();
startSearchingForSources();
onScanResult(mSourceDevice, TEST_BROADCAST_ID);
onSyncEstablished(mSourceDevice, TEST_SYNC_HANDLE);
BluetoothLeBroadcastMetadata meta = createBroadcastMetadata(TEST_BROADCAST_ID);
verifyAddSourceForGroup(meta);
- prepareRemoteSourceState(meta, true, false);
+ prepareRemoteSourceState(meta, false, false);
List<BluetoothDevice> devices = mBassClientService.getConnectedDevices();
- // Verify isAnyReceiverReceivingBroadcast returns false if no BIS synced
- assertThat(mBassClientService.isAnyReceiverReceivingBroadcast(devices)).isFalse();
+ // Verify isAnyReceiverActive returns false if no PA and no BIS synced
+ assertThat(mBassClientService.isAnyReceiverActive(devices)).isFalse();
- // Update receiver state with BIS sync
- injectRemoteSourceStateChanged(meta, true, true);
+ // Update receiver state with PA sync
+ injectRemoteSourceStateChanged(meta, true, false);
BluetoothDevice invalidDevice = TestUtils.getTestDevice(mBluetoothAdapter, 2);
- // Verify isAnyReceiverReceivingBroadcast returns false if invalid device
- expect.that(mBassClientService.isAnyReceiverReceivingBroadcast(List.of(invalidDevice)))
- .isFalse();
- // Verify isAnyReceiverReceivingBroadcast returns true if BIS synced
- expect.that(mBassClientService.isAnyReceiverReceivingBroadcast(devices)).isTrue();
+ // Verify isAnyReceiverActive returns false if invalid device
+ expect.that(mBassClientService.isAnyReceiverActive(List.of(invalidDevice))).isFalse();
+ // Verify isAnyReceiverActive returns true if PA synced
+ expect.that(mBassClientService.isAnyReceiverActive(devices)).isTrue();
+
+ // Update receiver state with PA and BIS sync
+ injectRemoteSourceStateChanged(meta, true, true);
+ // Verify isAnyReceiverActive returns true if PA and BIS synced
+ expect.that(mBassClientService.isAnyReceiverActive(devices)).isTrue();
+
+ // Update receiver state with BIS only sync
+ injectRemoteSourceStateChanged(meta, false, true);
+ // Verify isAnyReceiverActive returns true if BIS only synced
+ expect.that(mBassClientService.isAnyReceiverActive(devices)).isTrue();
}
@Test