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