鸿蒙Next蓝牙BLE开发教程
在鸿蒙Next上进行BLE开发时,如何实现设备扫描和连接?官方文档提到的BluetoothGattCallback具体该怎样使用?能否提供一个完整的示例代码,包括服务发现、数据读写等关键步骤?另外,鸿蒙Next的BLE API和Android的有哪些主要区别需要注意?
2 回复
鸿蒙Next搞BLE?简单!先装DevEco Studio,新建项目选蓝牙权限。然后开搞:扫描设备、连接GATT、读写特征值。记住,别把UUID写错,不然设备会“装死”。调试时多喝咖啡,毕竟蓝牙偶尔会抽风。搞定!
更多关于鸿蒙Next蓝牙BLE开发教程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
以下是鸿蒙Next(HarmonyOS NEXT)蓝牙BLE开发的基础步骤和关键代码示例,帮助您快速实现设备扫描、连接和数据通信。
1. 环境配置
- 开发工具:DevEco Studio(NEXT版本)。
- SDK:确保项目
build-profile.json5中已引入蓝牙权限和API依赖:"module": { "requestPermissions": [ { "name": "ohos.permission.DISCOVER_BLUETOOTH", "reason": "扫描蓝牙设备" }, { "name": "ohos.permission.MANAGE_BLUETOOTH", "reason": "管理蓝牙连接" }, { "name": "ohos.permission.ACCESS_BLUETOOTH", "reason": "访问蓝牙服务" } ] }
2. 核心开发步骤
步骤1:初始化蓝牙适配器
import { bluetoothManager } from '@kit.ConnectivityKit';
// 获取蓝牙适配器
let adapter = bluetoothManager.getDefaultAdapter();
if (!adapter) {
console.error("设备不支持蓝牙");
return;
}
// 开启蓝牙(需用户授权)
await adapter.enableBluetooth();
步骤2:扫描BLE设备
import { BleScanFilter } from '@kit.ConnectivityKit';
// 定义扫描过滤器(可选)
let filter: BleScanFilter = {
deviceId: "", // 指定设备ID,留空则扫描所有
name: "MyDevice" // 按设备名过滤
};
// 开始扫描
adapter.startBLEScan([filter], {
interval: 0, // 扫描间隔(毫秒)
dutyMode: 0, // 扫描模式
});
// 监听扫描结果
adapter.on('BLEDeviceFind', (device) => {
console.log("发现设备: " + device.deviceId);
// 可保存deviceId用于后续连接
});
步骤3:连接BLE设备
import { ble } from '@kit.ConnectivityKit';
// 通过deviceId连接设备
let connection = ble.createGattConnection(deviceId);
await connection.connect();
// 监听连接状态
connection.on('connectionStateChange', (state) => {
if (state === 2) { // 2表示已连接
console.log("设备连接成功");
connection.discoverServices(); // 发现服务
}
});
步骤4:发现服务与特征值
// 服务发现回调
connection.on('servicesDiscovered', (services) => {
for (let service of services) {
console.log("服务UUID: " + service.serviceUuid);
// 获取特征值
let characteristics = service.characteristics;
for (let char of characteristics) {
console.log("特征值UUID: " + char.characteristicUuid);
// 示例:订阅通知(如需接收数据)
if (char.properties.notify) {
connection.setNotifyCharacteristicChanged(char, true);
}
}
}
});
// 监听特征值变化
connection.on('characteristicChange', (characteristic) => {
let value = characteristic.value; // 接收到的数据
console.log("收到数据: " + value);
});
步骤5:写入数据
// 向特征值写入数据(需找到对应UUID)
let char = ...; // 从服务中获取特征值对象
let data = new Uint8Array([0x01, 0x02]); // 示例数据
await connection.writeCharacteristicValue(char, data);
步骤6:断开连接
await connection.disconnect();
adapter.stopBLEScan(); // 停止扫描
3. 注意事项
- 权限申请:需在
module.json5中声明蓝牙权限,并在运行时动态申请。 - 设备兼容性:测试时确认目标设备支持BLE(蓝牙4.0及以上)。
- 资源释放:退出页面时务必断开连接并停止扫描。
通过以上步骤,您可完成鸿蒙Next的BLE设备通信。建议参考官方文档获取更详细参数说明。

