OpenHarmony 蓝牙相关API用法

介绍

本示例通过使用蓝牙低功耗心率服务,展示蓝牙相关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.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网技术知识点总览——计算机网络知识框架

简介 本文对计算机网络的知识点整体框架进行梳理和分享如下:

【深度学习】写实转漫画——CycleGAN原理解析

1、前言 上一篇,我们讲解了按照指定文本标签生成对应图像的CGAN。本篇文章,我们讲CycleGAN。这个模型可以对图像风格进行转化,并且训练还是在非配对的训练集上面进行的,实用性挺大 原论文:Unpaired Image-to-Image T…

自定义鼠标软件 SteerMouse最新完整激活版

SteerMouse是一款实用的Mac OS X系统辅助工具,可以帮助用户自定义鼠标和触控板的设置,提高使用效率。它提供了多种功能,如自定义按钮、滚轮和光标速度,以及调整灵敏度等,使用户能够根据自己的需求和习惯进行优化。 Ste…

idea 将项目上传到gitee远程仓库具体操作

目录标题 一、新建仓库二、初始化项目三、addcommit四、配置远程仓库五、拉取远程仓库内容六、push代码到仓库七、如果是私有仓库可能会拉取失败(一)需要增加SSH 公钥(二)把远程仓库地址换成ssh的连接八、如果是私有仓库&#xff…

【PCL】教程conditional_euclidean_clustering 对输入的点云数据进行条件欧式聚类分析...

[done, 3349.09 ms : 19553780 points] Available dimensions: x y z intensity 源点云 Statues_4.pcd 不同条件函数output.pcd 【按5切换到强度通道可视化】 终端输出: Loading... >> Done: 1200.46 ms, 19553780 points Downsampling... >> Done: 411…

学习BOM

目录 前言: 1. BOM组成: 1.1Window 对象: 1.1Location 对象: 1.2Navigator 对象: 1.2.1 navigator 对象包含了关于浏览器的信息包括: 1.3History 对象: 1.4常用的history的方法和属性: 1.4Document…

力扣-LCP 02.分式化简

题解: class Solution:def fraction(self, cont: List[int]) -> List[int]:# 初始化分子和分母为 0 和 1n, m 0, 1# 从最后一个元素开始遍历 cont 列表for a in cont[::-1]:# 更新分子和分母,分别为 m 和 (m * a n)n, m m, (m * a n)# 返回最终的…

大型网站系统架构演化实例_9.分布式服务

1. 第十阶段:分布式服务 随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数…

计算机网络 -- 多人聊天室

一 程序介绍和核心功能 这是基于 UDP 协议实现的一个网络程序,主要功能是 构建一个多人聊天室,当某个用户发送消息时,其他用户可以立即收到,形成一个群聊。 这个程序由一台服务器和n个客户端组成,服务器扮演了一个接受…

[Kubernetes] etcd的集群基石作用

文章目录 1. 配置存储2. 数据一致性3. 服务发现与协调4. 集群状态中枢5. 集群稳定性 1. 配置存储 etcd作为一个高度可靠的分布式键值存储系统,存储了Kubernetes集群的完整配置和状态数据。集群的元数据,包括节点信息、命名空间、部署、副本集、服务、持…

5.11 mybatis之returnInstanceForEmptyRow作用

文章目录 1. 当returnInstanceForEmptyRowtrue时2 当returnInstanceForEmptyRowfalse时 mybatis的settings配置中有个属性returnInstanceForEmptyRow,该属性新增于mybatis的3.4.2版本,低于此版本不可用。该属性的作用官方解释为:当返回行的所…

使用Python+opencv实现自动扫雷

大家好,相信许多人很早就知道有扫雷这么一款经典的游戏,更是有不少人曾听说过中国雷圣,也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经典游戏,从过去到现在依然都有着它独特的…

汽车4S集团数据分析

派可数据分析--汽车4S集团。 派可数据汽车4S集团数据分析概述。派可数据汽车4S集团分析主题全面涵盖行业内各板块业务分析,具体包括:保险业务分析、客户关系分析、汽车保养情况分析、售后维修主题分析、整车销售分析、整车库存分析、装具销售分析、配件…

dbearver达梦连接

1、新建达梦驱动 新建驱动管理器 点击“数据库”,选择“驱动管理器” 配置 点击“新建”,出现配置界面 类名:dm.jdbc.driver.DmDriver #固定值,不能修改URL模板:jdbc:dm://{host}/DMHR #配置要连接的数据库信息默认…

【VIC水文模型】准备工作:平台软件安装

VIC水文模型所需平台软件安装 1 Arcgis安装2 Cygwin安装(Linux系统)3 Matlab/R/Fortran的安装Notepad 4 VIC模型程序代码获取参考 由于VIC模型的编程语言为C语言,交互方式为控制台输指令,需要在Linux系统上运行。Windows 上使用 …

Https网站接口被黑被恶意调取

背景: 维护的一个网站最近短信接口被黑,发送大量短信。起初以为是在网站内部操作,优化了发送短信前的操作,如添加图形验证码,屏蔽国外IP等。但后续还存在被调取情况,定位排查到是该接口在外部被恶意调取。 …

免费使用ChatGPT 4.0 和 文心一言 4.0

前言 今天给大家分享如何免费使用ChatGPT4.0 和 文心一言 4.0,废话就不多说了,我们直接入正题。 ChatGPT 4.0 先来看看如何免费使用ChatGPT 4.0 进入Coze登录 https://www.coze.com 选择大圣-GPT-4 文心一言 4.0 通过文心智能体平台,就…

Java 笔记 03:Java 基础知识,使用 IDEA 创建 Java 项目、设置注释颜色,以及自动生成 JavaDoc

一、前言 记录时间 [2024-04-21] 系列文章简摘: Java 笔记 01:Java 概述,MarkDown 常用语法整理 Java 笔记 02:Java 开发环境的搭建,IDEA / Notepad / JDK 安装及环境配置,编写第一个 Java 程序 本文讲述了…

OJ:数字三角形(搜索)

🎁个人主页:我们的五年 🔍系列专栏:每日一练 🌷追光的人,终会万丈光芒 🌷1.问题描述: ⛳️题目描述: 示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路…

对接浦发银行支付(六)-- 请求退款接口与查询退款结果接口

一、概述 本文介绍浦发银行支付的请求退款和查询退款结果两个接口,浦发银行的退款流水号是以5901开头。发起退款的时候,浦发银行返回浦发银行退款流水号给我们(这里的我们是指对接浦发银行支付的一方,于浦发银行而言,…