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");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。