OpenHarmony 蓝牙相关API用法

时间:2024-04-21 18:10:34

介绍

本示例通过使用蓝牙低功耗心率服务,展示蓝牙相关API用法。实现了以下几点功能:

  1. 发现具有特定服务的设备。
  2. 连接到设备。
  3. 发现服务。
  4. 发现服务的特征、如何读取给定特征的值、为特征设置通知等。

相关概念

  1. BLE扫描:通过BLE扫描接口实现对BLE设备的搜索。
  2. BLE连接:通过BLE的GattClientDevice实现对BLE设备的连接、断连等操作。
  3. 接收数据:通过BLECharacteristicChange接收特征值的改变。

效果预览

使用说明

  1. 启动应用后,弹出是否允许应用访问位置信息,点击允许后开始操作。
  2. 点击界面中搜索设备,如未开启蓝牙会自动开启并搜索心率设备,如已开启直接搜索设备。
  3. 点击连接按钮可以连接到对应的蓝牙心率设备。
  4. 点击列表Item可以进入实时心率图查看页面。
  5. 点击实时心率图页断开连接可以断开与当前心率设备的连接。

工程目录

entry/src/main/ets/
|---constants
|   |---BleConstants.ts                    // BLE常量
|   |---StyleConstants.ts                  // Style样式常量
|---entryability
|---model
|   |---BluetoothDevice.ets                // 蓝牙设备model
|---pages
|   |---Main.ets                           // 首页
|   |---HeartRate.ets                      // 实时心率图
|---uicomponents
|   |---HeartRateGraph.ets                 // 实时心率图表
|   |---NavigationBar.ets                  // 顶部导航栏
|---uitls
|   |---ArrayBufferUtils.ts                // ArrayBuffer工具
|   |---DateUtils.ts                       // 日期工具
|   |---Log.ts                             // 日志工具
|---viewmodel
|   |---BluetoothViewModel.ets             // 主要封装了蓝牙库相关的接口,实现相关功能,如:开启蓝牙、扫描BLE、连接、断连等功能
advertiser/src/main/ets/
|---constants
|   |---BleConstants.ts                    // BLE常量
|---entryability
|---pages
|   |---Main.ets                           // 首页
|---uitls
|   |---ArrayBufferUtils.ts                // ArrayBuffer工具
|   |---Log.ts                             // 日志工具
|   |---MathUtils.ts                       // Math工具,用于生成随机数
|---viewmodel
|   |---AdvertiserBluetoothViewModel.ets   // 主要封装了蓝牙库相关的接口,实现相关功能,如:开启蓝牙、开启蓝牙心率广播等功能

具体实现

  1. 首页扫描蓝牙心率设备:使用bluetooth 来实现蓝牙的开启和BLE的扫描,然后再使用一个List显示扫描到BLE心率设备,点击连接按钮可以连接上对应的心率设备。
  2. 实时心率图页:使用bluetooth 来接收心率设备发送的心率数据,并使用画布Canvas 来绘制实时心率图,点击断开连接可以断开与当前心率设备的连接。

相关权限

权限名 权限说明 级别
ohos.permission.USE_BLUETOOTH 允许应用查看蓝牙的配置。 normal
ohos.permission.DISCOVER_BLUETOOTH 允许应用配置本地蓝牙,查找远端设备且与之配对连接。 normal
ohos.permission.MANAGE_BLUETOOTH 允许应用配对蓝牙设备,并对设备的电话簿或消息进行访问。 system_basic
ohos.permission.APPROXIMATELY_LOCATION 允许应用获取设备模糊位置信息。 normal
ohos.permission.LOCATION 允许应用获取设备位置信息。 normal

依赖

本示例需要使用设备来模拟BLE心率设备。这里使用OpenHarmony来模拟了BLE心率设备,相关代码在module - advertiser。使用另一台OpenHarmony设备运行advertiser编译出来的hap后,点击开启BLE心率广播。当BLE心率服务应用扫描并连接到模拟的BLE心率设备后,就可以在应用中查看当前模拟的实时心率。

约束与限制

  1. 本示例仅支持标准系统上运行。
  2. 本示例为Stage模型,从API version 9开始支持。SDK版本号:3.2.12.1 Release,镜像版本号:OpenHarmony 3.2.12.2。
  3. 本示例需要使用DevEco Studio 3.1 Release (Build Version: 3.1.0.500, built on April 28, 2023)编译运行。
  4. 本示例所配置的权限包含system_basic级别(相关权限级别可通过[权限定义列表](OpenAtom OpenHarmony查看),需要手动配置对应级别的权限签名或者使用ACL使能(具体操作可查看自动化签名方案)。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Connectivity/Bluetooth/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

码牛课堂也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线。大家可以进行参考学习:https://qr21.cn/FV7h05

①全方位,更合理的学习路径
路线图包括ArkTS基础语法、鸿蒙应用APP开发、鸿蒙能力集APP开发、次开发多端部署开发、物联网开发等九大模块,六大实战项目贯穿始终,由浅入深,层层递进,深入理解鸿蒙开发原理!

②多层次,更多的鸿蒙原生应用
路线图将包含完全基于鸿蒙内核开发的应用,比如一次开发多端部署、*流转、元服务、端云一体化等,多方位的学习内容让学生能够高效掌握鸿蒙开发,少走弯路,真正理解并应用鸿蒙的核心技术和理念。

③实战化,更贴合企业需求的技术点
学习路线图中的每一个技术点都能够紧贴企业需求,经过多次真实实践,每一个知识点、每一个项目,都是码牛课堂鸿蒙研发团队精心打磨和深度解析的成果,注重对学生的细致教学,每一步都确保学生能够真正理解和掌握。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:https://qr21.cn/FV7h05

如何快速入门:

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr21.cn/FV7h05

大厂鸿蒙面试题::https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向