寫在前面
由題意得,我今天講的是基於鴻蒙系統的相容JS的類Web開發正規化的軟體應用開發之藍芽開發,它是基於API6的,至於為什麼是基於API6,請你花幾分鐘看一下我之前寫的這個系列教程的第四篇“ 鴻蒙系統應用開發之入門解說",地址是:https://www.yuque.com/ataola/cptslg/dx885eduha4kouiv 。其實也有更加新的API出來,那我這裡就整理好放下面了。
@system.bluetooth(API 6)
@ohos.bluetooth(API 7+)
需求分析
大致是這樣子的,我們要基於鴻蒙系統提供的一些底層實現的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
勘誤
額,官網文件的程式碼這裡寫錯了,家人們複製貼上的時候把它替換成圖中所示的符號。