Display disconnected bluetooth devices only when local output device is available.

-If media app does not support cast->phone transferring, local output
audio device is unavailable. Disconnected bluetooth devices should be
also unavilable.
-These types are local output audio devices defined in MediaRoute2Info:
TYPE_BUILTIN_SPEAKER
TYPE_WIRED_HEADSET
TYPE_WIRED_HEADPHONES
TYPE_USB_DEVICE
TYPE_USB_HEADSET
TYPE_USB_ACCESSORY
TYPE_DOCK
TYPE_HDMI
-Update test case

Bug: 163095048
Test: make -j50 RunSettingsLibRoboTests
Change-Id: I0ceea496d677e514cce0e773a8731bb4eeff874d
(cherry picked from commit 254a0a2603)
This commit is contained in:
timhypeng
2020-08-12 13:03:39 +08:00
committed by tim peng
parent 204479a075
commit 8c35d00752
2 changed files with 12 additions and 1 deletions

View File

@@ -465,7 +465,16 @@ public class LocalMediaManager implements BluetoothCallback {
synchronized (mMediaDevicesLock) {
mMediaDevices.clear();
mMediaDevices.addAll(devices);
mMediaDevices.addAll(buildDisconnectedBluetoothDevice());
// Add disconnected bluetooth devices only when phone output device is available.
for (MediaDevice device : devices) {
final int type = device.getDeviceType();
if (type == MediaDevice.MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE
|| type == MediaDevice.MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE
|| type == MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE) {
mMediaDevices.addAll(buildDisconnectedBluetoothDevice());
break;
}
}
}
final MediaDevice infoMediaDevice = mInfoMediaManager.getCurrentConnectedDevice();

View File

@@ -585,6 +585,7 @@ public class LocalMediaManagerTest {
when(device1.getId()).thenReturn(TEST_DEVICE_ID_1);
when(device2.getId()).thenReturn(TEST_DEVICE_ID_2);
when(device3.getId()).thenReturn(TEST_DEVICE_ID_3);
when(device1.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE);
when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id");
assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
@@ -683,6 +684,7 @@ public class LocalMediaManagerTest {
when(device1.getId()).thenReturn(TEST_DEVICE_ID_1);
when(device2.getId()).thenReturn(TEST_DEVICE_ID_2);
when(device3.getId()).thenReturn(TEST_DEVICE_ID_3);
when(device1.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE);
when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id");
assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);