鸿蒙Next FastBLE使用教程

请问鸿蒙Next的FastBLE库具体怎么使用?有没有详细的接入步骤和示例代码?我在开发蓝牙功能时遇到连接不稳定问题,官方文档写得比较简略,想请教下实际项目中的最佳实践,比如设备扫描、数据传输和异常处理等方面需要注意哪些细节?

2 回复

鸿蒙Next的FastBLE?简单说就是“蓝牙秒连,代码减半”。三步上手:

  1. 权限开好(蓝牙+定位);
  2. 扫描设备用startScan(),记得加过滤条件防奇葩设备;
  3. 连接后直接读写特征值,回调里处理数据。

附赠冷知识:调试时别同时开多个蓝牙APP,手机会以为你在搞特务接头(笑)

更多关于鸿蒙Next FastBLE使用教程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


以下是鸿蒙Next中FastBLE库的基本使用教程,帮助您快速实现蓝牙BLE通信功能:


1. 环境配置

module.json5文件中添加蓝牙权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.DISCOVER_BLUETOOTH",
        "reason": "蓝牙扫描需要"
      },
      {
        "name": "ohos.permission.MANAGE_BLUETOOTH",
        "reason": "蓝牙管理需要"
      },
      {
        "name": "ohos.permission.USE_BLUETOOTH",
        "reason": "蓝牙通信需要"
      },
      {
        "name": "ohos.permission.LOCATION",
        "reason": "扫描需要定位权限"
      }
    ]
  }
}

2. 初始化与配置

import { FastBLE } from '@ohos/fast-ble'; // 根据实际库名调整

// 初始化BLE
FastBLE.init();

// 配置参数(可选)
const options = {
  scanTimeout: 10000,      // 扫描超时时间(毫秒)
  connectTimeout: 10000,   // 连接超时时间
  autoConnect: false       // 是否自动重连
};
FastBLE.setOptions(options);

3. 扫描设备

// 开始扫描
FastBLE.startScan((device: DeviceInfo) => {
  console.log("发现设备: " + device.name + " - " + device.address);
}, (error: string) => {
  console.error("扫描失败: " + error);
});

// 停止扫描
FastBLE.stopScan();

4. 连接设备

// 连接指定设备
FastBLE.connect(deviceAddress, 
  (device: DeviceInfo) => {
    console.log("连接成功: " + device.address);
  },
  (error: string) => {
    console.error("连接失败: " + error);
  }
);

// 断开连接
FastBLE.disconnect(deviceAddress);

5. 数据读写操作

// 读取特征值
FastBLE.read(
  deviceAddress,
  serviceUUID,
  characteristicUUID,
  (data: number[]) => {
    console.log("读取数据: " + data);
  },
  (error: string) => {
    console.error("读取失败: " + error);
  }
);

// 写入数据(需转换为字节数组)
const writeData = [0x01, 0x02, 0x03];
FastBLE.write(
  deviceAddress,
  serviceUUID,
  characteristicUUID,
  writeData,
  (result: boolean) => {
    console.log("写入" + (result ? "成功" : "失败"));
  }
);

6. 通知监听

// 启用特征值通知
FastBLE.notify(
  deviceAddress,
  serviceUUID,
  characteristicUUID,
  (data: number[]) => {
    console.log("收到通知数据: " + data);
  },
  (error: string) => {
    console.error("通知监听失败: " + error);
  }
);

// 关闭通知
FastBLE.stopNotify(deviceAddress, serviceUUID, characteristicUUID);

7. 注意事项

  • 设备兼容性:确保目标设备支持BLE 4.0及以上协议。
  • 权限管理:动态申请定位权限(扫描必需)。
  • 生命周期:在页面退出时及时停止扫描/断开连接。
  • UUID格式:使用标准UUID格式(如0000180F-0000-1000-8000-00805F9B34FB)。

通过以上步骤即可实现基本的BLE设备扫描、连接和数据传输。建议参考鸿蒙官方蓝牙文档和FastBLE库的详细API说明。

回到顶部