本文介绍OpenHarmony开源鸿蒙系统的BLE(低功耗蓝牙)主机实现示例,基于触觉智能****RK3576开发板Purple Pi OH2演示。
OpenHarmony的BLE系统API
通过OpenHarmony的ble与bluetoothManager系统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;
- 本示例为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++ ) 。
- 本示例所配置的权限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索取。