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);