diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index ab5d503eac624acd236c26b818376d66a36fdecb..ab2b1109a27fb3498e5140070aa233c5bae43b40 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -76,6 +76,7 @@ aconfig_declarations_group {
         "android.widget.flags-aconfig-java",
         "backstage_power_flags_lib",
         "backup_flags_lib",
+        "bluetooth_exported_flags_java_lib",
         "camera_platform_flags_core_java_lib",
         "com.android.hardware.input-aconfig-java",
         "com.android.input.flags-aconfig-java",
diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java
index a649d34884a7fa2cf11e6a95e67edb2f7db00710..04e6a364f406b06e0f9382a7baf609936c609b16 100644
--- a/services/core/java/com/android/server/audio/BtHelper.java
+++ b/services/core/java/com/android/server/audio/BtHelper.java
@@ -1198,21 +1198,46 @@ public class BtHelper {
             return AUDIO_DEVICE_CATEGORY_UNKNOWN;
         }
         String deviceCategory = new String(deviceType);
-        switch (deviceCategory) {
-            case DEVICE_TYPE_HEARING_AID:
-                return AUDIO_DEVICE_CATEGORY_HEARING_AID;
-            case DEVICE_TYPE_CARKIT:
-                return AUDIO_DEVICE_CATEGORY_CARKIT;
-            case DEVICE_TYPE_HEADSET:
-            case DEVICE_TYPE_UNTETHERED_HEADSET:
-                return AUDIO_DEVICE_CATEGORY_HEADPHONES;
-            case DEVICE_TYPE_SPEAKER:
-                return AUDIO_DEVICE_CATEGORY_SPEAKER;
-            case DEVICE_TYPE_WATCH:
-                return AUDIO_DEVICE_CATEGORY_WATCH;
-            case DEVICE_TYPE_DEFAULT:
-            default:
-                // fall through
+
+        if (com.android.bluetooth.flags.Flags.supportMetadataDeviceTypesApis()) {
+            switch (deviceCategory) {
+                case DEVICE_TYPE_HEARING_AID:
+                    return AUDIO_DEVICE_CATEGORY_HEARING_AID;
+                case DEVICE_TYPE_CARKIT:
+                    return AUDIO_DEVICE_CATEGORY_CARKIT;
+                case DEVICE_TYPE_HEADSET:
+                case DEVICE_TYPE_UNTETHERED_HEADSET:
+                    return AUDIO_DEVICE_CATEGORY_HEADPHONES;
+                case DEVICE_TYPE_SPEAKER:
+                    return AUDIO_DEVICE_CATEGORY_SPEAKER;
+                case DEVICE_TYPE_WATCH:
+                    return AUDIO_DEVICE_CATEGORY_WATCH;
+                case DEVICE_TYPE_DEFAULT:
+                    // fall through
+                default:
+                    break;
+            }
+        } else {
+            // Duplicate switch for now to cover the cases when the flag is not rolled out
+            // This will cover the cases in which clients could write directly to these
+            // metadata keys
+            switch (deviceCategory) {
+                case "HearingAid":
+                    return AUDIO_DEVICE_CATEGORY_HEARING_AID;
+                case "Carkit":
+                    return AUDIO_DEVICE_CATEGORY_CARKIT;
+                case "Headset":
+                case DEVICE_TYPE_UNTETHERED_HEADSET:
+                    return AUDIO_DEVICE_CATEGORY_HEADPHONES;
+                case "Speaker":
+                    return AUDIO_DEVICE_CATEGORY_SPEAKER;
+                case "Watch":
+                    return AUDIO_DEVICE_CATEGORY_WATCH;
+                case "Default":
+                    // fall through
+                default:
+                    break;
+            }
         }
 
         BluetoothClass deviceClass = device.getBluetoothClass();