Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1dc21e16 authored by Patty Huang's avatar Patty Huang
Browse files

Add function for getting supported audio format for LE Audio Broadcast

 * Update function getHwOffloadFormatsSupportedForBluetoothMedia(),
   when the input device is AUDIO_DEVICE_OUT_BLE_HEADSET return
   the supported audio format for LE Audio unicast device
 * Update function getHwOffloadFormatsSupportedForBluetoothMedia()
   for getting the supported format of LE Audio broadcast

Bug: 242472419
Test: atest AudioManagerTest
Change-Id: I16de155597178fc8fdcb249e8625b8f78b334286
parent 2d2609b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ package android.media {
    method public void adjustSuggestedStreamVolumeForUid(int, int, int, @NonNull String, int, int, int);
    method @NonNull public java.util.List<android.bluetooth.BluetoothCodecConfig> getHwOffloadFormatsSupportedForA2dp();
    method @NonNull public java.util.List<android.bluetooth.BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeAudio();
    method @NonNull public java.util.List<android.bluetooth.BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeBroadcast();
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void handleBluetoothActiveDeviceChanged(@Nullable android.bluetooth.BluetoothDevice, @Nullable android.bluetooth.BluetoothDevice, @NonNull android.media.BluetoothProfileConnectionInfo);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setA2dpSuspended(boolean);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setBluetoothHeadsetProperties(@NonNull String, boolean, boolean);
+31 −12
Original line number Diff line number Diff line
@@ -7587,22 +7587,13 @@ public class AudioManager {
        return codecConfigList;
    }

    /**
     * Returns a list of audio formats that corresponds to encoding formats
     * supported on offload path for Le audio playback.
     *
     * @return a list of {@link BluetoothLeAudioCodecConfig} objects containing encoding formats
     * supported for offload Le Audio playback
     * @hide
     */
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @NonNull
    public List<BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeAudio() {
    private List<BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeAudio(
            @AudioSystem.BtOffloadDeviceType int deviceType) {
        ArrayList<Integer> formatsList = new ArrayList<>();
        ArrayList<BluetoothLeAudioCodecConfig> leAudioCodecConfigList = new ArrayList<>();

        int status = AudioSystem.getHwOffloadFormatsSupportedForBluetoothMedia(
                AudioSystem.DEVICE_OUT_BLE_HEADSET, formatsList);
                deviceType, formatsList);
        if (status != AudioManager.SUCCESS) {
            Log.e(TAG, "getHwOffloadEncodingFormatsSupportedForLeAudio failed:" + status);
            return leAudioCodecConfigList;
@@ -7619,6 +7610,34 @@ public class AudioManager {
        return leAudioCodecConfigList;
    }

    /**
     * Returns a list of audio formats that corresponds to encoding formats
     * supported on offload path for Le audio playback.
     *
     * @return a list of {@link BluetoothLeAudioCodecConfig} objects containing encoding formats
     * supported for offload Le Audio playback
     * @hide
     */
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @NonNull
    public List<BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeAudio() {
        return getHwOffloadFormatsSupportedForLeAudio(AudioSystem.DEVICE_OUT_BLE_HEADSET);
    }

    /**
     * Returns a list of audio formats that corresponds to encoding formats
     * supported on offload path for Le Broadcast playback.
     *
     * @return a list of {@link BluetoothLeAudioCodecConfig} objects containing encoding formats
     * supported for offload Le Broadcast playback
     * @hide
     */
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @NonNull
    public List<BluetoothLeAudioCodecConfig> getHwOffloadFormatsSupportedForLeBroadcast() {
        return getHwOffloadFormatsSupportedForLeAudio(AudioSystem.DEVICE_OUT_BLE_BROADCAST);
    }

    // Since we need to calculate the changes since THE LAST NOTIFICATION, and not since the
    // (unpredictable) last time updateAudioPortCache() was called by someone, keep a list
    // of the ports that exist at the time of the last notification.
+4 −3
Original line number Diff line number Diff line
@@ -273,10 +273,11 @@ public class AudioSystem
    /** @hide */
    @IntDef(flag = false, prefix = "DEVICE_", value = {
            DEVICE_OUT_BLUETOOTH_A2DP,
            DEVICE_OUT_BLE_HEADSET}
            DEVICE_OUT_BLE_HEADSET,
            DEVICE_OUT_BLE_BROADCAST}
    )
    @Retention(RetentionPolicy.SOURCE)
    public @interface DeviceType {}
    public @interface BtOffloadDeviceType {}

    /**
     * @hide
@@ -1970,7 +1971,7 @@ public class AudioSystem
     * Returns a list of audio formats (codec) supported on the A2DP and LE audio offload path.
     */
    public static native int getHwOffloadFormatsSupportedForBluetoothMedia(
            @DeviceType int deviceType, ArrayList<Integer> formatList);
            @BtOffloadDeviceType int deviceType, ArrayList<Integer> formatList);

    /** @hide */
    public static native int setSurroundFormatEnabled(int audioFormat, boolean enabled);