Add new route type for support 3.5 mm headset and usb headset
- This CL add new route type for support 3.5 mm headset and usb headset. - Add test case. Bug: 153711362 Test: make -j42 RunSettingsLibRoboTests Change-Id: I6daa22a7bec161fbe47e554a27ae51e4feab1185
This commit is contained in:
@@ -17,11 +17,16 @@ package com.android.settingslib.media;
|
||||
|
||||
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
|
||||
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_DOCK;
|
||||
import static android.media.MediaRoute2Info.TYPE_GROUP;
|
||||
import static android.media.MediaRoute2Info.TYPE_HDMI;
|
||||
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
|
||||
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
|
||||
import static android.media.MediaRoute2Info.TYPE_UNKNOWN;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_ACCESSORY;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
|
||||
import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;
|
||||
@@ -339,7 +344,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
for (MediaRoute2Info route : mRouterManager.getAllRoutes()) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "buildAllRoutes() route : " + route.getName() + ", volume : "
|
||||
+ route.getVolume());
|
||||
+ route.getVolume() + ", type : " + route.getType());
|
||||
}
|
||||
if (route.isSystemRoute()) {
|
||||
addMediaDevice(route);
|
||||
@@ -350,13 +355,15 @@ public class InfoMediaManager extends MediaManager {
|
||||
private void buildAvailableRoutes() {
|
||||
for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName());
|
||||
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName()
|
||||
+ ", type : " + route.getType());
|
||||
}
|
||||
addMediaDevice(route);
|
||||
}
|
||||
}
|
||||
|
||||
private void addMediaDevice(MediaRoute2Info route) {
|
||||
@VisibleForTesting
|
||||
void addMediaDevice(MediaRoute2Info route) {
|
||||
final int deviceType = route.getType();
|
||||
MediaDevice mediaDevice = null;
|
||||
switch (deviceType) {
|
||||
@@ -374,6 +381,11 @@ public class InfoMediaManager extends MediaManager {
|
||||
}
|
||||
break;
|
||||
case TYPE_BUILTIN_SPEAKER:
|
||||
case TYPE_USB_DEVICE:
|
||||
case TYPE_USB_HEADSET:
|
||||
case TYPE_USB_ACCESSORY:
|
||||
case TYPE_DOCK:
|
||||
case TYPE_HDMI:
|
||||
case TYPE_WIRED_HEADSET:
|
||||
case TYPE_WIRED_HEADPHONES:
|
||||
mediaDevice =
|
||||
|
||||
@@ -17,11 +17,16 @@ package com.android.settingslib.media;
|
||||
|
||||
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
|
||||
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_DOCK;
|
||||
import static android.media.MediaRoute2Info.TYPE_GROUP;
|
||||
import static android.media.MediaRoute2Info.TYPE_HDMI;
|
||||
import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
|
||||
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
|
||||
import static android.media.MediaRoute2Info.TYPE_UNKNOWN;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_ACCESSORY;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
|
||||
|
||||
@@ -102,6 +107,13 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
|
||||
case TYPE_WIRED_HEADPHONES:
|
||||
mType = MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE;
|
||||
break;
|
||||
case TYPE_USB_DEVICE:
|
||||
case TYPE_USB_HEADSET:
|
||||
case TYPE_USB_ACCESSORY:
|
||||
case TYPE_DOCK:
|
||||
case TYPE_HDMI:
|
||||
mType = MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE;
|
||||
break;
|
||||
case TYPE_HEARING_AID:
|
||||
case TYPE_BLUETOOTH_A2DP:
|
||||
mType = MediaDeviceType.TYPE_BLUETOOTH_DEVICE;
|
||||
|
||||
@@ -16,6 +16,11 @@
|
||||
package com.android.settingslib.media;
|
||||
|
||||
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_DOCK;
|
||||
import static android.media.MediaRoute2Info.TYPE_HDMI;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_ACCESSORY;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
|
||||
|
||||
@@ -53,6 +58,13 @@ public class PhoneMediaDevice extends MediaDevice {
|
||||
switch (mRouteInfo.getType()) {
|
||||
case TYPE_WIRED_HEADSET:
|
||||
case TYPE_WIRED_HEADPHONES:
|
||||
name = mContext.getString(R.string.media_transfer_wired_device_name);
|
||||
break;
|
||||
case TYPE_USB_DEVICE:
|
||||
case TYPE_USB_HEADSET:
|
||||
case TYPE_USB_ACCESSORY:
|
||||
case TYPE_DOCK:
|
||||
case TYPE_HDMI:
|
||||
name = mRouteInfo.getName();
|
||||
break;
|
||||
case TYPE_BUILTIN_SPEAKER:
|
||||
@@ -78,6 +90,11 @@ public class PhoneMediaDevice extends MediaDevice {
|
||||
int getDrawableResId() {
|
||||
int resId;
|
||||
switch (mRouteInfo.getType()) {
|
||||
case TYPE_USB_DEVICE:
|
||||
case TYPE_USB_HEADSET:
|
||||
case TYPE_USB_ACCESSORY:
|
||||
case TYPE_DOCK:
|
||||
case TYPE_HDMI:
|
||||
case TYPE_WIRED_HEADSET:
|
||||
case TYPE_WIRED_HEADPHONES:
|
||||
resId = com.android.internal.R.drawable.ic_bt_headphones_a2dp;
|
||||
|
||||
@@ -16,20 +16,29 @@
|
||||
|
||||
package com.android.settingslib.media;
|
||||
|
||||
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
|
||||
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
|
||||
import static android.media.MediaRoute2ProviderService.REASON_NETWORK_ERROR;
|
||||
import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.media.MediaRoute2Info;
|
||||
import android.media.MediaRouter2Manager;
|
||||
import android.media.RoutingSessionInfo;
|
||||
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||
import com.android.settingslib.testutils.shadow.ShadowRouter2Manager;
|
||||
|
||||
@@ -601,4 +610,41 @@ public class InfoMediaManagerTest {
|
||||
assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
|
||||
verify(mCallback).onConnectedDeviceChanged(null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addMediaDevice_verifyDeviceTypeCanCorrespondToMediaDevice() {
|
||||
final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
|
||||
final CachedBluetoothDeviceManager cachedBluetoothDeviceManager =
|
||||
mock(CachedBluetoothDeviceManager.class);
|
||||
final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class);
|
||||
|
||||
when(route2Info.getType()).thenReturn(TYPE_REMOTE_SPEAKER);
|
||||
mInfoMediaManager.addMediaDevice(route2Info);
|
||||
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof InfoMediaDevice).isTrue();
|
||||
|
||||
when(route2Info.getType()).thenReturn(TYPE_USB_DEVICE);
|
||||
mInfoMediaManager.mMediaDevices.clear();
|
||||
mInfoMediaManager.addMediaDevice(route2Info);
|
||||
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
|
||||
|
||||
when(route2Info.getType()).thenReturn(TYPE_WIRED_HEADSET);
|
||||
mInfoMediaManager.mMediaDevices.clear();
|
||||
mInfoMediaManager.addMediaDevice(route2Info);
|
||||
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
|
||||
|
||||
when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP);
|
||||
when(route2Info.getOriginalId()).thenReturn("00:00:00:00:00:00");
|
||||
when(mLocalBluetoothManager.getCachedDeviceManager())
|
||||
.thenReturn(cachedBluetoothDeviceManager);
|
||||
when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class)))
|
||||
.thenReturn(cachedDevice);
|
||||
mInfoMediaManager.mMediaDevices.clear();
|
||||
mInfoMediaManager.addMediaDevice(route2Info);
|
||||
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof BluetoothMediaDevice).isTrue();
|
||||
|
||||
when(route2Info.getType()).thenReturn(TYPE_BUILTIN_SPEAKER);
|
||||
mInfoMediaManager.mMediaDevices.clear();
|
||||
mInfoMediaManager.addMediaDevice(route2Info);
|
||||
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.settingslib.media;
|
||||
|
||||
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
|
||||
import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
|
||||
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
|
||||
|
||||
@@ -95,9 +96,9 @@ public class PhoneMediaDeviceTest {
|
||||
when(mInfo.getName()).thenReturn(deviceName);
|
||||
|
||||
assertThat(mPhoneMediaDevice.getName())
|
||||
.isEqualTo(deviceName);
|
||||
.isEqualTo(mContext.getString(R.string.media_transfer_wired_device_name));
|
||||
|
||||
when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADSET);
|
||||
when(mInfo.getType()).thenReturn(TYPE_USB_DEVICE);
|
||||
|
||||
assertThat(mPhoneMediaDevice.getName())
|
||||
.isEqualTo(deviceName);
|
||||
|
||||
Reference in New Issue
Block a user