Merge "Hide non transferable routes" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
88146b483b
@@ -221,9 +221,23 @@ public final class MediaRouter2Manager {
|
||||
Objects.requireNonNull(packageName, "packageName must not be null");
|
||||
|
||||
List<RoutingSessionInfo> sessions = getRoutingSessions(packageName);
|
||||
return getAvailableRoutesForRoutingSession(sessions.get(sessions.size() - 1));
|
||||
return getAvailableRoutes(sessions.get(sessions.size() - 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets routes that can be transferable seamlessly for an application.
|
||||
*
|
||||
* @param packageName the package name of the application
|
||||
*/
|
||||
@NonNull
|
||||
public List<MediaRoute2Info> getTransferableRoutes(@NonNull String packageName) {
|
||||
Objects.requireNonNull(packageName, "packageName must not be null");
|
||||
|
||||
List<RoutingSessionInfo> sessions = getRoutingSessions(packageName);
|
||||
return getTransferableRoutes(sessions.get(sessions.size() - 1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets available routes for the given routing session.
|
||||
* The returned routes can be passed to
|
||||
@@ -232,8 +246,7 @@ public final class MediaRouter2Manager {
|
||||
* @param sessionInfo the routing session that would be transferred
|
||||
*/
|
||||
@NonNull
|
||||
public List<MediaRoute2Info> getAvailableRoutesForRoutingSession(
|
||||
@NonNull RoutingSessionInfo sessionInfo) {
|
||||
public List<MediaRoute2Info> getAvailableRoutes(@NonNull RoutingSessionInfo sessionInfo) {
|
||||
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
||||
|
||||
List<MediaRoute2Info> routes = new ArrayList<>();
|
||||
@@ -255,6 +268,45 @@ public final class MediaRouter2Manager {
|
||||
return routes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets routes that can be transferable seamlessly for the given routing session.
|
||||
* The returned routes can be passed to
|
||||
* {@link #transfer(RoutingSessionInfo, MediaRoute2Info)} for transferring the routing session.
|
||||
* <p>
|
||||
* This includes routes that are {@link RoutingSessionInfo#getTransferableRoutes() transferable}
|
||||
* by provider itself and routes that are different playback type (e.g. local/remote)
|
||||
* from the given routing session.
|
||||
*
|
||||
* @param sessionInfo the routing session that would be transferred
|
||||
*/
|
||||
@NonNull
|
||||
public List<MediaRoute2Info> getTransferableRoutes(@NonNull RoutingSessionInfo sessionInfo) {
|
||||
Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
|
||||
|
||||
List<MediaRoute2Info> routes = new ArrayList<>();
|
||||
|
||||
String packageName = sessionInfo.getClientPackageName();
|
||||
List<String> preferredFeatures = mPreferredFeaturesMap.get(packageName);
|
||||
if (preferredFeatures == null) {
|
||||
preferredFeatures = Collections.emptyList();
|
||||
}
|
||||
synchronized (mRoutesLock) {
|
||||
for (MediaRoute2Info route : mRoutes.values()) {
|
||||
if (sessionInfo.getSelectedRoutes().contains(route.getId())
|
||||
|| sessionInfo.getTransferableRoutes().contains(route.getId())) {
|
||||
routes.add(route);
|
||||
continue;
|
||||
}
|
||||
// Add Phone -> Cast and Cast -> Phone
|
||||
if (route.hasAnyFeatures(preferredFeatures)
|
||||
&& (sessionInfo.isSystemSession() ^ route.isSystemRoute())) {
|
||||
routes.add(route);
|
||||
}
|
||||
}
|
||||
}
|
||||
return routes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the preferred features of the specified package name.
|
||||
*/
|
||||
|
||||
@@ -372,7 +372,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
Log.w(TAG, "shouldDisableMediaOutput() package name is null or empty!");
|
||||
return false;
|
||||
}
|
||||
final List<MediaRoute2Info> infos = mRouterManager.getAvailableRoutes(packageName);
|
||||
final List<MediaRoute2Info> infos = mRouterManager.getTransferableRoutes(packageName);
|
||||
if (infos.size() == 1) {
|
||||
final MediaRoute2Info info = infos.get(0);
|
||||
final int deviceType = info.getType();
|
||||
@@ -456,7 +456,7 @@ public class InfoMediaManager extends MediaManager {
|
||||
}
|
||||
|
||||
private void buildAvailableRoutes() {
|
||||
for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
|
||||
for (MediaRoute2Info route : mRouterManager.getTransferableRoutes(mPackageName)) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "buildAvailableRoutes() route : " + route.getName() + ", volume : "
|
||||
+ route.getVolume() + ", type : " + route.getType());
|
||||
|
||||
Reference in New Issue
Block a user