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