> 文档中心 > 鸿蒙系统应用开发之基于API6的蓝牙开发

鸿蒙系统应用开发之基于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的蓝牙开发