跟着小白一起学鸿蒙—编写一个蓝牙性能Stage HAP

系统 OpenHarmony
本章使用OpenHarmony screenshot的截屏功能,因为此截屏权限是系统权限,所以需要配置Sdk里的权限以方便安装hap。

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

之前的章节我们是用fa模式编写的hap,这次我们采用stage模式创建HAP。

注意:本章使用OpenHarmony screenshot的截屏功能,因为此截屏权限是系统权限,所以需要配置sdk里的权限以方便安装hap。

简介

仍然使用的是Dev-Eco Studio3.0 , 编写的环境配置尝试变为 SDK9,Model为Stage。

#盲盒+码# #跟着小白一起学鸿蒙#编写一个蓝牙性能Stage HAP-开源基础软件社区

程序结构

MyApplication\entry\src\main
.
├─ets
├─Application
├─Component
├─controller
├─MainAbility
├─model
├─pages
├─index.ets
├─benchmarkTest.ets
└─subManualApiTest
├─res
└─image
└─Utils
├─resources
├─base
├─element
├─media
└─profile
└─rawfile
└─module.json5

补充

与SDK8相比,目录结构发生了一些改变。如:新加了Application文件夹,改变了MainAbility的目录层级,原本的config.json变成了module.json5,添加了AppScope文件夹 等 。

因此添加page的位置变为:

module.json5中的 "pages": "$profile:main_pages",
位置为:src/main/resources/base/profile/main_ pages.json
src/main/resources/base/profile/main_pages.json
{"src": ["pages/index","pages/benchmarkTest",
...
]}

修改bundleName的位置为:MyApplication23\AppScope\app.json5。

{"app": {
"bundleName": "ohos.samples.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name",
"distributedNotificationEnabled": true}}

性能测试

这里的性能测试主要为了在调用函数接口时,了解其在调用时的所花费的时间,可以传输的数据大小。因此编写了相关的时间性能测试,稳定性能测试(避免时间出现偶然性)和带宽测试。

时间性能测试:
function test(func) {
let start = new Date().getTime(); //起始时间
func(); //执行待测函数
let end = new Date().getTime(); //接受时间
console.log("开始:", Number(start), "ms")
console.log("结束:", Number(end), "ms")
console.log("花费:", Number(end - start), "ms")
let message = ""
message += "花费:" + Number(end - start) + "ms" + "\n"
message += "开始:" + Number(start) + "ms; " + "结束:" + Number(end) + "ms" + "\n"
return message //返回函数执行需要时间
}
添加截屏功能
  • 查看本地d.ts所在位置

  • 添加 @ohos.screenshot
本地d.ts 路径:C:\Users\xxx\AppData\Local\OpenHarmony\Sdk\ets\3.2.7.5\api\
开源鸿蒙系统源码文件所在位置: oh32/interface/sdk-js/api/@ohos.screenshot.d.ts ,将该文件拷至本地路径下
  • 添加截屏代码
  • 配置permission
MyApplication23\entry\src\main\module.json5
...
"requestPermissions": [
{
"name": "ohos.permission.CAPTURE_SCREEN"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.READ_MEDIA"
}
]
  • 这时因为权限问题,在安装时会报错:提示:Failed due to grant request permissions failed。从错误日志上看安装失败原因:由于授予请求权限失败,安装失败。
  • 知道是权限问题,现在要确认是那些权限导致,OpenHarmony中涉及的权限等级你可以参看:​​查看申请权限的等级​​,文档中列举出了目前OpenHarmony所有的权限和权限等级。
{
"name": "ohos.permission.CAPTURE_SCREEN",
"grantMode": "system_grant",
"availableLevel": "system_core",
"provisionEnable": true,
"distributedSceneEnable": false
},
{
"name": "ohos.permission.WRITE_MEDIA",
"grantMode": "user_grant",
"availableLevel": "normal",
"provisionEnable": true,
"distributedSceneEnable": true,
"label": "$string:ohos_lab_write_media",
"description": "$string:ohos_desc_write_media"
},
{
"name": "ohos.permission.READ_MEDIA",
"grantMode": "user_grant",
"availableLevel": "normal",
"provisionEnable": true,
"distributedSceneEnable": true,
"label": "$string:ohos_lab_read_media",
"description": "$string:ohos_desc_read_media"
},
  • 如果权限的等级值为: availableLevel: “system_core”/“system_basic”,则需要在UnsgnedReleasedProfileTemplate.json 配置alcs字段,将需要的高等级权限放在acls中,具体做法如下:
  • 配置签名。
路径为:
"C:\Users\xxx\AppData\Local\OpenHarmony\Sdk\toolchains\3.2.7.5\lib\UnsgnedReleasedProfileTemplate.json"

#盲盒+码# #跟着小白一起学鸿蒙#编写一个蓝牙性能Stage HAP-开源基础软件社区

保存后更新自动签名即可。

测试结果

#盲盒+码# #跟着小白一起学鸿蒙#编写一个蓝牙性能Stage HAP-开源基础软件社区

  • 本地发送文件到开发板可以通过如下命令实现。
hdc_std file send 本地文件 开发板目标路径
  • 从开发板拷贝文件到本地。
hdc_std file recv 开发板文件 本地目标路径

总结

OpenHarmony的蓝牙功能通过测试速度还是很快的,希望此应用对社区朋友有帮助。

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

责任编辑:jianghua 来源: 51CTO开源基础软件社区
相关推荐

2022-09-30 14:08:26

Hap应用鸿蒙

2022-10-10 14:47:04

蓝牙应用鸿蒙

2022-11-24 14:34:41

Hap程序鸿蒙

2022-09-28 13:57:41

鸿蒙开源

2022-10-31 15:35:02

Wi-Fi蓝牙子系统

2022-11-08 15:43:45

开源鸿蒙蓝牙协议栈

2022-11-29 16:35:02

Tetris鸿蒙

2022-12-02 14:20:09

Tetris鸿蒙

2022-12-09 15:34:38

2022-11-14 17:01:34

游戏开发画布功能

2022-08-29 17:25:19

鸿蒙应用开发

2022-08-19 19:02:20

开源鸿蒙操作系统

2022-09-16 15:22:16

测试套件鸿蒙

2023-01-03 15:09:10

鸿蒙常用工具

2022-10-09 15:05:50

NAPI框架鸿蒙

2022-10-20 16:40:16

JS应用控制LED鸿蒙

2022-12-06 15:39:16

鸿蒙主干代码

2022-11-03 15:47:04

HTTP通信协议

2022-12-05 15:02:14

鸿蒙用户鉴权

2022-11-22 15:15:46

Wi-Fi鸿蒙
点赞
收藏

51CTO技术栈公众号