Add missing media control intent categories
Bug: b/342191895
Test: Tested using sample app.
Relnote: Add remote audio and video control intent categories.
Change-Id: I0a9566f390ff35854b51d02e6d92a1d67f1a6cbb
diff --git a/mediarouter/mediarouter/api/current.txt b/mediarouter/mediarouter/api/current.txt
index e67bdb6..453631b 100644
--- a/mediarouter/mediarouter/api/current.txt
+++ b/mediarouter/mediarouter/api/current.txt
@@ -102,7 +102,9 @@
field public static final String ACTION_STOP = "android.media.intent.action.STOP";
field public static final String CATEGORY_LIVE_AUDIO = "android.media.intent.category.LIVE_AUDIO";
field public static final String CATEGORY_LIVE_VIDEO = "android.media.intent.category.LIVE_VIDEO";
+ field public static final String CATEGORY_REMOTE_AUDIO_PLAYBACK = "android.media.intent.category.REMOTE_AUDIO_PLAYBACK";
field public static final String CATEGORY_REMOTE_PLAYBACK = "android.media.intent.category.REMOTE_PLAYBACK";
+ field public static final String CATEGORY_REMOTE_VIDEO_PLAYBACK = "android.media.intent.category.REMOTE_VIDEO_PLAYBACK";
field public static final int ERROR_INVALID_ITEM_ID = 3; // 0x3
field public static final int ERROR_INVALID_SESSION_ID = 2; // 0x2
field public static final int ERROR_UNKNOWN = 0; // 0x0
diff --git a/mediarouter/mediarouter/api/restricted_current.txt b/mediarouter/mediarouter/api/restricted_current.txt
index e67bdb6..453631b 100644
--- a/mediarouter/mediarouter/api/restricted_current.txt
+++ b/mediarouter/mediarouter/api/restricted_current.txt
@@ -102,7 +102,9 @@
field public static final String ACTION_STOP = "android.media.intent.action.STOP";
field public static final String CATEGORY_LIVE_AUDIO = "android.media.intent.category.LIVE_AUDIO";
field public static final String CATEGORY_LIVE_VIDEO = "android.media.intent.category.LIVE_VIDEO";
+ field public static final String CATEGORY_REMOTE_AUDIO_PLAYBACK = "android.media.intent.category.REMOTE_AUDIO_PLAYBACK";
field public static final String CATEGORY_REMOTE_PLAYBACK = "android.media.intent.category.REMOTE_PLAYBACK";
+ field public static final String CATEGORY_REMOTE_VIDEO_PLAYBACK = "android.media.intent.category.REMOTE_VIDEO_PLAYBACK";
field public static final int ERROR_INVALID_ITEM_ID = 3; // 0x3
field public static final int ERROR_INVALID_SESSION_ID = 2; // 0x2
field public static final int ERROR_UNKNOWN = 0; // 0x0
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaControlIntent.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaControlIntent.java
index c360dee..0cedaef 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaControlIntent.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaControlIntent.java
@@ -327,6 +327,24 @@
public static final String CATEGORY_REMOTE_PLAYBACK =
"android.media.intent.category.REMOTE_PLAYBACK";
+ /**
+ * Media control category: Remote audio playback.
+ *
+ * <p>Similar to {@link #CATEGORY_REMOTE_PLAYBACK}, but indicating explicit support for audio
+ * content.
+ */
+ public static final String CATEGORY_REMOTE_AUDIO_PLAYBACK =
+ "android.media.intent.category.REMOTE_AUDIO_PLAYBACK";
+
+ /**
+ * Media control category: Remote video playback.
+ *
+ * <p>Similar to {@link #CATEGORY_REMOTE_PLAYBACK}, but indicating explicit support for video
+ * content.
+ */
+ public static final String CATEGORY_REMOTE_VIDEO_PLAYBACK =
+ "android.media.intent.category.REMOTE_VIDEO_PLAYBACK";
+
/* Remote playback actions that affect individual items. */
/**
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
index 2267cba..234d26d 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
@@ -51,9 +51,9 @@
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_HDMI_ARC;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_HDMI_EARC;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_HEARING_AID;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_SMARTPHONE;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_SMARTWATCH;
-import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_TABLET;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_TABLET_DOCKED;
import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV;
@@ -332,6 +332,10 @@
return FEATURE_LIVE_VIDEO;
case MediaControlIntent.CATEGORY_REMOTE_PLAYBACK:
return FEATURE_REMOTE_PLAYBACK;
+ case MediaControlIntent.CATEGORY_REMOTE_AUDIO_PLAYBACK:
+ return FEATURE_REMOTE_AUDIO_PLAYBACK;
+ case MediaControlIntent.CATEGORY_REMOTE_VIDEO_PLAYBACK:
+ return FEATURE_REMOTE_VIDEO_PLAYBACK;
}
return controlCategory;
}
@@ -344,6 +348,10 @@
return MediaControlIntent.CATEGORY_LIVE_VIDEO;
case FEATURE_REMOTE_PLAYBACK:
return MediaControlIntent.CATEGORY_REMOTE_PLAYBACK;
+ case FEATURE_REMOTE_AUDIO_PLAYBACK:
+ return MediaControlIntent.CATEGORY_REMOTE_AUDIO_PLAYBACK;
+ case FEATURE_REMOTE_VIDEO_PLAYBACK:
+ return MediaControlIntent.CATEGORY_REMOTE_VIDEO_PLAYBACK;
}
return routeFeature;
}
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
index 3f11908..e360241 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/MainActivity.java
@@ -137,11 +137,14 @@
routesManager.reloadDialogType();
// Create a route selector for the type of routes that we care about.
- mSelector = new MediaRouteSelector.Builder()
- .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
- .addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
- .addControlCategory(SampleMediaRouteProvider.CATEGORY_SAMPLE_ROUTE)
- .build();
+ mSelector =
+ new MediaRouteSelector.Builder()
+ .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
+ .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_AUDIO_PLAYBACK)
+ .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_VIDEO_PLAYBACK)
+ .addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
+ .addControlCategory(SampleMediaRouteProvider.CATEGORY_SAMPLE_ROUTE)
+ .build();
mMediaRouter.setOnPrepareTransferListener(mOnPrepareTransferListener);