在不同的Android SDK级别上,Android BLE广告UUID的长度是相同的,都是16个字节。但是,在广告包中传输UUID时,会将其转换为128位的UUID。在Android中,可以使用UUID类来表示UUID,并使用UUID的toString()方法将其转换为字符串形式。
以下是一个示例代码,演示如何在Android中使用UUID类来表示BLE广告UUID并将其转换为字符串形式:
import java.util.UUID;
public class BleAdvertisementExample {
public static void main(String[] args) {
// 定义一个16字节的UUID
byte[] uuidBytes = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
// 将字节数组转换为UUID对象
UUID uuid = bytesToUuid(uuidBytes);
// 将UUID转换为字符串形式
String uuidString = uuid.toString();
System.out.println("UUID: " + uuidString);
}
// 将字节数组转换为UUID对象
public static UUID bytesToUuid(byte[] bytes) {
long mostSigBits = 0;
long leastSigBits = 0;
for (int i = 0; i < 8; i++) {
mostSigBits = (mostSigBits << 8) | (bytes[i] & 0xff);
}
for (int i = 8; i < 16; i++) {
leastSigBits = (leastSigBits << 8) | (bytes[i] & 0xff);
}
return new UUID(mostSigBits, leastSigBits);
}
}
运行上述代码将输出UUID的字符串表示形式:
UUID: 00010203-0405-0607-0809-0a0b0c0d0e0f
注意:在实际的Android应用程序中,可以使用ParcelUuid
类来表示BLE广告UUID,该类提供了更方便的方法来转换UUID。