Android 蓝牙开发 uuid,Android蓝牙开发之 UUID

UUID:全球唯一标识符

在蓝牙中,每个Service和Characteristic都唯一地由"全球唯一标识符" (UUID)来校验,主要是保证他们的唯一性。

UUID可分为:16位、32位、128 位UUID

Bluetooth_Base_UUID:蓝牙UUID基数

UUID值被固定分配在某个范围,该范围的第一个数值称为蓝牙UUID基数(Bluetooth_Base_UUID),其值为00000000—0000—1000—8000—00805F9B34FB。 在此范围中,UUID一般用一个16位或32位的二进制数表示,经常被称作16位或32位UUID,它的实际长度其实都是128位。

Android开发中,是用UUID.fromString("UUID")的格式来获取UUID的,那通常所说的16、32和128位的UUID,如何都通过fromString来生成呢,这就要用到下面的转换了,也就是说要统一把16位、32位的UUID转换成128位的UUID。

128位的UUID值与16位或32位的UUID值之间的换算关系如下:

128_bit_value=16_bit_value*2^96+Bluetooth_Base_UUID

128_bit_value=32_bit_value*2^96+BIuetooth_Base_UUID

举个例子:

### 若 16 bit UUID为xxxx, 那么 128 bit UUID 为 0000xxxx-0000-1000-8000-00805F9B34FB

### 若 32 bit UUID为xxxxxxxx, 那么 128 bit UUID 为 xxxxxxxx-0000-1000-8000-00805F9B34FB

注:其中 Bluetooth_Base_UUID 定义为 00000000-0000-1000-8000-00805F9B34FB

如下图中UUID:

image.png

用fromString来获取的代码如下:

public static final UUID serviceUUID = UUID.fromString("0000ffe0-0000-1000-8000-00805f9b34fb");

public static final UUID charactUUID = UUID.fromString("0000ffe1-0000-1000-8000-00805f9b34fb");

你可能感兴趣的:(Android,蓝牙开发,uuid)