Merge "[LE] Convert the BluetoothLeBroadcastSubgroup to QR code format string" into tm-dev am: 439436e104

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

Change-Id: I662dabaa892180d5d6dd077f109ffcaf27bab752
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Betty Chang
2022-05-05 09:08:24 +00:00
committed by Automerger Merge Worker

View File

@@ -25,6 +25,7 @@ import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastSubgroup; import android.bluetooth.BluetoothLeBroadcastSubgroup;
import android.util.Log; import android.util.Log;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -95,6 +96,7 @@ public class LocalBluetoothLeBroadcastMetadata {
} }
public String convertToQrCodeString() { public String convertToQrCodeString() {
String subgroupString = convertSubgroupToString(mSubgroupList);
return new StringBuilder() return new StringBuilder()
.append(BluetoothBroadcastUtils.SCHEME_BT_BROADCAST_METADATA) .append(BluetoothBroadcastUtils.SCHEME_BT_BROADCAST_METADATA)
.append(BluetoothBroadcastUtils.PREFIX_BT_ADDRESS_TYPE) .append(BluetoothBroadcastUtils.PREFIX_BT_ADDRESS_TYPE)
@@ -122,11 +124,83 @@ public class LocalBluetoothLeBroadcastMetadata {
.append(METADATA_START).append(mPresentationDelayMicros).append(METADATA_END) .append(METADATA_START).append(mPresentationDelayMicros).append(METADATA_END)
.append(BluetoothBroadcastUtils.DELIMITER_QR_CODE) .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE)
.append(BluetoothBroadcastUtils.PREFIX_BT_SUBGROUPS) .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) .append(BluetoothBroadcastUtils.DELIMITER_QR_CODE)
.toString(); .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. * 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;; * BT:T:<1>;D:<00:11:22:AA:BB:CC>;AS:<1>;B:…;V:T;;