写在前面

由题意得,我今天讲的是基于鸿蒙系统的兼容JS的类Web开发范式的软件应用开发之蓝牙开发,它是基于API6的,至于为什么是基于API6,请你花几分钟看一下我之前写的这个系列教程的第四篇“ 鸿蒙系统应用开发之入门解说",地址是:https://www.yuque.com/ataola/cptslg/dx885eduha4kouiv 。其实也有更加新的API出来,那我这里就整理好放下面了。

@system.bluetooth(API 6)

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-system-bluetooth-0000001281001150

@ohos.bluetooth(API 7+)

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-bluetooth-0000001281480546

需求分析

大致是这样子的,我们要基于鸿蒙系统提供的一些底层实现的API去进行软件应用开发。具体要实现的功能点是:

  • 蓝牙的连接与断开
  • 读取附近蓝牙设备列表并对其进行匹配
  • 已匹配设备的取消匹配以及连接

技术调研

额,没什么好调研的,由于一些不可描述的原因,我这边是用API6开发的,它只有四个API,照着看一下复制粘贴示例代码就好了,然后能够遇到的错误码大致如下:

老规矩,拍拍手,上菜。

思路分析

简单地分析一下 ,大致是这样子的。你需要一些变量去存储获取的数据、去做状态、数据的展示,具体如下:

然后你要实现一些方法,具体的如下:

好,在理清完思路我们开始写点代码。

技术实现

配置

这一块的话,是这样子的。我们在底层系统上安装完软件,需要一些权限,那么这个配置主要是为了获取这些权限要配的,具体的如下

好的,下面我们贴出配置的详细代码

{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
},
"module": {
"package": "com.example.myapplication",
"name": ".MyApplication",
"mainAbility": "com.example.myapplication.MainAbility",
"deviceType": [
"phone",
"tablet",
"tv",
"wearable"
],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"name": "com.example.myapplication.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"visible": true,
"launchType": "standard"
}
],
"js": [
{
"pages": [
"pages/index/index"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
],
"reqPermissions": [
{
"name": "ohos.permission.USE_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.DISCOVER_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.MANAGE_BLUETOOTH",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
},
{
"name": "ohos.permission.LOCATION",
"reason": "$string:entry_MainAbility",
"usedScene": {
"ability": [
"com.example.myapplication.MainAbility"
],
"when": "always"
}
}
]
}
}

可以看到效果就是这样子的,嗯。

伪代码实现

读取周边蓝牙设备的代码实现

简单地调用下给的API接口,然后在成功的时候一把Map到蓝牙设备列表里面去,然后取消订阅发现。具体的如图所示:

取消匹配蓝牙设备

把当前的设备整个塞回蓝牙设备列表里面去,然后在已匹配列表把它送走。

连接蓝牙

还是调用官方提供的API,成功的话,把之前那个未连接的状态反一下,然后把当前连接的蓝牙设备绑在当前蓝牙设备变量上

最后

让我们来看一下,最后整出来的效果吧。

此处为语雀视频卡片,点击链接查看:IMG_8899.MOV

勘误

额,官网文档的代码这里写错了,家人们复制粘贴的时候把它替换成图中所示的符号。

最新文章

  1. 用CSS画个三角形
  2. 使用Kindle4rss推送自己感兴趣的博文
  3. Edit 方法
  4. ZOJ3717 Balloon(2-SAT)
  5. [设计模式]<<设计模式之禅>>模板方法模式
  6. PHP之open_ssl
  7. NSURLSession -- 实际开发中运用
  8. aul 学习测试(测量)
  9. Ubuntu 12.04 修改键盘映射
  10. python+selenium自动化软件测试(第4章):场景判断与封装
  11. PHP中引入文件的四种方式及区别
  12. junit测试套件
  13. vue---slot,slot-scoped,以及2.6版本之后插槽的用法
  14. 安装Caffe纪实
  15. ARM的9种寻址方式
  16. Html5 序列帧动画
  17. 基于php5.5使用PHPMailer-5.2发送邮件
  18. LA 4992 Jungle Outpost(半平面交)
  19. iOS 基础-----关于UIView 的 frame 与 bounds
  20. 最新版OpenWrt编译教程,解决依赖问题

热门文章

  1. PMM实现监控Mysql-MGR
  2. pinpoint部署
  3. SimpleDateFormat线程安全问题排查
  4. DevExpress窗体加载等待
  5. Thinkphp6使用腾讯云发送短信步骤
  6. C#微信公众号关注二维码生成、密文方式
  7. 重学c#系列——委托和匿名函数[二十五]
  8. Leetcode-SQL学习计划-SQL入门-584:寻找用户推荐人
  9. 现代 CSS 之高阶图片渐隐消失术
  10. npm设置