summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyunglyul Hyun <klhyun@google.com>2020-06-22 04:52:17 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-06-22 04:52:17 +0000
commitc8f4a8a5e98832e2764a09e23f480779a0a312ce (patch)
tree8ab653fee16a14223e8a97c03d5911d1bd2617d9
parent4b6472722e763d1aa9ba4abcb302a671d2fb9354 (diff)
parentc036350122226b86130773cc6b472f0a2bbe756d (diff)
Merge "System routes are not automatically exposed" into rvc-dev
-rw-r--r--media/java/android/media/MediaRoute2Info.java17
-rw-r--r--media/java/android/media/MediaRouter2.java28
-rw-r--r--media/java/android/media/MediaRouter2Manager.java20
-rw-r--r--media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java3
-rw-r--r--services/core/java/com/android/server/media/BluetoothRouteProvider.java1
-rw-r--r--services/core/java/com/android/server/media/SystemMediaRoute2Provider.java2
6 files changed, 28 insertions, 43 deletions
diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java
index 54c0bc94c2d0..fad25e071f90 100644
--- a/media/java/android/media/MediaRoute2Info.java
+++ b/media/java/android/media/MediaRoute2Info.java
@@ -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.
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 6fe48a4ef7e0..8e95239a73f8 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -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());
}
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index ce036deb6164..dad7859db622 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -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() {
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
index 638a842e4e5f..0979627e5e8d 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java
@@ -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
diff --git a/services/core/java/com/android/server/media/BluetoothRouteProvider.java b/services/core/java/com/android/server/media/BluetoothRouteProvider.java
index 25d54db0f839..25bbfa02fa05 100644
--- a/services/core/java/com/android/server/media/BluetoothRouteProvider.java
+++ b/services/core/java/com/android/server/media/BluetoothRouteProvider.java
@@ -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())
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
index e01f36513c5c..42d4c88959bd 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
@@ -18,6 +18,7 @@ package com.android.server.media;
import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
import static android.media.MediaRoute2Info.FEATURE_LIVE_VIDEO;
+import static android.media.MediaRoute2Info.FEATURE_LOCAL_PLAYBACK;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_DOCK;
import static android.media.MediaRoute2Info.TYPE_HDMI;
@@ -262,6 +263,7 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
.setType(type)
.addFeature(FEATURE_LIVE_AUDIO)
.addFeature(FEATURE_LIVE_VIDEO)
+ .addFeature(FEATURE_LOCAL_PLAYBACK)
.setConnectionState(MediaRoute2Info.CONNECTION_STATE_CONNECTED)
.build();
updateProviderState();