diff --git a/mediarouter/mediarouter/api/current.txt b/mediarouter/mediarouter/api/current.txt
index 7d7510b..94137ad 100644
--- a/mediarouter/mediarouter/api/current.txt
+++ b/mediarouter/mediarouter/api/current.txt
@@ -457,16 +457,30 @@
     field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
     field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
     field public static final int DEVICE_TYPE_AUDIO_VIDEO_RECEIVER = 4; // 0x4
+    field public static final int DEVICE_TYPE_BLE_HEADSET = 22; // 0x16
+    field public static final int DEVICE_TYPE_BLUETOOTH_A2DP = 3; // 0x3
+    field public static final int DEVICE_TYPE_BUILTIN_SPEAKER = 12; // 0xc
     field public static final int DEVICE_TYPE_CAR = 9; // 0x9
     field public static final int DEVICE_TYPE_COMPUTER = 7; // 0x7
+    field public static final int DEVICE_TYPE_DOCK = 19; // 0x13
     field public static final int DEVICE_TYPE_GAME_CONSOLE = 8; // 0x8
     field public static final int DEVICE_TYPE_GROUP = 1000; // 0x3e8
+    field public static final int DEVICE_TYPE_HDMI = 16; // 0x10
+    field public static final int DEVICE_TYPE_HDMI_ARC = 23; // 0x17
+    field public static final int DEVICE_TYPE_HDMI_EARC = 24; // 0x18
+    field public static final int DEVICE_TYPE_HEARING_AID = 21; // 0x15
+    field public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; // 0x2
     field public static final int DEVICE_TYPE_SMARTPHONE = 11; // 0xb
     field public static final int DEVICE_TYPE_SMARTWATCH = 10; // 0xa
-    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
+    field @Deprecated public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
     field public static final int DEVICE_TYPE_TABLET = 5; // 0x5
     field public static final int DEVICE_TYPE_TABLET_DOCKED = 6; // 0x6
     field public static final int DEVICE_TYPE_TV = 1; // 0x1
+    field public static final int DEVICE_TYPE_USB_ACCESSORY = 18; // 0x12
+    field public static final int DEVICE_TYPE_USB_DEVICE = 17; // 0x11
+    field public static final int DEVICE_TYPE_USB_HEADSET = 20; // 0x14
+    field public static final int DEVICE_TYPE_WIRED_HEADPHONES = 14; // 0xe
+    field public static final int DEVICE_TYPE_WIRED_HEADSET = 13; // 0xd
     field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
     field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
     field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
diff --git a/mediarouter/mediarouter/api/restricted_current.txt b/mediarouter/mediarouter/api/restricted_current.txt
index 7d7510b..94137ad 100644
--- a/mediarouter/mediarouter/api/restricted_current.txt
+++ b/mediarouter/mediarouter/api/restricted_current.txt
@@ -457,16 +457,30 @@
     field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
     field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
     field public static final int DEVICE_TYPE_AUDIO_VIDEO_RECEIVER = 4; // 0x4
+    field public static final int DEVICE_TYPE_BLE_HEADSET = 22; // 0x16
+    field public static final int DEVICE_TYPE_BLUETOOTH_A2DP = 3; // 0x3
+    field public static final int DEVICE_TYPE_BUILTIN_SPEAKER = 12; // 0xc
     field public static final int DEVICE_TYPE_CAR = 9; // 0x9
     field public static final int DEVICE_TYPE_COMPUTER = 7; // 0x7
+    field public static final int DEVICE_TYPE_DOCK = 19; // 0x13
     field public static final int DEVICE_TYPE_GAME_CONSOLE = 8; // 0x8
     field public static final int DEVICE_TYPE_GROUP = 1000; // 0x3e8
+    field public static final int DEVICE_TYPE_HDMI = 16; // 0x10
+    field public static final int DEVICE_TYPE_HDMI_ARC = 23; // 0x17
+    field public static final int DEVICE_TYPE_HDMI_EARC = 24; // 0x18
+    field public static final int DEVICE_TYPE_HEARING_AID = 21; // 0x15
+    field public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2; // 0x2
     field public static final int DEVICE_TYPE_SMARTPHONE = 11; // 0xb
     field public static final int DEVICE_TYPE_SMARTWATCH = 10; // 0xa
-    field public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
+    field @Deprecated public static final int DEVICE_TYPE_SPEAKER = 2; // 0x2
     field public static final int DEVICE_TYPE_TABLET = 5; // 0x5
     field public static final int DEVICE_TYPE_TABLET_DOCKED = 6; // 0x6
     field public static final int DEVICE_TYPE_TV = 1; // 0x1
+    field public static final int DEVICE_TYPE_USB_ACCESSORY = 18; // 0x12
+    field public static final int DEVICE_TYPE_USB_DEVICE = 17; // 0x11
+    field public static final int DEVICE_TYPE_USB_HEADSET = 20; // 0x14
+    field public static final int DEVICE_TYPE_WIRED_HEADPHONES = 14; // 0xe
+    field public static final int DEVICE_TYPE_WIRED_HEADSET = 13; // 0xd
     field public static final int PLAYBACK_TYPE_LOCAL = 0; // 0x0
     field public static final int PLAYBACK_TYPE_REMOTE = 1; // 0x1
     field public static final int PLAYBACK_VOLUME_FIXED = 0; // 0x0
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
index 3e6004f..ec6a61b 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
@@ -538,7 +538,7 @@
             switch (route.getDeviceType()) {
                 case MediaRouter.RouteInfo.DEVICE_TYPE_TV:
                     return mTvIcon;
-                case MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER:
+                case MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER:
                     return mSpeakerIcon;
             }
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicChooserDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicChooserDialog.java
index 91cddef..c2819e7 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicChooserDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicChooserDialog.java
@@ -392,7 +392,7 @@
             switch (route.getDeviceType()) {
                 case  MediaRouter.RouteInfo.DEVICE_TYPE_TV:
                     return mTvIcon;
-                case MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER:
+                case MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER:
                     return mSpeakerIcon;
             }
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
index 926f600..07891df 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteDynamicControllerDialog.java
@@ -1013,7 +1013,7 @@
             switch (route.getDeviceType()) {
                 case MediaRouter.RouteInfo.DEVICE_TYPE_TV:
                     return mTvIcon;
-                case MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER:
+                case MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER:
                     return mSpeakerIcon;
             }
 
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
index 7bfccd0..58a5b76 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
@@ -1154,7 +1154,8 @@
             DEVICE_TYPE_UNKNOWN,
             DEVICE_TYPE_TV,
             DEVICE_TYPE_SPEAKER,
-            DEVICE_TYPE_BLUETOOTH,
+            DEVICE_TYPE_REMOTE_SPEAKER,
+            DEVICE_TYPE_BLUETOOTH_A2DP,
             DEVICE_TYPE_AUDIO_VIDEO_RECEIVER,
             DEVICE_TYPE_TABLET,
             DEVICE_TYPE_TABLET_DOCKED,
@@ -1163,6 +1164,18 @@
             DEVICE_TYPE_CAR,
             DEVICE_TYPE_SMARTWATCH,
             DEVICE_TYPE_SMARTPHONE,
+            DEVICE_TYPE_BUILTIN_SPEAKER,
+            DEVICE_TYPE_WIRED_HEADSET,
+            DEVICE_TYPE_WIRED_HEADPHONES,
+            DEVICE_TYPE_HDMI,
+            DEVICE_TYPE_USB_DEVICE,
+            DEVICE_TYPE_USB_ACCESSORY,
+            DEVICE_TYPE_DOCK,
+            DEVICE_TYPE_USB_HEADSET,
+            DEVICE_TYPE_HEARING_AID,
+            DEVICE_TYPE_BLE_HEADSET,
+            DEVICE_TYPE_HDMI_ARC,
+            DEVICE_TYPE_HDMI_EARC,
             DEVICE_TYPE_GROUP
         })
         @Retention(RetentionPolicy.SOURCE)
@@ -1189,17 +1202,27 @@
          * on a speaker.
          *
          * @see #getDeviceType
+         * @deprecated use {@link #DEVICE_TYPE_BUILTIN_SPEAKER} and
+         * {@link #DEVICE_TYPE_REMOTE_SPEAKER} instead.
          */
+        @Deprecated
         public static final int DEVICE_TYPE_SPEAKER = 2;
 
         /**
          * A receiver device type of the route indicating the presentation of the media is happening
+         * on a remote speaker.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_REMOTE_SPEAKER = 2;
+
+        /**
+         * A receiver device type of the route indicating the presentation of the media is happening
          * on a bluetooth device such as a bluetooth speaker.
          *
          * @see #getDeviceType
          */
-        @RestrictTo(LIBRARY)
-        public static final int DEVICE_TYPE_BLUETOOTH = 3;
+        public static final int DEVICE_TYPE_BLUETOOTH_A2DP = 3;
 
         /**
          * A receiver device type indicating that the presentation of the media is happening on an
@@ -1257,6 +1280,103 @@
          * @see #getDeviceType
          */
         public static final int DEVICE_TYPE_SMARTPHONE = 11;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a
+         * speaker system (i.e. a mono speaker or stereo speakers) built into the device.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_BUILTIN_SPEAKER = 12;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a
+         * headset, which is the combination of a headphones and a microphone.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_WIRED_HEADSET = 13;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a pair
+         * of wired headphones.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_WIRED_HEADPHONES = 14;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on an
+         * HDMI connection.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_HDMI = 16;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a USB
+         * audio device.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_USB_DEVICE = 17;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a USB
+         * audio device in accessory mode.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_USB_ACCESSORY = 18;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on an
+         * audio device associated on a dock.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_DOCK = 19;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a USB
+         * audio headset.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_USB_HEADSET = 20;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a
+         * hearing aid device.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_HEARING_AID = 21;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on a
+         * Bluetooth Low Energy (BLE) HEADSET.
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_BLE_HEADSET = 22;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on an
+         * Audio Return Channel of an HDMI connection
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_HDMI_ARC = 23;
+
+        /**
+         * A receiver device type indicating the presentation of the media is happening on an
+         * Enhanced Audio Return Channel of an HDMI connection
+         *
+         * @see #getDeviceType
+         */
+        public static final int DEVICE_TYPE_HDMI_EARC = 24;
+
         /**
          * A receiver device type indicating that the presentation of the media is happening on a
          * group of devices.
@@ -1684,7 +1804,7 @@
         /** */
         @RestrictTo(LIBRARY)
         public boolean isDefaultOrBluetooth() {
-            if (isDefault() || mDeviceType == DEVICE_TYPE_BLUETOOTH) {
+            if (isDefault() || mDeviceType == DEVICE_TYPE_BLUETOOTH_A2DP) {
                 return true;
             }
             // This is a workaround for platform version 23 or below where the system route
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 fe25375..2267cba 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
@@ -21,24 +21,48 @@
 import static android.media.MediaRoute2Info.FEATURE_REMOTE_AUDIO_PLAYBACK;
 import static android.media.MediaRoute2Info.FEATURE_REMOTE_PLAYBACK;
 import static android.media.MediaRoute2Info.FEATURE_REMOTE_VIDEO_PLAYBACK;
+import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET;
+import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
+import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
+import static android.media.MediaRoute2Info.TYPE_DOCK;
 import static android.media.MediaRoute2Info.TYPE_GROUP;
+import static android.media.MediaRoute2Info.TYPE_HDMI;
+import static android.media.MediaRoute2Info.TYPE_HEARING_AID;
 import static android.media.MediaRoute2Info.TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
 import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
 import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
 import static android.media.MediaRoute2Info.TYPE_UNKNOWN;
+import static android.media.MediaRoute2Info.TYPE_USB_ACCESSORY;
+import static android.media.MediaRoute2Info.TYPE_USB_DEVICE;
+import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
+import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
+import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
 
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_AUDIO_VIDEO_RECEIVER;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_BLE_HEADSET;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_BLUETOOTH_A2DP;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_BUILTIN_SPEAKER;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_CAR;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_COMPUTER;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_DOCK;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_GAME_CONSOLE;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_GROUP;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_HDMI;
+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_SMARTPHONE;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_SMARTWATCH;
-import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER;
+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;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_UNKNOWN;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_USB_ACCESSORY;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_USB_DEVICE;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_USB_HEADSET;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_WIRED_HEADPHONES;
+import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_WIRED_HEADSET;
 
 import android.content.IntentFilter;
 import android.media.MediaRoute2Info;
@@ -82,7 +106,6 @@
 
     // TODO(b/282263784): Remove the following constants in favor of using instead SDK constants,
     // once the SDK constants become available.
-    private static final int TYPE_REMOTE_AUDIO_VIDEO_RECEIVER = 1003;
     private static final int TYPE_REMOTE_TABLET = 1004;
     private static final int TYPE_REMOTE_TABLET_DOCKED = 1005;
     private static final int TYPE_REMOTE_COMPUTER = 1006;
@@ -90,7 +113,8 @@
     private static final int TYPE_REMOTE_CAR = 1008;
     private static final int TYPE_REMOTE_SMARTWATCH = 1009;
     private static final int TYPE_REMOTE_SMARTPHONE = 1010;
-    private static final int TYPE_GROUP = 2000;
+    private static final int TYPE_HDMI_ARC = 10;
+    private static final int TYPE_HDMI_EARC = 29;
 
     private MediaRouter2Utils() {}
 
@@ -129,7 +153,7 @@
             case DEVICE_TYPE_TV:
                 builder.addFeature(FEATURE_REMOTE_VIDEO_PLAYBACK);
                 // fall through
-            case DEVICE_TYPE_SPEAKER:
+            case DEVICE_TYPE_REMOTE_SPEAKER:
                 builder.addFeature(FEATURE_REMOTE_AUDIO_PLAYBACK);
         }
         if (!descriptor.getGroupMemberIds().isEmpty()) {
@@ -330,7 +354,7 @@
             case TYPE_REMOTE_TV:
                 return DEVICE_TYPE_TV;
             case TYPE_REMOTE_SPEAKER:
-                return DEVICE_TYPE_SPEAKER;
+                return DEVICE_TYPE_REMOTE_SPEAKER;
             case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER:
                 return DEVICE_TYPE_AUDIO_VIDEO_RECEIVER;
             case TYPE_REMOTE_TABLET:
@@ -347,6 +371,32 @@
                 return DEVICE_TYPE_SMARTWATCH;
             case TYPE_REMOTE_SMARTPHONE:
                 return DEVICE_TYPE_SMARTPHONE;
+            case TYPE_BUILTIN_SPEAKER:
+                return DEVICE_TYPE_BUILTIN_SPEAKER;
+            case TYPE_WIRED_HEADSET:
+                return DEVICE_TYPE_WIRED_HEADSET;
+            case TYPE_WIRED_HEADPHONES:
+                return DEVICE_TYPE_WIRED_HEADPHONES;
+            case TYPE_HDMI:
+                return DEVICE_TYPE_HDMI;
+            case TYPE_HDMI_ARC:
+                return DEVICE_TYPE_HDMI_ARC;
+            case TYPE_HDMI_EARC:
+                return DEVICE_TYPE_HDMI_EARC;
+            case TYPE_USB_DEVICE:
+                return DEVICE_TYPE_USB_DEVICE;
+            case TYPE_USB_ACCESSORY:
+                return DEVICE_TYPE_USB_ACCESSORY;
+            case TYPE_DOCK:
+                return DEVICE_TYPE_DOCK;
+            case TYPE_USB_HEADSET:
+                return DEVICE_TYPE_USB_HEADSET;
+            case TYPE_HEARING_AID:
+                return DEVICE_TYPE_HEARING_AID;
+            case TYPE_BLE_HEADSET:
+                return DEVICE_TYPE_BLE_HEADSET;
+            case TYPE_BLUETOOTH_A2DP:
+                return DEVICE_TYPE_BLUETOOTH_A2DP;
             case TYPE_GROUP:
                 return DEVICE_TYPE_GROUP;
             default:
@@ -359,7 +409,7 @@
         switch (androidXDeviceType) {
             case DEVICE_TYPE_TV:
                 return TYPE_REMOTE_TV;
-            case DEVICE_TYPE_SPEAKER:
+            case DEVICE_TYPE_REMOTE_SPEAKER:
                 return TYPE_REMOTE_SPEAKER;
             case DEVICE_TYPE_AUDIO_VIDEO_RECEIVER:
                 return TYPE_REMOTE_AUDIO_VIDEO_RECEIVER;
@@ -377,6 +427,32 @@
                 return TYPE_REMOTE_SMARTWATCH;
             case DEVICE_TYPE_SMARTPHONE:
                 return TYPE_REMOTE_SMARTPHONE;
+            case DEVICE_TYPE_BUILTIN_SPEAKER:
+                return TYPE_BUILTIN_SPEAKER;
+            case DEVICE_TYPE_WIRED_HEADSET:
+                return TYPE_WIRED_HEADSET;
+            case DEVICE_TYPE_WIRED_HEADPHONES:
+                return TYPE_WIRED_HEADPHONES;
+            case DEVICE_TYPE_HDMI:
+                return TYPE_HDMI;
+            case DEVICE_TYPE_HDMI_ARC:
+                return TYPE_HDMI_ARC;
+            case DEVICE_TYPE_HDMI_EARC:
+                return TYPE_HDMI_EARC;
+            case DEVICE_TYPE_USB_DEVICE:
+                return TYPE_USB_DEVICE;
+            case DEVICE_TYPE_USB_ACCESSORY:
+                return TYPE_USB_ACCESSORY;
+            case DEVICE_TYPE_DOCK:
+                return TYPE_DOCK;
+            case DEVICE_TYPE_USB_HEADSET:
+                return TYPE_USB_HEADSET;
+            case DEVICE_TYPE_HEARING_AID:
+                return TYPE_HEARING_AID;
+            case DEVICE_TYPE_BLE_HEADSET:
+                return TYPE_BLE_HEADSET;
+            case DEVICE_TYPE_BLUETOOTH_A2DP:
+                return TYPE_BLUETOOTH_A2DP;
             case DEVICE_TYPE_GROUP:
                 return TYPE_GROUP;
             default:
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/data/RouteItem.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/data/RouteItem.java
index d047bb4..b093db9 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/data/RouteItem.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/data/RouteItem.java
@@ -153,8 +153,8 @@
 
     public enum DeviceType {
         TV(MediaRouter.RouteInfo.DEVICE_TYPE_TV),
-        SPEAKER(MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER),
-        BLUETOOTH(MediaRouter.RouteInfo.DEVICE_TYPE_BLUETOOTH),
+        SPEAKER(MediaRouter.RouteInfo.DEVICE_TYPE_REMOTE_SPEAKER),
+        BLUETOOTH(MediaRouter.RouteInfo.DEVICE_TYPE_BLUETOOTH_A2DP),
         AUDIO_VIDEO_RECEIVER(MediaRouter.RouteInfo.DEVICE_TYPE_AUDIO_VIDEO_RECEIVER),
         TABLET(MediaRouter.RouteInfo.DEVICE_TYPE_TABLET),
         TABLET_DOCKED(MediaRouter.RouteInfo.DEVICE_TYPE_TABLET_DOCKED),
