鸿蒙Next系统ble蓝牙uuid如何设置

在鸿蒙Next系统中开发BLE应用时,如何正确设置蓝牙服务的UUID?官方文档提到的16位或128位UUID格式是否有具体限制?自定义UUID时是否需要遵循特定规范?如果遇到"invalid UUID"报错该如何排查?求实际代码示例和最佳实践。

2 回复

鸿蒙Next里设置BLE UUID?简单!就像给蓝牙设备起个“社交账号”——用UUID.fromString("你的UUID字符串")就行。别用“1234”这种弱密码,小心隔壁老王连上你的设备放《最炫民族风》!记得在配置文件里声明蓝牙权限哦~

更多关于鸿蒙Next系统ble蓝牙uuid如何设置的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next系统中,BLE蓝牙UUID(通用唯一标识符)用于定义服务和特征,以识别设备功能。以下是设置BLE UUID的步骤和示例代码:

1. 定义UUID

  • 使用标准16位或128位UUID。
  • 示例:定义一个自定义服务UUID和特征UUID。
    // 16位UUID示例(需符合蓝牙SIG规范)
    private static final String SERVICE_UUID = "0000180F-0000-1000-8000-00805F9B34FB"; // 电池服务
    private static final String CHARACTERISTIC_UUID = "00002A19-0000-1000-8000-00805F9B34FB"; // 电池级别特征
    
    // 或使用128位自定义UUID(确保唯一性)
    private static final String CUSTOM_SERVICE_UUID = "12345678-1234-5678-9ABC-DEF123456789";
    private static final String CUSTOM_CHARACTERISTIC_UUID = "ABCDEF00-1234-5678-9ABC-DEF123456789";
    

2. 创建服务和特征

Profile类中定义BLE GATT服务结构:

public class MyBleProfile {
    // 创建服务
    public static GattService createService() {
        GattService service = new GattService(UUID.fromString(SERVICE_UUID), GattServiceType.PRIMARY);
        
        // 创建特征(例如:可读、可写属性)
        GattCharacteristic characteristic = new GattCharacteristic(
            UUID.fromString(CHARACTERISTIC_UUID),
            GattCharacteristic.PROPERTY_READ | GattCharacteristic.PROPERTY_WRITE,
            GattCharacteristic.PERMISSION_READ | GattCharacteristic.PERMISSION_WRITE
        );
        
        // 将特征添加到服务
        service.addCharacteristic(characteristic);
        return service;
    }
}

3. 在设备端注册服务

Ability中启动BLE服务并注册GATT服务:

public class MainAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        
        // 初始化BLE配置
        BlePeripheralDevice bleDevice = new BlePeripheralDevice(this);
        bleDevice.addService(MyBleProfile.createService()); // 注册服务
        bleDevice.startAdvertising(); // 开始广播
    }
}

4. 客户端扫描与连接

客户端设备扫描时通过UUID过滤目标服务:

BleScanFilter filter = new BleScanFilter.Builder()
    .setServiceUuid(UUID.fromString(SERVICE_UUID))
    .build();

注意事项:

  • UUID格式:必须使用标准格式(8-4-4-4-12的十六进制字符串)。
  • 唯一性:自定义UUID应避免与标准UUID冲突。
  • 权限:在config.json中声明ohos.permission.DISCOVER_BLUETOOTH等权限。

通过以上步骤,即可在鸿蒙Next系统中正确设置和使用BLE UUID。如需更复杂功能(如描述符或通知),可扩展特征配置。

回到顶部