速通鴻蒙開發者文檔 系列:
- [[速通鴻蒙 - 從 ets 查看電池電量信息到 api 文檔、代碼結構]]
假設你和我一樣都是鴻蒙新手,看到龐大、陌生的知識體系感到無從下手,可以參考我這個系列文檔,如果你按照我的思路,應該可以深入淺出窺探鴻蒙知識體系。
前置準備#
這裡前置的知識是,下載、運行鴻蒙的默認 hello world 應用。如果這一部分不掌握,後面的可以不著急看。
現在手機電量是多少?#
問一個非常經典的問題:如何通過 api 查詢當前的手機電量是多少?
為什麼我說他經典,他是一個典型的系統 api,需要翻閱文檔才能找到,並且他和其他有用的設備信息在一起放著。我在分享使用 uts 學習 android、ios 時候都提過。
先揭曉答案,閱讀鴻蒙文檔 ohos.batteryInfo 提到了具體 api 用法。
import {batteryInfo} from '@kit.BasicServicesKit';
let batterySOCInfo: number = batteryInfo.batterySOC;
console.info("The batterySOCInfo is: " + batterySOCInfo);
下面是一個完整的頁面結構,可以快速觀察具體用法。
// Index.ets
import {batteryInfo} from '@kit.BasicServicesKit'
@Entry
@Component
struct Index {
@State message: string = '查詢電量'
@State currentInfo: number = -1
build() {
Row() {
Column() {
Text('當前電量:'+ this.currentInfo+'%')
Button() {
Text(this.message)
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
.type(ButtonType.Capsule)
.margin({
top: 20
})
.backgroundColor('#0D9FFB')
.width('40%')
.height('5%')
.onClick(() => {
let batterySOCInfo: number = batteryInfo.batterySOC
this.currentInfo = batterySOCInfo
})
}
.width('100%')
}
.height('100%')
}
}
所以目的達到了,但是還沒完,我們趁機學習一下 ets 的 api 寫法、文檔結構。
代碼結構#
ets 和 ts 非常類似,通過引用內置模塊 @kit.BasicServicesKit
、具體的 api batteryInfo
。
在 ets 裡這種 kit.xxx
有很多,通過 ctrl 點擊代碼裡的 BasicServicesKit
可以看到代碼定義,也就是 d.ts
,可以看到其他有的 kit,很多。
可以理解為 @kit.xxx
對應 api/kits/xxx/index.ts
模塊。進一步點進去,看到代碼中 import batteryInfo from '@ohos.batteryInfo';
不看文檔,看原始定義就足夠了。把 d.ts 塞給 ai,自動生成了表格。
這是 batteryInfo.d.ts 的內容,整理成表格
效果還不錯。
文檔結構#
觀察文檔的左側 sideBar,電池信息文檔在 API參考 - 系統 - 基礎功能 - BasicServicesKit - 設備管理內部
,邊欄頂部還有一個元服務是否可用的複選框,切換之後顏色沒有變灰,說明元服務也可以使用。
有模塊描述、使用描述,注意如果是元服務用戶,返回值是有限的,除非明確支持,否則元服務不可用。
UTS 是如何封裝的?#
如果是 uniapp 的 uts 用戶,可以繼續觀察鴻蒙的適配是如何做的。
打開 uni-api 開源倉庫,定位到 uni-api/uni_modules/uni-getbatteryinfo
可以看到鴻蒙的 api 也是這樣子封裝的。引入的 @ohos.batteryInfo
總結#
通過這個小案例,說明 api 是如何使用、如何閱讀,如何在 uts 裡封裝。