diff options
| -rw-r--r-- | core/api/module-lib-current.txt | 2 | ||||
| -rw-r--r-- | media/java/android/media/AudioManager.java | 83 |
2 files changed, 47 insertions, 38 deletions
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt index 3c0eacf73341..a646a681afc1 100644 --- a/core/api/module-lib-current.txt +++ b/core/api/module-lib-current.txt @@ -113,6 +113,8 @@ package android.media { public class AudioManager { method public void adjustStreamVolumeForUid(int, int, int, @NonNull String, int, int, int); 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 @RequiresPermission("android.permission.BLUETOOTH_STACK") public void handleBluetoothActiveDeviceChanged(@Nullable android.bluetooth.BluetoothDevice, @Nullable android.bluetooth.BluetoothDevice, @NonNull android.media.BtProfileConnectionInfo); method @RequiresPermission("android.permission.BLUETOOTH_STACK") public void setA2dpSuspended(boolean); method @RequiresPermission("android.permission.BLUETOOTH_STACK") public void setBluetoothHeadsetProperties(@NonNull String, boolean, boolean); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 60f4a5a226db..982cf07da358 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -6791,56 +6791,63 @@ public class AudioManager { /** * Returns a list of audio formats that corresponds to encoding formats - * supported on offload path for A2DP and LE audio playback. + * supported on offload path for A2DP playback. * - * @param deviceType Indicates the target device type {@link AudioSystem.DeviceType} * @return a list of {@link BluetoothCodecConfig} objects containing encoding formats - * supported for offload A2DP playback or a list of {@link BluetoothLeAudioCodecConfig} - * objects containing encoding formats supported for offload LE Audio playback + * supported for offload A2DP playback * @hide */ - public List<?> getHwOffloadFormatsSupportedForBluetoothMedia( - @AudioSystem.DeviceType int deviceType) { - ArrayList<Integer> formatsList = new ArrayList<Integer>(); - ArrayList<BluetoothCodecConfig> a2dpCodecConfigList = new ArrayList<BluetoothCodecConfig>(); - ArrayList<BluetoothLeAudioCodecConfig> leAudioCodecConfigList = - new ArrayList<BluetoothLeAudioCodecConfig>(); + @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) + public @NonNull List<BluetoothCodecConfig> getHwOffloadFormatsSupportedForA2dp() { + ArrayList<Integer> formatsList = new ArrayList<>(); + ArrayList<BluetoothCodecConfig> codecConfigList = new ArrayList<>(); - if (deviceType != AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP - && deviceType != AudioSystem.DEVICE_OUT_BLE_HEADSET) { - throw new IllegalArgumentException( - "Illegal devicetype for the getHwOffloadFormatsSupportedForBluetoothMedia"); + int status = AudioSystem.getHwOffloadFormatsSupportedForBluetoothMedia( + AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, formatsList); + if (status != AudioManager.SUCCESS) { + Log.e(TAG, "getHwOffloadEncodingFormatsSupportedForA2DP failed:" + status); + return codecConfigList; + } + + for (Integer format : formatsList) { + int btSourceCodec = AudioSystem.audioFormatToBluetoothSourceCodec(format); + if (btSourceCodec != BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID) { + codecConfigList.add(new BluetoothCodecConfig(btSourceCodec)); + } } + 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() { + ArrayList<Integer> formatsList = new ArrayList<>(); + ArrayList<BluetoothLeAudioCodecConfig> leAudioCodecConfigList = new ArrayList<>(); - int status = AudioSystem.getHwOffloadFormatsSupportedForBluetoothMedia(deviceType, - formatsList); + int status = AudioSystem.getHwOffloadFormatsSupportedForBluetoothMedia( + AudioSystem.DEVICE_OUT_BLE_HEADSET, formatsList); if (status != AudioManager.SUCCESS) { - Log.e(TAG, "getHwOffloadFormatsSupportedForBluetoothMedia for deviceType " - + deviceType + " failed:" + status); - return a2dpCodecConfigList; + Log.e(TAG, "getHwOffloadEncodingFormatsSupportedForLeAudio failed:" + status); + return leAudioCodecConfigList; } - if (deviceType == AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP) { - for (Integer format : formatsList) { - int btSourceCodec = AudioSystem.audioFormatToBluetoothSourceCodec(format); - if (btSourceCodec != BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID) { - a2dpCodecConfigList.add(new BluetoothCodecConfig(btSourceCodec)); - } + for (Integer format : formatsList) { + int btLeAudioCodec = AudioSystem.audioFormatToBluetoothLeAudioSourceCodec(format); + if (btLeAudioCodec != BluetoothLeAudioCodecConfig.SOURCE_CODEC_TYPE_INVALID) { + leAudioCodecConfigList.add(new BluetoothLeAudioCodecConfig.Builder() + .setCodecType(btLeAudioCodec) + .build()); } - return a2dpCodecConfigList; - } else if (deviceType == AudioSystem.DEVICE_OUT_BLE_HEADSET) { - for (Integer format : formatsList) { - int btLeAudioCodec = AudioSystem.audioFormatToBluetoothLeAudioSourceCodec(format); - if (btLeAudioCodec != BluetoothLeAudioCodecConfig.SOURCE_CODEC_TYPE_INVALID) { - leAudioCodecConfigList.add(new BluetoothLeAudioCodecConfig.Builder() - .setCodecType(btLeAudioCodec) - .build()); - } - } - return leAudioCodecConfigList; } - Log.e(TAG, "Input deviceType " + deviceType + " doesn't support."); - return a2dpCodecConfigList; + return leAudioCodecConfigList; } // Since we need to calculate the changes since THE LAST NOTIFICATION, and not since the |