鸿蒙系统应用开发之基于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,照着看一下复制粘贴示例代码就好了,然后能够遇到的错误码大致如下:

鸿蒙系统应用开发之基于API6的蓝牙开发

老规矩,拍拍手👏,上菜。

思路分析

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

鸿蒙系统应用开发之基于API6的蓝牙开发

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

鸿蒙系统应用开发之基于API6的蓝牙开发

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

技术实现

配置

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

鸿蒙系统应用开发之基于API6的蓝牙开发

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

{   "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"         }       }     ]   } } 

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

鸿蒙系统应用开发之基于API6的蓝牙开发

伪代码实现

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

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

鸿蒙系统应用开发之基于API6的蓝牙开发

取消匹配蓝牙设备

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

鸿蒙系统应用开发之基于API6的蓝牙开发

连接蓝牙

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

鸿蒙系统应用开发之基于API6的蓝牙开发

最后

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

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

勘误

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

鸿蒙系统应用开发之基于API6的蓝牙开发

发表评论

评论已关闭。

相关文章