【鸿蒙开发】蓝牙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 客户端"按钮
相关推荐
菜鸟小芯14 分钟前
【开源鸿蒙跨平台开发先锋训练营】DAY8~DAY13 底部选项卡&我的页面功能实现
flutter·harmonyos
一起养小猫1 小时前
Flutter for OpenHarmony 进阶:表达式解析算法与计算器核心实现
算法·flutter·harmonyos
听麟2 小时前
HarmonyOS 6.0+ PC端系统级桌面插件开发实战:ArkUI Widget进阶与系统交互深度集成
华为·交互·harmonyos
不爱吃糖的程序媛2 小时前
Flutter 三方库鸿蒙(OHOS)适配分析流程
flutter·华为·harmonyos
2301_796512522 小时前
【精通篇】打造React Native鸿蒙跨平台开发高级复合组件库开发系列:Lazyload 懒加载(懒加载的图片)
前端·javascript·react native·react.js·ecmascript·harmonyos
mocoding2 小时前
我这样用鸿蒙化Flutter三方库file_selector实现单图片和多图片选择
flutter·华为·harmonyos
听麟2 小时前
HarmonyOS 6.0+ PC端视频剪辑工具开发实战:Media Kit进阶与硬件加速渲染落地
华为·harmonyos
浩宇软件开发2 小时前
基于OpenHarmony鸿蒙开发医院预约挂号系统(前端后端分离)
前端·华为·harmonyos
summerkissyou19873 小时前
android-蓝牙-广播启动-startAdvertising和startAdvertisingSet区别
android·蓝牙
不爱吃糖的程序媛3 小时前
如何判断Flutter三方库是否需要OHOS适配开发?附完整适配指导
flutter·华为·harmonyos