Android 蓝牙UUID
在开发Android应用程序时,使用蓝牙技术与其他设备进行通信是一项常见任务。为了确保设备之间的通信成功,我们需要使用唯一的标识符来识别不同的服务和特性。在蓝牙技术中,UUID(Universally Unique Identifier)扮演了重要的角色。本文将介绍什么是UUID,如何在Android中使用UUID,并提供一些代码示例。
什么是UUID?
UUID是一个128位的标识符,用于唯一标识信息元素。UUID的格式通常为8-4-4-4-12的十六进制数,如550e8400-e29b-41d4-a716-446655440000。UUID由五部分组成:
- 时间戳:UUID的前32位是一个时间戳,用于确保生成的UUID是唯一的。
- 版本号:UUID的第13位是一个版本号,用于声明UUID的格式和生成方式。
- 变体标识:UUID的第17位是一个变体标识,用于声明UUID的变体类型。
- 基础数据:UUID的剩余位数被用于存储特定的基础数据。
- 名称:UUID可以有一个与之相关联的名称,用于提供更好的可读性。
在Android中使用UUID
在Android中,我们可以使用java.util.UUID类来创建和处理UUID。UUID类提供了一些静态方法和常量,用于生成和解析UUID。
生成UUID
要生成一个UUID,我们可以使用randomUUID()方法。以下是一个示例代码:
import java.util.UUID;
public class BluetoothUtils {
public static UUID generateUUID() {
return UUID.randomUUID();
}
}
解析UUID
要解析一个UUID的字符串表示,我们可以使用fromString()方法。以下是一个示例代码:
import java.util.UUID;
public class BluetoothUtils {
public static UUID parseUUID(String uuidString) {
return UUID.fromString(uuidString);
}
}
使用UUID进行蓝牙通信
在使用蓝牙技术进行通信时,设备之间需要建立服务和特性。每个服务和特性都有一个唯一的UUID,用于标识其功能。以下是一个使用UUID进行蓝牙通信的示例代码:
import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattService;
import java.util.UUID;
public class BluetoothUtils {
public static final UUID SERVICE_UUID = UUID.fromString("00001800-0000-1000-8000-00805f9b34fb");
public static final UUID CHARACTERISTIC_UUID = UUID.fromString("00002a00-0000-1000-8000-00805f9b34fb");
public static BluetoothGattService createService() {
BluetoothGattService service = new BluetoothGattService(SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(CHARACTERISTIC_UUID, BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ);
service.addCharacteristic(characteristic);
return service;
}
}
在上面的示例中,我们创建了一个具有唯一UUID的服务和特性。我们可以根据需要添加其他特性。
类图
下面是一个使用mermaid语法表示的类图,描述了上述代码中使用的类之间的关系。
classDiagram
class BluetoothUtils{
+ generateUUID() : UUID
+ parseUUID(String) : UUID
+ createService() : BluetoothGattService
}
class UUID{
- uuid : String
+ randomUUID() : UUID
+ fromString(String) : UUID
}
class BluetoothGattService{
- uuid : UUID
- type : int
- characteristics : List<BluetoothGattCharacteristic>
+ BluetoothGattService(UUID, int)
+ addCharacteristic(BluetoothGattCharacteristic)
}
class BluetoothGattCharacteristic{
- uuid : UUID
- properties : int
- permissions : int
+ BluetoothGattCharacteristic(UUID, int, int)
}
BluetoothUtils -- UUID
BluetoothUtils --> BluetoothGattService
BluetoothGattService --> BluetoothGattCharacteristic
状态图
下面是一个使用mermaid语法表示的状态图,在蓝牙通信过程中,设备的状态可能会发生变化。
stateDiagram
[*] --> Disconnected
Disconnected --> Connected : Connect
















