diff options
| author | 2024-11-01 07:59:37 +0000 | |
|---|---|---|
| committer | 2024-11-01 07:59:37 +0000 | |
| commit | 11e9c08fe2698b642535050b1784f3bc3cf28323 (patch) | |
| tree | 305b6867c5e2187e9086b0d80c51f201fe9bf8ec | |
| parent | bda78423fa79fefe858e1878a8121821a4adc5a9 (diff) | |
| parent | ddea818ed71894d76d424c2399295046d7e28603 (diff) | |
Merge "Add audio device type MULTICHANNEL_GROUP" into main
| -rw-r--r-- | core/api/current.txt | 1 | ||||
| -rw-r--r-- | media/java/android/media/AudioDeviceInfo.java | 33 | ||||
| -rw-r--r-- | media/java/android/media/AudioManager.java | 5 | ||||
| -rw-r--r-- | media/java/android/media/AudioSystem.java | 7 |
4 files changed, 44 insertions, 2 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 58228e18d187..143d02b02144 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -21399,6 +21399,7 @@ package android.media { field public static final int TYPE_IP = 20; // 0x14 field public static final int TYPE_LINE_ANALOG = 5; // 0x5 field public static final int TYPE_LINE_DIGITAL = 6; // 0x6 + field @FlaggedApi("android.media.audio.enable_multichannel_group_device") public static final int TYPE_MULTICHANNEL_GROUP = 32; // 0x20 field public static final int TYPE_REMOTE_SUBMIX = 25; // 0x19 field public static final int TYPE_TELEPHONY = 18; // 0x12 field public static final int TYPE_TV_TUNER = 17; // 0x11 diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java index 39b29d0156d2..2da8eecedc4d 100644 --- a/media/java/android/media/AudioDeviceInfo.java +++ b/media/java/android/media/AudioDeviceInfo.java @@ -16,11 +16,15 @@ package android.media; +import static android.media.audio.Flags.FLAG_ENABLE_MULTICHANNEL_GROUP_DEVICE; + import android.Manifest; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.TestApi; +import android.media.audio.Flags; import android.util.SparseIntArray; import com.android.internal.annotations.VisibleForTesting; @@ -192,6 +196,15 @@ public final class AudioDeviceInfo { */ public static final int TYPE_DOCK_ANALOG = 31; + /** + * A device type describing a speaker group that supports multichannel contents. The speakers in + * the group are connected together using local network based protocols. The speaker group + * requires additional input of the physical positions of each individual speaker to provide a + * better experience on multichannel contents. + */ + @FlaggedApi(FLAG_ENABLE_MULTICHANNEL_GROUP_DEVICE) + public static final int TYPE_MULTICHANNEL_GROUP = 32; + /** @hide */ @IntDef(flag = false, prefix = "TYPE", value = { TYPE_BUILTIN_EARPIECE, @@ -224,7 +237,8 @@ public final class AudioDeviceInfo { TYPE_BLE_SPEAKER, TYPE_ECHO_REFERENCE, TYPE_BLE_BROADCAST, - TYPE_DOCK_ANALOG} + TYPE_DOCK_ANALOG, + TYPE_MULTICHANNEL_GROUP} ) @Retention(RetentionPolicy.SOURCE) public @interface AudioDeviceType {} @@ -285,7 +299,8 @@ public final class AudioDeviceInfo { TYPE_BLE_HEADSET, TYPE_BLE_SPEAKER, TYPE_BLE_BROADCAST, - TYPE_DOCK_ANALOG} + TYPE_DOCK_ANALOG, + TYPE_MULTICHANNEL_GROUP} ) @Retention(RetentionPolicy.SOURCE) public @interface AudioDeviceTypeOut {} @@ -321,7 +336,13 @@ public final class AudioDeviceInfo { case TYPE_BLE_BROADCAST: case TYPE_DOCK_ANALOG: return true; + default: + if (Flags.enableMultichannelGroupDevice()) { + if (type == TYPE_MULTICHANNEL_GROUP) { + return true; + } + } return false; } } @@ -665,6 +686,10 @@ public final class AudioDeviceInfo { INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_HEADSET, TYPE_BLE_HEADSET); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_SPEAKER, TYPE_BLE_SPEAKER); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_BROADCAST, TYPE_BLE_BROADCAST); + if (Flags.enableMultichannelGroupDevice()) { + INT_TO_EXT_DEVICE_MAPPING.put( + AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP, TYPE_MULTICHANNEL_GROUP); + } INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BUILTIN_MIC, TYPE_BUILTIN_MIC); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET, TYPE_BLUETOOTH_SCO); @@ -721,6 +746,10 @@ public final class AudioDeviceInfo { EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_HEADSET, AudioSystem.DEVICE_OUT_BLE_HEADSET); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_SPEAKER, AudioSystem.DEVICE_OUT_BLE_SPEAKER); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_BROADCAST, AudioSystem.DEVICE_OUT_BLE_BROADCAST); + if (Flags.enableMultichannelGroupDevice()) { + EXT_TO_INT_DEVICE_MAPPING.put( + TYPE_MULTICHANNEL_GROUP, AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP); + } // privileges mapping to input device EXT_TO_INT_INPUT_DEVICE_MAPPING = new SparseIntArray(); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 8250a536552e..dfe291605522 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -6156,6 +6156,11 @@ public class AudioManager { */ public static final int DEVICE_OUT_BLE_BROADCAST = AudioSystem.DEVICE_OUT_BLE_BROADCAST; /** @hide + * The audio output device code for a wireless speaker group supporting multichannel content. + */ + public static final int DEVICE_OUT_MULTICHANNEL_GROUP = + AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP; + /** @hide * This is not used as a returned value from {@link #getDevicesForStream}, but could be * used in the future in a set method to select whatever default device is chosen by the * platform-specific implementation. diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index bf09cb07a8ed..0ab94f567506 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -1066,6 +1066,8 @@ public class AudioSystem /** @hide */ public static final int DEVICE_OUT_IP = 0x800000; /** @hide */ + public static final int DEVICE_OUT_MULTICHANNEL_GROUP = 0x800001; + /** @hide */ public static final int DEVICE_OUT_BUS = 0x1000000; /** @hide */ public static final int DEVICE_OUT_PROXY = 0x2000000; @@ -1134,6 +1136,7 @@ public class AudioSystem DEVICE_OUT_ALL_SET.add(DEVICE_OUT_AUX_LINE); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_SPEAKER_SAFE); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_IP); + DEVICE_OUT_ALL_SET.add(DEVICE_OUT_MULTICHANNEL_GROUP); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BUS); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_PROXY); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_USB_HEADSET); @@ -1422,6 +1425,8 @@ public class AudioSystem /** @hide */ public static final String DEVICE_OUT_AUX_LINE_NAME = "aux_line"; /** @hide */ public static final String DEVICE_OUT_SPEAKER_SAFE_NAME = "speaker_safe"; /** @hide */ public static final String DEVICE_OUT_IP_NAME = "ip"; + /** @hide */ + public static final String DEVICE_OUT_MULTICHANNEL_GROUP_NAME = "multichannel_group"; /** @hide */ public static final String DEVICE_OUT_BUS_NAME = "bus"; /** @hide */ public static final String DEVICE_OUT_PROXY_NAME = "proxy"; /** @hide */ public static final String DEVICE_OUT_USB_HEADSET_NAME = "usb_headset"; @@ -1515,6 +1520,8 @@ public class AudioSystem return DEVICE_OUT_SPEAKER_SAFE_NAME; case DEVICE_OUT_IP: return DEVICE_OUT_IP_NAME; + case DEVICE_OUT_MULTICHANNEL_GROUP: + return DEVICE_OUT_MULTICHANNEL_GROUP_NAME; case DEVICE_OUT_BUS: return DEVICE_OUT_BUS_NAME; case DEVICE_OUT_PROXY: |