【鸿蒙开发】蓝牙Socket应用开发案例

本文档主要讲解蓝牙 Socket 应用的开发流程和使用方法。

应用开发

本文使用的 DevEcoStudio 版本是 4.1.0.400,API 版本为 11。

  1. 通过 DevEcoStudio 创建项目"File->New->Create Project"创建一个工程。
  1. 工程创建完毕后,在 entry\src\main\ets 创建蓝牙 socket 相关目录,并且 entry\build-profile.json5 中配置 worker。

    ets
    ├─ workers
    │ └─ Worker.ets
    ├─ pages
    │ └─ Index.ets
    └─ entryability
    └─ EntryAbility.ets

  2. 界面入口为 Index.ets,此处也为蓝牙测试页面

蓝牙 Socket 相关接口可在 @ohos.bluetooth.socket(蓝牙 socket 模块)(推荐) (openharmony.cn)中查找和学习

客户端传送次数和包长度可供选择,每次传输 102 个包,包中数组元素为 0-101,如第一个包中元素皆为 0,长度为应用界面规定长度,以此类推,客户端计算发包 1~100 的发包的发包个数和长度,共发送字节为收到的长度的累加。在以上数据发送完毕后,再发送一个首个元素为 199 的数组表示发送完毕。

服务端接收数据流程如下图所示。

需要注意的是,因为客户端在主线程发送数据会存在 appfreeze 的问题,所以需要让客户端在与主线程并行的 worker 线程中发送数据,具体可参考 @ohos.worker (启动一个 Worker)

DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。

erlang 复制代码
`欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

应用使用

准备

  • 两块 dayu200 开发板
  • 在使用前确保两块开发板的蓝牙是开启状态,且两块开发板蓝牙配对成功
  • 安装应用程序:hdc install xxx.hap
  • 关于两块开发板所用镜像适配情况: (1) 5.0.0Release(OpenHarmony 5.0.0.71)版本安装应用无法出现授权弹框且会出现闪退状况,需自行在设置-隐私-权限管理-应用-Socket 应用中允许使用蓝牙权限; (2) 4.1.1Release(OpenHarmony 4.1.7.8)版本服务端接收完毕后取消订阅 spp 读请求事件失败,但不影响使用; (3) 5.0 Beta1(OpenHarmony 5.0.0.25)版本使用无故障。

使用

  1. 在两块开发板上安装此应用;

  2. 点击运行 Socket 应用,允许蓝牙权限;

  3. 一台开发板选 Socket 客户端,一台选 Socket 服务端;

  4. 客户端选择已配对的服务端蓝牙名称,并选择测试次数和包长度;

  5. 先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮;

  6. 客户端页面显示每次发包次数及包长,并在底部显示共测试次数和共发送字节长度,服务端会显示每次收包个数、包长、用时及速度,并在底部显示共测试次数、共收到字节、总计时以及平均速度。(点击顶部文字"蓝牙 Socket 测试"可变换背景颜色,颜色为白色时,不打印日志,为粉色时打印日志)

  7. 测试结果:本测试结果为在三种镜像下测试次数为 100 情况下的平均速度,具体结果如下:

    4.1.1Release 版本(OpenHarmony 4.1.7.8) 5.0 Beta 版本(OpenHarmony 5.0.0.25) 5.0.0Release 版本(OpenHarmony 5.0.0.71)
    包长为 10 字节时的平均速度(单位:KB/s) 13 17 24
    包长为 1024 字节时的平均速度(单位:KB/s) 153 155 184
    包长为 4096 字节时的平均速度(单位:KB/s) 160 160 189
    包长为 10 字节时的总收包个数(单位:个) 1497 1552 1651
    包长为 1024 字节时的总收包个数(单位:个) 11530 12366 12962
    包长为 4096 字节时的总收包个数(单位:个) 47407 51999 55193

    相比之下,包长为 10 字节时的传输速率较低,其原因可能是:每次回调中内存包含 1 到 100 的每次回调包含数据较少,而较小的数据包可能会导致更多的头部信息和开销,从而降低实际的传输速率。相反,较大的数据包可以减少这种开销,故传输速率较大。

常见问题及解决办法

  1. 问题描述:应用打开出现闪退情况 可能原因:该开发板蓝牙处于关闭状态 解决方法:在设置中打开蓝牙
  2. 问题描述:点击按钮,按钮变成红色,按钮中显示"蓝牙未打开,请再试一次" 可能原因:开发板蓝牙处于关闭状态或按钮点击顺序有误 解决方法:检查两块开发板蓝牙状态,将处于关闭状态的蓝牙打开,如两端蓝牙皆处于开启状态,则为按钮点击顺序有误,应先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮
相关推荐
仓颉编程语言1 小时前
南京大学OpenHarmony技术俱乐部正式揭牌 仓颉编程语言引领生态创新
harmonyos·鸿蒙·仓颉编程语言
yuanlaile2 小时前
Flutter开发HarmonyOS实战-鸿蒙App商业项目
flutter·华为·harmonyos·flutter开发鸿蒙
HarmonyOS小助手3 小时前
用 DevEco Studio 模拟器这些能力 没真机也能高效调测鸿蒙原生应用
harmonyos·鸿蒙·deveco studio·harmonyos next
HarmonyOS_SDK8 小时前
【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit
harmonyos
_苏歌8 小时前
HarmonyOS基本的应用的配置
harmonyos·鸿蒙
SuperHeroWu710 小时前
【HarmonyOS 5】鸿蒙发展历程
华为·harmonyos
青年夏日科技工作者1 天前
Android WebView加载h5打开麦克风与摄像头的权限问题
android·数码相机·harmonyos
~央千澈~1 天前
鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡
华为·harmonyos
马剑威(威哥爱编程)1 天前
HarmonyOS 5.0 低时延音视频开发
华为·音视频·harmonyos
lurw9261 天前
HarmonyOS Device Connector(hdc)
华为·harmonyos