diff options
| author | 2022-05-05 09:50:32 +0000 | |
|---|---|---|
| committer | 2022-05-05 09:50:32 +0000 | |
| commit | c20eb91aabcd0f11f1b98fea1e90489b1a1548f9 (patch) | |
| tree | 4db4ed8a85baba248647a794f6d0672c9b810b02 | |
| parent | 4cb4e806396f7ec07db64e194634e6729fca5b58 (diff) | |
| parent | 7323898ea1ea07613fe39fdbed40cbfa17979b3d (diff) | |
Merge "[LE] Convert the BluetoothLeBroadcastSubgroup to QR code format string" into tm-dev am: 439436e104 am: 902d4e1ff7 am: 7323898ea1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18162824
Change-Id: Ie6f0936b657ef8895693bcdfa13241ecdf30a917
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastMetadata.java | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastMetadata.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastMetadata.java index 5b1fefb249a3..aff9a6e3c08d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastMetadata.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcastMetadata.java @@ -25,6 +25,7 @@ import android.bluetooth.BluetoothLeBroadcastMetadata; import android.bluetooth.BluetoothLeBroadcastSubgroup; import android.util.Log; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -95,6 +96,7 @@ public class LocalBluetoothLeBroadcastMetadata { } public String convertToQrCodeString() { + String subgroupString = convertSubgroupToString(mSubgroupList); return new StringBuilder() .append(BluetoothBroadcastUtils.SCHEME_BT_BROADCAST_METADATA) .append(BluetoothBroadcastUtils.PREFIX_BT_ADDRESS_TYPE) @@ -122,11 +124,83 @@ public class LocalBluetoothLeBroadcastMetadata { .append(METADATA_START).append(mPresentationDelayMicros).append(METADATA_END) .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) .append(BluetoothBroadcastUtils.PREFIX_BT_SUBGROUPS) - .append(METADATA_START).append(mSubgroupList).append(METADATA_END) + .append(METADATA_START).append(subgroupString).append(METADATA_END) .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) .toString(); } + private String convertSubgroupToString(List<BluetoothLeBroadcastSubgroup> subgroupList) { + StringBuilder subgroupListBuilder = new StringBuilder(); + String subgroupString = ""; + for (BluetoothLeBroadcastSubgroup subgroup: subgroupList) { + String audioCodec = convertAudioCodecConfigToString(subgroup.getCodecSpecificConfig()); + String audioContent = convertAudioContentToString(subgroup.getContentMetadata()); + String channels = convertChannelToString(subgroup.getChannels()); + subgroupString = new StringBuilder() + .append(BluetoothBroadcastUtils.PREFIX_BTSG_CODEC_ID) + .append(METADATA_START).append(subgroup.getCodecId()).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTSG_CODEC_CONFIG) + .append(METADATA_START).append(audioCodec).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTSG_AUDIO_CONTENT) + .append(METADATA_START).append(audioContent).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTSG_BROADCAST_CHANNEL) + .append(METADATA_START).append(channels).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .toString(); + subgroupListBuilder.append(subgroupString); + } + return subgroupListBuilder.toString(); + } + + private String convertAudioCodecConfigToString(BluetoothLeAudioCodecConfigMetadata config) { + String audioLocation = String.valueOf(config.getAudioLocation()); + String rawMetadata = new String(config.getRawMetadata(), StandardCharsets.UTF_8); + return new StringBuilder() + .append(BluetoothBroadcastUtils.PREFIX_BTCC_AUDIO_LOCATION) + .append(METADATA_START).append(audioLocation).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTCC_RAW_METADATA) + .append(METADATA_START).append(rawMetadata).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .toString(); + } + + private String convertAudioContentToString(BluetoothLeAudioContentMetadata audioContent) { + String rawMetadata = new String(audioContent.getRawMetadata(), StandardCharsets.UTF_8); + return new StringBuilder() + .append(BluetoothBroadcastUtils.PREFIX_BTAC_PROGRAM_INFO) + .append(METADATA_START).append(audioContent.getProgramInfo()).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTAC_LANGUAGE) + .append(METADATA_START).append(audioContent.getLanguage()).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTAC_RAW_METADATA) + .append(METADATA_START).append(rawMetadata).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .toString(); + } + + private String convertChannelToString(List<BluetoothLeBroadcastChannel> channelList) { + StringBuilder channelListBuilder = new StringBuilder(); + String channelString = ""; + for (BluetoothLeBroadcastChannel channel: channelList) { + String channelAudioCodec = convertAudioCodecConfigToString(channel.getCodecMetadata()); + channelString = new StringBuilder() + .append(BluetoothBroadcastUtils.PREFIX_BTBC_CHANNEL_INDEX) + .append(METADATA_START).append(channel.getChannelIndex()).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .append(BluetoothBroadcastUtils.PREFIX_BTBC_CODEC_CONFIG) + .append(METADATA_START).append(channelAudioCodec).append(METADATA_END) + .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) + .toString(); + channelListBuilder.append(channelString); + } + return channelListBuilder.toString(); + } + /** * Example : prefix is with the “BT:”, and end by the Android Version. * BT:T:<1>;D:<00:11:22:AA:BB:CC>;AS:<1>;B:…;V:T;; |