鸿蒙系统应用开发之基于API6的蓝牙开发
写在前面
由题意得,我今天讲的是基于鸿蒙系统的兼容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
勘误
额,官网文档的代码这里写错了,家人们复制粘贴的时候把它替换成图中所示的符号。