Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8f4a8a5 authored by Kyunglyul Hyun's avatar Kyunglyul Hyun Committed by Android (Google) Code Review
Browse files

Merge "System routes are not automatically exposed" into rvc-dev

parents 4b647272 c0363501
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ public final class MediaRoute2Info implements Parcelable {
    public static final int TYPE_GROUP = 2000;

    /**
     * Media feature: Live audio.
     * Route feature: Live audio.
     * <p>
     * A route that supports live audio routing will allow the media audio stream
     * to be sent to supported destinations.  This can include internal speakers or
@@ -241,7 +241,7 @@ public final class MediaRoute2Info implements Parcelable {
    public static final String FEATURE_LIVE_AUDIO = "android.media.route.feature.LIVE_AUDIO";

    /**
     * Media feature: Live video.
     * Route feature: Live video.
     * <p>
     * A route that supports live video routing will allow a mirrored version
     * of the device's primary display or a customized
@@ -262,7 +262,14 @@ public final class MediaRoute2Info implements Parcelable {
    public static final String FEATURE_LIVE_VIDEO = "android.media.route.feature.LIVE_VIDEO";

    /**
     * Media feature: Remote playback.
     * Route feature: Local playback.
     * @hide
     */
    public static final String FEATURE_LOCAL_PLAYBACK =
            "android.media.route.feature.LOCAL_PLAYBACK";

    /**
     * Route feature: Remote playback.
     * <p>
     * A route that supports remote playback routing will allow an application to send
     * requests to play content remotely to supported destinations.
@@ -283,7 +290,7 @@ public final class MediaRoute2Info implements Parcelable {
            "android.media.route.feature.REMOTE_PLAYBACK";

    /**
     * Media feature: Remote audio playback.
     * Route feature: Remote audio playback.
     * <p>
     * A route that supports remote audio playback routing will allow an application to send
     * requests to play audio content remotely to supported destinations.
@@ -295,7 +302,7 @@ public final class MediaRoute2Info implements Parcelable {
            "android.media.route.feature.REMOTE_AUDIO_PLAYBACK";

    /**
     * Media feature: Remote video playback.
     * Route feature: Remote video playback.
     * <p>
     * A route that supports remote video playback routing will allow an application to send
     * requests to play video content remotely to supported destinations.
+9 −19
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ public final class MediaRouter2 {
     *
     * @hide
     */
    public static boolean checkRouteListContainsRouteId(@NonNull List<MediaRoute2Info> routeList,
    static boolean checkRouteListContainsRouteId(@NonNull List<MediaRoute2Info> routeList,
            @NonNull String routeId) {
        for (MediaRoute2Info info : routeList) {
            if (TextUtils.equals(routeId, info.getId())) {
@@ -258,8 +258,6 @@ public final class MediaRouter2 {
     * Gets the unmodifiable list of {@link MediaRoute2Info routes} currently
     * known to the media router.
     * <p>
     * {@link MediaRoute2Info#isSystemRoute() System routes} such as phone speaker,
     * Bluetooth devices are always included in the list.
     * Please note that the list can be changed before callbacks are invoked.
     * </p>
     *
@@ -274,8 +272,7 @@ public final class MediaRouter2 {

                List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
                for (MediaRoute2Info route : mRoutes.values()) {
                    if (route.isSystemRoute()
                            || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                        filteredRoutes.add(route);
                    }
                }
@@ -526,8 +523,7 @@ public final class MediaRouter2 {
                if (!currentRoutesIds.contains(routeId)) {
                    // This route is removed while the callback is unregistered.
                    MediaRoute2Info route = mRoutes.get(routeId);
                    if (route.isSystemRoute()
                            || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                        removedRoutes.add(mRoutes.get(routeId));
                    }
                }
@@ -537,16 +533,14 @@ public final class MediaRouter2 {
                if (mRoutes.containsKey(route.getId())) {
                    if (!route.equals(mRoutes.get(route.getId()))) {
                        // This route is changed while the callback is unregistered.
                        if (route.isSystemRoute()
                                || route.hasAnyFeatures(
                        if (route.hasAnyFeatures(
                                        mDiscoveryPreference.getPreferredFeatures())) {
                            changedRoutes.add(route);
                        }
                    }
                } else {
                    // This route is added while the callback is unregistered.
                    if (route.isSystemRoute()
                            || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                        addedRoutes.add(route);
                    }
                }
@@ -582,8 +576,7 @@ public final class MediaRouter2 {
        synchronized (sRouterLock) {
            for (MediaRoute2Info route : routes) {
                mRoutes.put(route.getId(), route);
                if (route.isSystemRoute()
                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    addedRoutes.add(route);
                }
            }
@@ -599,8 +592,7 @@ public final class MediaRouter2 {
        synchronized (sRouterLock) {
            for (MediaRoute2Info route : routes) {
                mRoutes.remove(route.getId());
                if (route.isSystemRoute()
                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    removedRoutes.add(route);
                }
            }
@@ -616,8 +608,7 @@ public final class MediaRouter2 {
        synchronized (sRouterLock) {
            for (MediaRoute2Info route : routes) {
                mRoutes.put(route.getId(), route);
                if (route.isSystemRoute()
                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                    changedRoutes.add(route);
                }
            }
@@ -799,8 +790,7 @@ public final class MediaRouter2 {
    private List<MediaRoute2Info> filterRoutes(List<MediaRoute2Info> routes,
            RouteDiscoveryPreference discoveryRequest) {
        return routes.stream()
                .filter(route -> route.isSystemRoute()
                        || route.hasAnyFeatures(discoveryRequest.getPreferredFeatures()))
                .filter(route -> route.hasAnyFeatures(discoveryRequest.getPreferredFeatures()))
                .collect(Collectors.toList());
    }

+4 −16
Original line number Diff line number Diff line
@@ -165,20 +165,8 @@ public final class MediaRouter2Manager {
    public List<MediaRoute2Info> getAvailableRoutes(@NonNull String packageName) {
        Objects.requireNonNull(packageName, "packageName must not be null");

        List<MediaRoute2Info> routes = new ArrayList<>();

        List<String> preferredFeatures = mPreferredFeaturesMap.get(packageName);
        if (preferredFeatures == null) {
            preferredFeatures = Collections.emptyList();
        }
        synchronized (mRoutesLock) {
            for (MediaRoute2Info route : mRoutes.values()) {
                if (route.isSystemRoute() || route.hasAnyFeatures(preferredFeatures)) {
                    routes.add(route);
                }
            }
        }
        return routes;
        List<RoutingSessionInfo> sessions = getRoutingSessions(packageName);
        return getAvailableRoutesForRoutingSession(sessions.get(sessions.size() - 1));
    }

    /**
@@ -202,7 +190,7 @@ public final class MediaRouter2Manager {
        }
        synchronized (mRoutesLock) {
            for (MediaRoute2Info route : mRoutes.values()) {
                if (route.isSystemRoute() || route.hasAnyFeatures(preferredFeatures)
                if (route.hasAnyFeatures(preferredFeatures)
                        || sessionInfo.getSelectedRoutes().contains(route.getId())
                        || sessionInfo.getTransferableRoutes().contains(route.getId())) {
                    routes.add(route);
@@ -303,7 +291,7 @@ public final class MediaRouter2Manager {
    }

    /**
     * Gets the list of all discovered routes
     * Gets the list of all discovered routes.
     */
    @NonNull
    public List<MediaRoute2Info> getAllRoutes() {
+0 −3
Original line number Diff line number Diff line
@@ -97,7 +97,6 @@ public class MediaRouter2ManagerTest {

    public static final List<String> FEATURES_ALL = new ArrayList();
    public static final List<String> FEATURES_SPECIAL = new ArrayList();
    private static final List<String> FEATURES_LIVE_AUDIO = new ArrayList<>();

    static {
        FEATURES_ALL.add(FEATURE_SAMPLE);
@@ -105,8 +104,6 @@ public class MediaRouter2ManagerTest {
        FEATURES_ALL.add(FEATURE_LIVE_AUDIO);

        FEATURES_SPECIAL.add(FEATURE_SPECIAL);

        FEATURES_LIVE_AUDIO.add(FEATURE_LIVE_AUDIO);
    }

    @Before
+1 −0
Original line number Diff line number Diff line
@@ -286,6 +286,7 @@ class BluetoothRouteProvider {
        // Current volume will be set when connected.
        newBtRoute.route = new MediaRoute2Info.Builder(routeId, deviceName)
                .addFeature(MediaRoute2Info.FEATURE_LIVE_AUDIO)
                .addFeature(MediaRoute2Info.FEATURE_LOCAL_PLAYBACK)
                .setConnectionState(MediaRoute2Info.CONNECTION_STATE_DISCONNECTED)
                .setDescription(mContext.getResources().getText(
                        R.string.bluetooth_a2dp_audio_route_name).toString())
Loading