• Home
Name Date Size #Lines LOC

..--

AppScope/06-May-2025-3633

advertiser/06-May-2025-1,189955

entry/06-May-2025-2,5112,161

hvigor/06-May-2025-2222

screenshots/06-May-2025-

.gitignoreD06-May-2025137 1111

README_zh.mdD06-May-20256 KiB10986

build-profile.json5D06-May-20251.2 KiB5453

hvigorfile.tsD06-May-2025159 21

hvigorwD06-May-20252 KiB6328

hvigorw.batD06-May-20252 KiB7256

oh-package.json5D06-May-2025833 2625

ohosTest.mdD06-May-20251.3 KiB1311

README_zh.md

1# 蓝牙
2
3### 介绍
4
5本示例通过使用蓝牙低功耗心率服务,展示蓝牙相关API用法。实现了以下几点功能:
6
71. 发现具有特定服务的设备。
82. 连接到设备。
93. 发现服务。
104. 发现服务的特征、如何读取给定特征的值、为特征设置通知等。
11
12相关概念
13
141. BLE扫描:通过BLE扫描接口实现对BLE设备的搜索。
152. BLE连接:通过BLE的GattClientDevice实现对BLE设备的连接、断连等操作。
163. 接收数据:通过BLECharacteristicChange接收特征值的改变。
17
18### 效果预览
19
20| 搜索设备 | 搜索结果 |
21| ---- | ---- |
22| ![search_ble](screenshots/search_ble.jpeg) | ![search_ble_result](screenshots/search_ble_result.jpeg) |
23
24| 连接成功 | 实时心率 |
25| ---- | ---- |
26| ![connect_suc](screenshots/connect_suc.jpeg) | ![heart_rate](screenshots/heart_rate.jpeg) |
27
28使用说明
29
301. 启动应用后,弹出是否允许应用访问位置信息,点击允许后开始操作。
312. 点击界面中搜索设备,如未开启蓝牙会自动开启并搜索心率设备,如已开启直接搜索设备。
323. 点击连接按钮可以连接到对应的蓝牙心率设备。
334. 点击列表Item可以进入实时心率图查看页面。
345. 点击实时心率图页断开连接可以断开与当前心率设备的连接。
35
36### 工程目录
37
38```
39entry/src/main/ets/
40|---constants
41|   |---BleConstants.ts                    // BLE常量
42|   |---StyleConstants.ts                  // Style样式常量
43|---entryability
44|---model
45|   |---BluetoothDevice.ets                // 蓝牙设备model
46|---pages
47|   |---Main.ets                           // 首页
48|   |---HeartRate.ets                      // 实时心率图
49|---uicomponents
50|   |---HeartRateGraph.ets                 // 实时心率图表
51|   |---NavigationBar.ets                  // 顶部导航栏
52|---uitls
53|   |---ArrayBufferUtils.ts                // ArrayBuffer工具
54|   |---DateUtils.ts                       // 日期工具
55|   |---Log.ts                             // 日志工具
56|---viewmodel
57|   |---BluetoothViewModel.ets             // 主要封装了蓝牙库相关的接口,实现相关功能,如:开启蓝牙、扫描BLE、连接、断连等功能
58advertiser/src/main/ets/
59|---constants
60|   |---BleConstants.ts                    // BLE常量
61|---entryability
62|---pages
63|   |---Main.ets                           // 首页
64|---uitls
65|   |---ArrayBufferUtils.ts                // ArrayBuffer工具
66|   |---Log.ts                             // 日志工具
67|   |---MathUtils.ts                       // Math工具,用于生成随机数
68|---viewmodel
69|   |---AdvertiserBluetoothViewModel.ets   // 主要封装了蓝牙库相关的接口,实现相关功能,如:开启蓝牙、开启蓝牙心率广播等功能
70```
71
72### 具体实现
73
741. 首页扫描蓝牙心率设备:使用[@ohos.bluetooth.ble](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-connectivity-kit/js-apis-bluetooth-ble.md) 来实现蓝牙的开启和BLE的扫描,然后再使用一个List显示扫描到BLE心率设备,点击连接按钮可以连接上对应的心率设备。
752. 实时心率图页:使用[@ohos.bluetooth.ble](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-connectivity-kit/js-apis-bluetooth-ble.md) 来接收心率设备发送的心率数据,并使用画布[Canvas](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-components-canvas-canvas.md) 来绘制实时心率图,点击断开连接可以断开与当前心率设备的连接。
76
77### 相关权限
78
79| 权限名                                 | 权限说明                                  | 级别         |
80| -------------------------------------- | ------------------------------------- | ------------ |
81| ohos.permission.USE_BLUETOOTH          | 允许应用查看蓝牙的配置。                          | normal       |
82| ohos.permission.DISCOVER_BLUETOOTH     | 允许应用配置本地蓝牙,查找远端设备且与之配对连接。     | normal       |
83| ohos.permission.MANAGE_BLUETOOTH       | 允许应用配对蓝牙设备,并对设备的电话簿或消息进行访问。 | system_basic |
84| ohos.permission.APPROXIMATELY_LOCATION | 允许应用获取设备模糊位置信息。                       | normal       |
85| ohos.permission.LOCATION               | 允许应用获取设备位置信息。                         | normal       |
86| ohos.permission.ACCESS_BLUETOOTH       | 允许应用接入蓝牙并使用蓝牙能力,例如配对、连接外围设备等。         | normal       |
87
88### 依赖
89
90本示例需要使用设备来模拟BLE心率设备。这里使用OpenHarmony来模拟了BLE心率设备,相关代码在`module - advertiser`。使用另一台OpenHarmony设备运行`advertiser`编译出来的hap后,点击`开启BLE心率广播`。当BLE心率服务应用扫描并连接到模拟的BLE心率设备后,就可以在应用中查看当前模拟的实时心率。
91
92### 约束与限制
93
941. 本示例仅支持标准系统上运行。
952. 本示例为Stage模型,从API version 10开始支持。SDK版本号:4.0.10.18。
963. 本示例需要使用DevEco Studio 3.1 Release (Build Version: 3.1.0.500, built on April 28, 2023)编译运行。
974. 本示例所配置的权限包含system_basic级别(相关权限级别可通过[权限定义列表]([OpenAtom OpenHarmony](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md)查看),需要手动配置对应级别的权限签名或者使用ACL使能(具体操作可查看[自动化签名方案](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-auto-configuring-signature-information-0000001271659465))。
98
99### 下载
100
101如需单独下载本工程,执行如下命令:
102
103```
104git init
105git config core.sparsecheckout true
106echo code/BasicFeature/Connectivity/Bluetooth/ > .git/info/sparse-checkout
107git remote add origin https://gitee.com/openharmony/applications_app_samples.git
108git pull origin master
109```