Merge "audio: add Bluetooth LE Audio broadcast device" am: 26d7800efa am: 29a988bf35

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1978307

Change-Id: Ibb27fc945fea99eb24caffe6703168ef611e93d5
This commit is contained in:
Eric Laurent
2022-02-09 18:41:01 +00:00
committed by Automerger Merge Worker
5 changed files with 26 additions and 3 deletions

View File

@@ -19114,6 +19114,7 @@ package android.media {
method public boolean isSink(); method public boolean isSink();
method public boolean isSource(); method public boolean isSource();
field public static final int TYPE_AUX_LINE = 19; // 0x13 field public static final int TYPE_AUX_LINE = 19; // 0x13
field public static final int TYPE_BLE_BROADCAST = 30; // 0x1e
field public static final int TYPE_BLE_HEADSET = 26; // 0x1a field public static final int TYPE_BLE_HEADSET = 26; // 0x1a
field public static final int TYPE_BLE_SPEAKER = 27; // 0x1b field public static final int TYPE_BLE_SPEAKER = 27; // 0x1b
field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8 field public static final int TYPE_BLUETOOTH_A2DP = 8; // 0x8

View File

@@ -177,6 +177,11 @@ public final class AudioDeviceInfo {
*/ */
public static final int TYPE_HDMI_EARC = 29; public static final int TYPE_HDMI_EARC = 29;
/**
* A device type describing a Bluetooth Low Energy (BLE) broadcast group.
*/
public static final int TYPE_BLE_BROADCAST = 30;
/** @hide */ /** @hide */
@IntDef(flag = false, prefix = "TYPE", value = { @IntDef(flag = false, prefix = "TYPE", value = {
TYPE_BUILTIN_EARPIECE, TYPE_BUILTIN_EARPIECE,
@@ -207,7 +212,8 @@ public final class AudioDeviceInfo {
TYPE_REMOTE_SUBMIX, TYPE_REMOTE_SUBMIX,
TYPE_BLE_HEADSET, TYPE_BLE_HEADSET,
TYPE_BLE_SPEAKER, TYPE_BLE_SPEAKER,
TYPE_ECHO_REFERENCE} TYPE_ECHO_REFERENCE,
TYPE_BLE_BROADCAST}
) )
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface AudioDeviceType {} public @interface AudioDeviceType {}
@@ -264,7 +270,8 @@ public final class AudioDeviceInfo {
TYPE_HEARING_AID, TYPE_HEARING_AID,
TYPE_BUILTIN_SPEAKER_SAFE, TYPE_BUILTIN_SPEAKER_SAFE,
TYPE_BLE_HEADSET, TYPE_BLE_HEADSET,
TYPE_BLE_SPEAKER} TYPE_BLE_SPEAKER,
TYPE_BLE_BROADCAST}
) )
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface AudioDeviceTypeOut {} public @interface AudioDeviceTypeOut {}
@@ -296,6 +303,7 @@ public final class AudioDeviceInfo {
case TYPE_BUILTIN_SPEAKER_SAFE: case TYPE_BUILTIN_SPEAKER_SAFE:
case TYPE_BLE_HEADSET: case TYPE_BLE_HEADSET:
case TYPE_BLE_SPEAKER: case TYPE_BLE_SPEAKER:
case TYPE_BLE_BROADCAST:
return true; return true;
default: default:
return false; return false;
@@ -627,6 +635,7 @@ public final class AudioDeviceInfo {
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_REMOTE_SUBMIX, TYPE_REMOTE_SUBMIX); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_REMOTE_SUBMIX, TYPE_REMOTE_SUBMIX);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_HEADSET, TYPE_BLE_HEADSET); 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_SPEAKER, TYPE_BLE_SPEAKER);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_BROADCAST, TYPE_BLE_BROADCAST);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BUILTIN_MIC, TYPE_BUILTIN_MIC); 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); INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET, TYPE_BLUETOOTH_SCO);
@@ -684,6 +693,7 @@ public final class AudioDeviceInfo {
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_REMOTE_SUBMIX, AudioSystem.DEVICE_OUT_REMOTE_SUBMIX); EXT_TO_INT_DEVICE_MAPPING.put(TYPE_REMOTE_SUBMIX, AudioSystem.DEVICE_OUT_REMOTE_SUBMIX);
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_HEADSET, AudioSystem.DEVICE_OUT_BLE_HEADSET); 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_SPEAKER, AudioSystem.DEVICE_OUT_BLE_SPEAKER);
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_BROADCAST, AudioSystem.DEVICE_OUT_BLE_BROADCAST);
// privileges mapping to input device // privileges mapping to input device
EXT_TO_INT_INPUT_DEVICE_MAPPING = new SparseIntArray(); EXT_TO_INT_INPUT_DEVICE_MAPPING = new SparseIntArray();

View File

@@ -90,7 +90,8 @@ public class AudioDevicePort extends AudioPort {
* {@link AudioManager#DEVICE_OUT_BLE_HEADSET}, {@link AudioManager#DEVICE_OUT_BLE_SPEAKER}) * {@link AudioManager#DEVICE_OUT_BLE_HEADSET}, {@link AudioManager#DEVICE_OUT_BLE_SPEAKER})
* use the MAC address of the bluetooth device in the form "00:11:22:AA:BB:CC" as reported by * use the MAC address of the bluetooth device in the form "00:11:22:AA:BB:CC" as reported by
* {@link BluetoothDevice#getAddress()}. * {@link BluetoothDevice#getAddress()}.
* - Deivces that do not have an address will indicate an empty string "". * - Bluetooth LE broadcast group ({@link AudioManager#DEVICE_OUT_BLE_BROADCAST} use the group number.
* - Devices that do not have an address will indicate an empty string "".
*/ */
public String address() { public String address() {
return mAddress; return mAddress;

View File

@@ -5403,6 +5403,10 @@ public class AudioManager {
* The audio output device code for a BLE audio speaker. * The audio output device code for a BLE audio speaker.
*/ */
public static final int DEVICE_OUT_BLE_SPEAKER = AudioSystem.DEVICE_OUT_BLE_SPEAKER; public static final int DEVICE_OUT_BLE_SPEAKER = AudioSystem.DEVICE_OUT_BLE_SPEAKER;
/** @hide
* The audio output device code for a BLE audio brodcast group.
*/
public static final int DEVICE_OUT_BLE_BROADCAST = AudioSystem.DEVICE_OUT_BLE_BROADCAST;
/** @hide /** @hide
* This is not used as a returned value from {@link #getDevicesForStream}, but could be * 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 * used in the future in a set method to select whatever default device is chosen by the

View File

@@ -982,6 +982,8 @@ public class AudioSystem
public static final int DEVICE_OUT_BLE_HEADSET = 0x20000000; public static final int DEVICE_OUT_BLE_HEADSET = 0x20000000;
/** @hide */ /** @hide */
public static final int DEVICE_OUT_BLE_SPEAKER = 0x20000001; public static final int DEVICE_OUT_BLE_SPEAKER = 0x20000001;
/** @hide */
public static final int DEVICE_OUT_BLE_BROADCAST = 0x20000002;
/** @hide */ /** @hide */
public static final int DEVICE_OUT_DEFAULT = DEVICE_BIT_DEFAULT; public static final int DEVICE_OUT_DEFAULT = DEVICE_BIT_DEFAULT;
@@ -1042,6 +1044,7 @@ public class AudioSystem
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_ECHO_CANCELLER); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_ECHO_CANCELLER);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BLE_HEADSET); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BLE_HEADSET);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BLE_SPEAKER); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BLE_SPEAKER);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BLE_BROADCAST);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_DEFAULT); DEVICE_OUT_ALL_SET.add(DEVICE_OUT_DEFAULT);
DEVICE_OUT_ALL_A2DP_SET = new HashSet<>(); DEVICE_OUT_ALL_A2DP_SET = new HashSet<>();
@@ -1072,6 +1075,7 @@ public class AudioSystem
DEVICE_OUT_ALL_BLE_SET = new HashSet<>(); DEVICE_OUT_ALL_BLE_SET = new HashSet<>();
DEVICE_OUT_ALL_BLE_SET.add(DEVICE_OUT_BLE_HEADSET); DEVICE_OUT_ALL_BLE_SET.add(DEVICE_OUT_BLE_HEADSET);
DEVICE_OUT_ALL_BLE_SET.add(DEVICE_OUT_BLE_SPEAKER); DEVICE_OUT_ALL_BLE_SET.add(DEVICE_OUT_BLE_SPEAKER);
DEVICE_OUT_ALL_BLE_SET.add(DEVICE_OUT_BLE_BROADCAST);
} }
// input devices // input devices
@@ -1255,6 +1259,7 @@ public class AudioSystem
/** @hide */ public static final String DEVICE_OUT_ECHO_CANCELLER_NAME = "echo_canceller"; /** @hide */ public static final String DEVICE_OUT_ECHO_CANCELLER_NAME = "echo_canceller";
/** @hide */ public static final String DEVICE_OUT_BLE_HEADSET_NAME = "ble_headset"; /** @hide */ public static final String DEVICE_OUT_BLE_HEADSET_NAME = "ble_headset";
/** @hide */ public static final String DEVICE_OUT_BLE_SPEAKER_NAME = "ble_speaker"; /** @hide */ public static final String DEVICE_OUT_BLE_SPEAKER_NAME = "ble_speaker";
/** @hide */ public static final String DEVICE_OUT_BLE_BROADCAST_NAME = "ble_broadcast";
/** @hide */ public static final String DEVICE_IN_COMMUNICATION_NAME = "communication"; /** @hide */ public static final String DEVICE_IN_COMMUNICATION_NAME = "communication";
/** @hide */ public static final String DEVICE_IN_AMBIENT_NAME = "ambient"; /** @hide */ public static final String DEVICE_IN_AMBIENT_NAME = "ambient";
@@ -1354,6 +1359,8 @@ public class AudioSystem
return DEVICE_OUT_BLE_HEADSET_NAME; return DEVICE_OUT_BLE_HEADSET_NAME;
case DEVICE_OUT_BLE_SPEAKER: case DEVICE_OUT_BLE_SPEAKER:
return DEVICE_OUT_BLE_SPEAKER_NAME; return DEVICE_OUT_BLE_SPEAKER_NAME;
case DEVICE_OUT_BLE_BROADCAST:
return DEVICE_OUT_BLE_BROADCAST_NAME;
case DEVICE_OUT_DEFAULT: case DEVICE_OUT_DEFAULT:
default: default:
return Integer.toString(device); return Integer.toString(device);