Loading packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +16 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settingslib.media; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.content.Context; Loading @@ -22,6 +24,7 @@ import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; Loading @@ -39,7 +42,13 @@ public class BluetoothMediaDevice extends MediaDevice { BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName, null); this(context, device, routerManager, info, packageName, null); } BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading @@ -57,6 +66,12 @@ public class BluetoothMediaDevice extends MediaDevice { : mContext.getString(R.string.bluetooth_disconnected); } @Override public int getSelectionBehavior() { // We don't allow apps to override the selection behavior of system routes. return SELECTION_BEHAVIOR_TRANSFER; } @Override public Drawable getIcon() { return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice()) Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -174,11 +174,13 @@ public abstract class InfoMediaManager extends MediaManager { MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route); protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice); MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem); protected final void rebuildDeviceList() { mMediaDevices.clear(); Loading Loading @@ -593,7 +595,8 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_HDMI: case TYPE_WIRED_HEADSET: case TYPE_WIRED_HEADPHONES: mediaDevice = createPhoneMediaDevice(route); mediaDevice = createPhoneMediaDevice(route, mPreferenceItemMap.getOrDefault(route.getId(), null)); break; case TYPE_HEARING_AID: case TYPE_BLUETOOTH_A2DP: Loading @@ -603,7 +606,8 @@ public abstract class InfoMediaManager extends MediaManager { final CachedBluetoothDevice cachedDevice = mBluetoothManager.getCachedDeviceManager().findDevice(device); if (cachedDevice != null) { mediaDevice = createBluetoothMediaDevice(route, cachedDevice); mediaDevice = createBluetoothMediaDevice(route, cachedDevice, mPreferenceItemMap.getOrDefault(route.getId(), null)); } break; case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: Loading packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -185,16 +185,20 @@ public class ManagerInfoMediaManager extends InfoMediaManager { @Override @NonNull protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route) { return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName); protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem) { return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName, routeListingPreferenceItem); } @Override @NonNull protected BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice) { MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem) { return new BluetoothMediaDevice( mContext, cachedDevice, mRouterManager, route, mPackageName); mContext, cachedDevice, mRouterManager, route, mPackageName, routeListingPreferenceItem); } @VisibleForTesting Loading packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +15 −1 Original line number Diff line number Diff line Loading @@ -24,10 +24,13 @@ 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 com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import androidx.annotation.VisibleForTesting; Loading @@ -51,7 +54,12 @@ public class PhoneMediaDevice extends MediaDevice { PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName, null); this(context, routerManager, info, packageName, null); } PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); mDeviceIconUtil = new DeviceIconUtil(); initDeviceRecord(); } Loading Loading @@ -85,6 +93,12 @@ public class PhoneMediaDevice extends MediaDevice { return name.toString(); } @Override public int getSelectionBehavior() { // We don't allow apps to override the selection behavior of system routes. return SELECTION_BEHAVIOR_TRANSFER; } @Override public String getSummary() { return mSummary; Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ 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_WIRED_HEADPHONES; import static android.media.RouteListingPreference.Item.SELECTION_BEHAVIOR_GO_TO_APP; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import static com.google.common.truth.Truth.assertThat; Loading @@ -32,6 +35,7 @@ import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.NearbyDevice; import android.media.RouteListingPreference; import android.os.Parcel; import com.android.settingslib.bluetooth.A2dpProfile; Loading Loading @@ -110,6 +114,8 @@ public class MediaDeviceTest { @Mock private MediaRouter2Manager mMediaRouter2Manager; private RouteListingPreference.Item mItem; private BluetoothMediaDevice mBluetoothMediaDevice1; private BluetoothMediaDevice mBluetoothMediaDevice2; private BluetoothMediaDevice mBluetoothMediaDevice3; Loading Loading @@ -497,4 +503,21 @@ public class MediaDeviceTest { assertThat(mBluetoothMediaDevice1.getFeatures().size()).isEqualTo(0); } @Test public void getSelectionBehavior_setItemWithSelectionBehaviorOnSystemRoute_returnTransfer() { mItem = new RouteListingPreference.Item.Builder(DEVICE_ADDRESS_1) .setSelectionBehavior(SELECTION_BEHAVIOR_GO_TO_APP) .build(); mBluetoothMediaDevice1 = new BluetoothMediaDevice(mContext, mCachedDevice1, mMediaRouter2Manager, null /* MediaRoute2Info */, TEST_PACKAGE_NAME, mItem); mPhoneMediaDevice = new PhoneMediaDevice(mContext, mMediaRouter2Manager, mPhoneRouteInfo, TEST_PACKAGE_NAME, mItem); assertThat(mBluetoothMediaDevice1.getSelectionBehavior()).isEqualTo( SELECTION_BEHAVIOR_TRANSFER); assertThat(mPhoneMediaDevice.getSelectionBehavior()).isEqualTo( SELECTION_BEHAVIOR_TRANSFER); } } Loading
packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +16 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settingslib.media; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.content.Context; Loading @@ -22,6 +24,7 @@ import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; Loading @@ -39,7 +42,13 @@ public class BluetoothMediaDevice extends MediaDevice { BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName, null); this(context, device, routerManager, info, packageName, null); } BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading @@ -57,6 +66,12 @@ public class BluetoothMediaDevice extends MediaDevice { : mContext.getString(R.string.bluetooth_disconnected); } @Override public int getSelectionBehavior() { // We don't allow apps to override the selection behavior of system routes. return SELECTION_BEHAVIOR_TRANSFER; } @Override public Drawable getIcon() { return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice()) Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -174,11 +174,13 @@ public abstract class InfoMediaManager extends MediaManager { MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route); protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem); @NonNull protected abstract BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice); MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem); protected final void rebuildDeviceList() { mMediaDevices.clear(); Loading Loading @@ -593,7 +595,8 @@ public abstract class InfoMediaManager extends MediaManager { case TYPE_HDMI: case TYPE_WIRED_HEADSET: case TYPE_WIRED_HEADPHONES: mediaDevice = createPhoneMediaDevice(route); mediaDevice = createPhoneMediaDevice(route, mPreferenceItemMap.getOrDefault(route.getId(), null)); break; case TYPE_HEARING_AID: case TYPE_BLUETOOTH_A2DP: Loading @@ -603,7 +606,8 @@ public abstract class InfoMediaManager extends MediaManager { final CachedBluetoothDevice cachedDevice = mBluetoothManager.getCachedDeviceManager().findDevice(device); if (cachedDevice != null) { mediaDevice = createBluetoothMediaDevice(route, cachedDevice); mediaDevice = createBluetoothMediaDevice(route, cachedDevice, mPreferenceItemMap.getOrDefault(route.getId(), null)); } break; case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: Loading
packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -185,16 +185,20 @@ public class ManagerInfoMediaManager extends InfoMediaManager { @Override @NonNull protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route) { return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName); protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem) { return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName, routeListingPreferenceItem); } @Override @NonNull protected BluetoothMediaDevice createBluetoothMediaDevice( MediaRoute2Info route, CachedBluetoothDevice cachedDevice) { MediaRoute2Info route, CachedBluetoothDevice cachedDevice, RouteListingPreference.Item routeListingPreferenceItem) { return new BluetoothMediaDevice( mContext, cachedDevice, mRouterManager, route, mPackageName); mContext, cachedDevice, mRouterManager, route, mPackageName, routeListingPreferenceItem); } @VisibleForTesting Loading
packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +15 −1 Original line number Diff line number Diff line Loading @@ -24,10 +24,13 @@ 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 com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RouteListingPreference; import androidx.annotation.VisibleForTesting; Loading @@ -51,7 +54,12 @@ public class PhoneMediaDevice extends MediaDevice { PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName, null); this(context, routerManager, info, packageName, null); } PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); mDeviceIconUtil = new DeviceIconUtil(); initDeviceRecord(); } Loading Loading @@ -85,6 +93,12 @@ public class PhoneMediaDevice extends MediaDevice { return name.toString(); } @Override public int getSelectionBehavior() { // We don't allow apps to override the selection behavior of system routes. return SELECTION_BEHAVIOR_TRANSFER; } @Override public String getSummary() { return mSummary; Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ 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_WIRED_HEADPHONES; import static android.media.RouteListingPreference.Item.SELECTION_BEHAVIOR_GO_TO_APP; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import static com.google.common.truth.Truth.assertThat; Loading @@ -32,6 +35,7 @@ import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.NearbyDevice; import android.media.RouteListingPreference; import android.os.Parcel; import com.android.settingslib.bluetooth.A2dpProfile; Loading Loading @@ -110,6 +114,8 @@ public class MediaDeviceTest { @Mock private MediaRouter2Manager mMediaRouter2Manager; private RouteListingPreference.Item mItem; private BluetoothMediaDevice mBluetoothMediaDevice1; private BluetoothMediaDevice mBluetoothMediaDevice2; private BluetoothMediaDevice mBluetoothMediaDevice3; Loading Loading @@ -497,4 +503,21 @@ public class MediaDeviceTest { assertThat(mBluetoothMediaDevice1.getFeatures().size()).isEqualTo(0); } @Test public void getSelectionBehavior_setItemWithSelectionBehaviorOnSystemRoute_returnTransfer() { mItem = new RouteListingPreference.Item.Builder(DEVICE_ADDRESS_1) .setSelectionBehavior(SELECTION_BEHAVIOR_GO_TO_APP) .build(); mBluetoothMediaDevice1 = new BluetoothMediaDevice(mContext, mCachedDevice1, mMediaRouter2Manager, null /* MediaRoute2Info */, TEST_PACKAGE_NAME, mItem); mPhoneMediaDevice = new PhoneMediaDevice(mContext, mMediaRouter2Manager, mPhoneRouteInfo, TEST_PACKAGE_NAME, mItem); assertThat(mBluetoothMediaDevice1.getSelectionBehavior()).isEqualTo( SELECTION_BEHAVIOR_TRANSFER); assertThat(mPhoneMediaDevice.getSelectionBehavior()).isEqualTo( SELECTION_BEHAVIOR_TRANSFER); } }