速通鸿蒙 - 从 ets 查看电池电量信息到 api 文档、代码结构

速通鸿蒙开发者文档 系列：

[[速通鸿蒙 - 从 ets 查看电池电量信息到 api 文档、代码结构]]

假设你和我一样都是鸿蒙新手，看到庞大、陌生的知识体系感到无从下手，可以参考我这个系列文档，如果你按照我的思路，应该可以深入浅出窥探鸿蒙知识体系。

前置准备

这里前置的知识是，下载、运行鸿蒙的默认 hello world 应用。如果这一部分不掌握，后面的可以不着急看。

现在手机电量是多少？

问一个非常经典的问题：如何通过 api 查询当前的手机电量是多少？

为什么我说他经典，他是一个典型的系统 api，需要翻阅文档才能找到，并且他和其他有用的设备信息在一起放着。我在分享使用 uts 学习 android、ios 时候都提过。

先揭晓答案，阅读鸿蒙文档 ohos.batteryInfo 提到了具体 api 用法。

Copy
import {batteryInfo} from '@kit.BasicServicesKit';

let batterySOCInfo: number = batteryInfo.batterySOC;
console.info("The batterySOCInfo is: " + batterySOCInfo);

下面是一个完整的页面结构，可以快速观察具体用法。

Copy
// 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 里封装。