[Output Switcher] Allow subtext and flags on System Route am: 3c9b30a749 am: a60acac8fd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23853603

Change-Id: Ib42ed509fb47584741d66f20ea7b17c54314d296
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
shaoweishen
2023-07-03 06:48:42 +00:00
committed by Automerger Merge Worker
4 changed files with 63 additions and 6 deletions

View File

@@ -15,6 +15,8 @@
*/ */
package com.android.settingslib.media; package com.android.settingslib.media;
import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.content.Context; import android.content.Context;
@@ -22,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.MediaRoute2Info; import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager; import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;
import com.android.settingslib.R; import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.BluetoothUtils;
@@ -39,7 +42,13 @@ public class BluetoothMediaDevice extends MediaDevice {
BluetoothMediaDevice(Context context, CachedBluetoothDevice device, BluetoothMediaDevice(Context context, CachedBluetoothDevice device,
MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { 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; mCachedDevice = device;
mAudioManager = context.getSystemService(AudioManager.class); mAudioManager = context.getSystemService(AudioManager.class);
initDeviceRecord(); initDeviceRecord();
@@ -57,6 +66,12 @@ public class BluetoothMediaDevice extends MediaDevice {
: mContext.getString(R.string.bluetooth_disconnected); : 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 @Override
public Drawable getIcon() { public Drawable getIcon() {
return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice()) return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice())

View File

@@ -568,8 +568,10 @@ public class InfoMediaManager extends MediaManager {
case TYPE_HDMI: case TYPE_HDMI:
case TYPE_WIRED_HEADSET: case TYPE_WIRED_HEADSET:
case TYPE_WIRED_HEADPHONES: case TYPE_WIRED_HEADPHONES:
mediaDevice = mediaDevice = mPreferenceItemMap.containsKey(route.getId()) ? new PhoneMediaDevice(
new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName); mContext, mRouterManager, route, mPackageName,
mPreferenceItemMap.get(route.getId())) : new PhoneMediaDevice(mContext,
mRouterManager, route, mPackageName);
break; break;
case TYPE_HEARING_AID: case TYPE_HEARING_AID:
case TYPE_BLUETOOTH_A2DP: case TYPE_BLUETOOTH_A2DP:
@@ -579,8 +581,11 @@ public class InfoMediaManager extends MediaManager {
final CachedBluetoothDevice cachedDevice = final CachedBluetoothDevice cachedDevice =
mBluetoothManager.getCachedDeviceManager().findDevice(device); mBluetoothManager.getCachedDeviceManager().findDevice(device);
if (cachedDevice != null) { if (cachedDevice != null) {
mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager, mediaDevice = mPreferenceItemMap.containsKey(route.getId())
route, mPackageName); ? new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager,
route, mPackageName, mPreferenceItemMap.get(route.getId()))
: new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager,
route, mPackageName);
} }
break; break;
case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER: case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER:

View File

@@ -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_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; 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.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info; import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager; import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -51,7 +54,12 @@ public class PhoneMediaDevice extends MediaDevice {
PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
String packageName) { 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(); mDeviceIconUtil = new DeviceIconUtil();
initDeviceRecord(); initDeviceRecord();
} }
@@ -85,6 +93,12 @@ public class PhoneMediaDevice extends MediaDevice {
return name.toString(); 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 @Override
public String getSummary() { public String getSummary() {
return mSummary; return mSummary;

View File

@@ -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_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; 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; import static com.google.common.truth.Truth.assertThat;
@@ -32,6 +35,7 @@ import android.content.Context;
import android.media.MediaRoute2Info; import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager; import android.media.MediaRouter2Manager;
import android.media.NearbyDevice; import android.media.NearbyDevice;
import android.media.RouteListingPreference;
import android.os.Parcel; import android.os.Parcel;
import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.A2dpProfile;
@@ -110,6 +114,8 @@ public class MediaDeviceTest {
@Mock @Mock
private MediaRouter2Manager mMediaRouter2Manager; private MediaRouter2Manager mMediaRouter2Manager;
private RouteListingPreference.Item mItem;
private BluetoothMediaDevice mBluetoothMediaDevice1; private BluetoothMediaDevice mBluetoothMediaDevice1;
private BluetoothMediaDevice mBluetoothMediaDevice2; private BluetoothMediaDevice mBluetoothMediaDevice2;
private BluetoothMediaDevice mBluetoothMediaDevice3; private BluetoothMediaDevice mBluetoothMediaDevice3;
@@ -497,4 +503,21 @@ public class MediaDeviceTest {
assertThat(mBluetoothMediaDevice1.getFeatures().size()).isEqualTo(0); 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);
}
} }