辛宝Otto

辛宝Otto 的玄酒清谈

北漂前端程序员儿 / 探索新事物 / Web Worker 主播之一/内向话痨
xiaoyuzhou
email

速通鴻蒙 - 從 ets 查看電池電量信息到 api 文檔、代碼結構

速通鴻蒙開發者文檔 系列:

  • [[速通鴻蒙 - 從 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,很多。

image

可以理解為 @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 裡封裝。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。