Loading packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public class BluetoothMediaDevice extends MediaDevice { BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); super(context, routerManager, info, packageName, null); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +8 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ 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 @@ -40,11 +41,16 @@ public class InfoMediaDevice extends MediaDevice { private static final String TAG = "InfoMediaDevice"; InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); initDeviceRecord(); } InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, routerManager, info, packageName, null); } @Override public String getName() { return mRouteInfo.getName().toString(); Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +31 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.stream.Collectors; Loading @@ -82,6 +84,8 @@ public class InfoMediaManager extends MediaManager { private MediaDevice mCurrentConnectedDevice; private LocalBluetoothManager mBluetoothManager; private final Map<String, RouteListingPreference.Item> mPreferenceItemMap = new ConcurrentHashMap<>(); public InfoMediaManager(Context context, String packageName, Notification notification, LocalBluetoothManager localBluetoothManager) { Loading Loading @@ -248,7 +252,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getSelectableRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading @@ -275,7 +279,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getDeselectableRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); Log.d(TAG, route.getName() + " is deselectable for " + mPackageName); } return deviceList; Loading @@ -302,7 +306,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getSelectedRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading Loading @@ -510,7 +514,7 @@ public class InfoMediaManager extends MediaManager { case TYPE_GROUP: //TODO(b/148765806): use correct device type once api is ready. mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); mPackageName, mPreferenceItemMap.get(route.getId())); if (!TextUtils.isEmpty(mPackageName) && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) { mediaDevice.setState(STATE_SELECTED); Loading Loading @@ -601,6 +605,16 @@ public class InfoMediaManager extends MediaManager { public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { Api34Impl.onRouteListingPreferenceUpdated(packageName, routeListingPreference, mPreferenceItemMap); } } } @RequiresApi(34) Loading Loading @@ -666,5 +680,18 @@ public class InfoMediaManager extends MediaManager { return routeListingPreference != null && !routeListingPreference.getUseSystemOrdering(); } @DoNotInline static void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference, Map<String, RouteListingPreference.Item> preferenceItemMap) { preferenceItemMap.clear(); if (routeListingPreference != null) { routeListingPreference.getItems().forEach((item) -> { preferenceItemMap.put(item.getRouteId(), item); }); } } } } packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +27 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ 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.RouteListingPreference.Item.FLAG_SUGGESTED_ROUTE; import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; Loading @@ -39,10 +40,14 @@ import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.NearbyDevice; import android.media.RouteListingPreference; import android.os.Build; import android.text.TextUtils; import android.util.Log; import androidx.annotation.DoNotInline; import androidx.annotation.IntDef; import androidx.annotation.RequiresApi; import androidx.annotation.VisibleForTesting; import java.lang.annotation.Retention; Loading Loading @@ -87,14 +92,16 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { protected final Context mContext; protected final MediaRoute2Info mRouteInfo; protected final MediaRouter2Manager mRouterManager; protected final RouteListingPreference.Item mItem; protected final String mPackageName; MediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { String packageName, RouteListingPreference.Item item) { mContext = context; mRouteInfo = info; mRouterManager = routerManager; mPackageName = packageName; mItem = item; setType(info); } Loading Loading @@ -180,10 +187,21 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { /** * Get unique ID that represent MediaDevice * * @return unique id of MediaDevice */ public abstract String getId(); /** * Checks if device is suggested device from application * * @return true if device is suggested device */ public boolean isSuggestedDevice() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && Api34Impl.isSuggestedDevice(mItem); } void setConnectedRecord() { mConnectedRecord++; ConnectionRecordManager.getInstance().setConnectionRecord(mContext, getId(), Loading Loading @@ -466,4 +484,12 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { final MediaDevice otherDevice = (MediaDevice) obj; return otherDevice.getId().equals(getId()); } @RequiresApi(34) private static class Api34Impl { @DoNotInline static boolean isSuggestedDevice(RouteListingPreference.Item item) { return item != null && item.getFlags() == FLAG_SUGGESTED_ROUTE; } } } packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ public class PhoneMediaDevice extends MediaDevice { PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); super(context, routerManager, info, packageName, null); mDeviceIconUtil = new DeviceIconUtil(); initDeviceRecord(); } Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public class BluetoothMediaDevice extends MediaDevice { BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); super(context, routerManager, info, packageName, null); mCachedDevice = device; mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +8 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ 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 @@ -40,11 +41,16 @@ public class InfoMediaDevice extends MediaDevice { private static final String TAG = "InfoMediaDevice"; InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); String packageName, RouteListingPreference.Item item) { super(context, routerManager, info, packageName, item); initDeviceRecord(); } InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { this(context, routerManager, info, packageName, null); } @Override public String getName() { return mRouteInfo.getName().toString(); Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +31 −4 Original line number Diff line number Diff line Loading @@ -58,7 +58,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.stream.Collectors; Loading @@ -82,6 +84,8 @@ public class InfoMediaManager extends MediaManager { private MediaDevice mCurrentConnectedDevice; private LocalBluetoothManager mBluetoothManager; private final Map<String, RouteListingPreference.Item> mPreferenceItemMap = new ConcurrentHashMap<>(); public InfoMediaManager(Context context, String packageName, Notification notification, LocalBluetoothManager localBluetoothManager) { Loading Loading @@ -248,7 +252,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getSelectableRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading @@ -275,7 +279,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getDeselectableRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); Log.d(TAG, route.getName() + " is deselectable for " + mPackageName); } return deviceList; Loading @@ -302,7 +306,7 @@ public class InfoMediaManager extends MediaManager { if (info != null) { for (MediaRoute2Info route : mRouterManager.getSelectedRoutes(info)) { deviceList.add(new InfoMediaDevice(mContext, mRouterManager, route, mPackageName)); route, mPackageName, mPreferenceItemMap.get(route.getId()))); } return deviceList; } Loading Loading @@ -510,7 +514,7 @@ public class InfoMediaManager extends MediaManager { case TYPE_GROUP: //TODO(b/148765806): use correct device type once api is ready. mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); mPackageName, mPreferenceItemMap.get(route.getId())); if (!TextUtils.isEmpty(mPackageName) && getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) { mediaDevice.setState(STATE_SELECTED); Loading Loading @@ -601,6 +605,16 @@ public class InfoMediaManager extends MediaManager { public void onSessionUpdated(RoutingSessionInfo sessionInfo) { refreshDevices(); } @Override public void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { Api34Impl.onRouteListingPreferenceUpdated(packageName, routeListingPreference, mPreferenceItemMap); } } } @RequiresApi(34) Loading Loading @@ -666,5 +680,18 @@ public class InfoMediaManager extends MediaManager { return routeListingPreference != null && !routeListingPreference.getUseSystemOrdering(); } @DoNotInline static void onRouteListingPreferenceUpdated( String packageName, RouteListingPreference routeListingPreference, Map<String, RouteListingPreference.Item> preferenceItemMap) { preferenceItemMap.clear(); if (routeListingPreference != null) { routeListingPreference.getItems().forEach((item) -> { preferenceItemMap.put(item.getRouteId(), item); }); } } } }
packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +27 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ 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.RouteListingPreference.Item.FLAG_SUGGESTED_ROUTE; import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; Loading @@ -39,10 +40,14 @@ import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.NearbyDevice; import android.media.RouteListingPreference; import android.os.Build; import android.text.TextUtils; import android.util.Log; import androidx.annotation.DoNotInline; import androidx.annotation.IntDef; import androidx.annotation.RequiresApi; import androidx.annotation.VisibleForTesting; import java.lang.annotation.Retention; Loading Loading @@ -87,14 +92,16 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { protected final Context mContext; protected final MediaRoute2Info mRouteInfo; protected final MediaRouter2Manager mRouterManager; protected final RouteListingPreference.Item mItem; protected final String mPackageName; MediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { String packageName, RouteListingPreference.Item item) { mContext = context; mRouteInfo = info; mRouterManager = routerManager; mPackageName = packageName; mItem = item; setType(info); } Loading Loading @@ -180,10 +187,21 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { /** * Get unique ID that represent MediaDevice * * @return unique id of MediaDevice */ public abstract String getId(); /** * Checks if device is suggested device from application * * @return true if device is suggested device */ public boolean isSuggestedDevice() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE && Api34Impl.isSuggestedDevice(mItem); } void setConnectedRecord() { mConnectedRecord++; ConnectionRecordManager.getInstance().setConnectionRecord(mContext, getId(), Loading Loading @@ -466,4 +484,12 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { final MediaDevice otherDevice = (MediaDevice) obj; return otherDevice.getId().equals(getId()); } @RequiresApi(34) private static class Api34Impl { @DoNotInline static boolean isSuggestedDevice(RouteListingPreference.Item item) { return item != null && item.getFlags() == FLAG_SUGGESTED_ROUTE; } } }
packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ public class PhoneMediaDevice extends MediaDevice { PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); super(context, routerManager, info, packageName, null); mDeviceIconUtil = new DeviceIconUtil(); initDeviceRecord(); } Loading