本文介绍OpenHarmony开源鸿蒙系统的BLE(低功耗蓝牙)主机实现示例,基于触觉智能RK3576开发板Purple Pi OH2演示。

OpenHarmony的BLE系统API

通过OpenHarmony的blebluetoothManager系统API,实现蓝牙状态管理、设备扫描、连接控制、数据收发等核心功能。方案采用ArkTS语言开发,通过响应式状态管理实现UI与业务逻辑的联动,适用于需要与BLE从设备进行通信的物联网场景。触觉智能相关实测,可通过触觉智能各视频平台搜搜了解。

本示例使用@ohos.bluetooth.ble(蓝牙ble模块), 提供了对蓝牙操作和管理的方法。本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。接口中涉及的UUID服务,可以通过工具函数util.generateRandomUUID生成。

图片

  • 相关权限

ohos.permission.ACCESS_BLUETOOTH

ohos.permission.MANAGE_BLUETOOTH

ohos.permission.USE_BLUETOOTH

ohos.permission.DISCOVER_BLUETOOTH

ohos.permission.LOCATION

ohos.permission.APPROXIMATELY_LOCATION

依赖

  • 约束与限制

1.本示例仅支持标准系统上运行;

2.本示例已适配API version 12版本SDK;

3. 本示例为Stage模型,本示例需要使用DevEco Studio 5.0.2 Release及以上版本才可编译运行。

4.本示例所配置的权限ohos.permission.MANAGE_BLUETOOTH为system_basic级别(相关权限级别可通过权限定义列表系统应用可用权限查看),需要手动配置对应级别的权限签名(具体操作可查看自动化签名方案zh-cn/application-dev/security/hapsigntool-overview.md· OpenHarmony/docs - Gitee.com) 。

5. 本示例所配置的权限ohos.permission.MANAGE_BLUETOOTH为system_basic级别,需要使用Full SDK 如何替换full-SDK

BLE主机核心功能模块解析

  • 蓝牙状态管理

负责监测和控制蓝牙开关状态,确保BLE功能正常启用

状态跟踪:通过isBluetoothEnabled

ObservedPropertySimplePU<boolean>类型)实时记录蓝牙启用状态,支持 UI 响应式更新。

状态检查与切换,通过checkAndEnableBluetooth方法实现:

调用bluetoothManager.getState()获取当前蓝牙状态

STATE_OFF/STATE_ON/STATE_TURNING_ON等)。

若蓝牙未开启(STATE_OFF),调用

bluetoothManager.enableBluetooth()发送开启请求。

记录操作日志(如 “蓝牙已开启”“蓝牙正在开启中”),便于问题排查。

  • BLE设备扫描

实现对周围BLE从设备的扫描、结果去重与管理。

扫描状态控制:

通过isScanning(ObservedPropertySimplePU<boolean>)标记扫描是否正在进行。

扫描逻辑通过startBLEScan方法实现:

1、前置检查

扫描前验证蓝牙是否处于STATE_ON状态,未开启则提示用户先启用蓝牙。

2、结果处理

ble.on('BLEDeviceFind')监听扫描结果,对新发现的设备

ble.ScanResult)进行去重(基于deviceId),避免重复添加。

3、结果存储

扫描到的设备列表通scanResults

ObservedPropertyObjectPU<Array<ble.ScanResult>>)管理,支持 UI 实时展示。

  • 设备连接与GATT服务管理

负责与 BLE 从设备建立连接,并管理 GATT(通用属性配置文件)服务与特征值。

连接状态跟踪:通过isConnected

(ObservedPropertySimplePU<boolean>)标记连接状态,connectedClient(ble.GattClientDevice)存储当前连接的 GATT 客户端实例。

服务发现:连接成功后,通过deviceServices

(ObservedPropertyObjectPU<Array<ble.GattService>>)

存储从设备提供的 GATT 服务列表,支持后续特征值操作。

特征值管理:

oselectedCharacteristic:跟踪当前选中的特征值 UUID,用于数据读写。

onotifiedCharacteristics:记录已启用通知的特征值列表,支持实时接收从设备推送的数据。

  • 数据收发与日志管理

实现与 BLE 从设备的数据交互,并记录关键操作日志。

数据接收:通过receivedData(实时数据)和receivedDataHistory(历史记录)存储从设备发送的数据,支持 UI 展示。

数据发送:通过inputText获取用户输入的发送数据,结合选中的特征值(selectedCharacteristic)向从设备写入数据。

日志管理:

logMessages(ObservedPropertyObjectPU<Array<string>>)记录所有关键操作(如蓝牙状态变化、扫描结果、连接事件等),便于调试与用户反馈。

更多OpenHarmony开源鸿蒙BLE主机实现配置,如权限配置、使用流程

资料,请关注触觉智能CSDN索取。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐