仓颉语言查询设备电量:ohos.battery_info(BasicServicesKit 电量信息模块)API 详解
文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载本篇技术指南围绕 OpenHarmony 仓颉 SDK 中 BasicServicesKit基础服务套件的ohos.battery_info模块展开完整讲解BatteryInfo类的全部静态属性以及BatteryCapacityLevel、BatteryChargeState、BatteryHealthState、BatteryPluggedType四个电量状态枚举的定义与用法。读完后你将能够直接以仓颉代码查询设备的剩余电量、温度、电压电流、充电状态、健康状态与充电器类型并掌握该模块的系统能力要求、版本前提及常见错误码如 4900101的排查手段。该模块在 Basic Services Kit 的设备管理能力分类中承担电量信息查询职责。从 BasicServicesKit 目录索引 可以看到ohos.battery_info与ohos.device_info设备信息同属设备管理子域Basic Services Kit 简介 也明确将其定位为提供查询电量信息的能力。模块定位与导入方式battery_info模块主要提供电池状态和充放电状态的查询接口。所有接口均以BatteryInfo类的静态属性形式暴露开发者无需实例化对象即可读取当前设备的电量信息。导入模块使用仓颉的 Kit 级导入方式import kit.BasicServicesKit.*示例代码使用说明引自原文档若示例代码首行有// index.cj注释表示该示例可在仓颉模板工程的index.cj文件中编译运行若示例需获取 Context 应用上下文需在仓颉模板工程中的main_ability.cj文件中进行配置上述示例工程及配置模板详见 仓颉示例代码说明。需要说明的是各 Kit 中的仓颉示例并非完整程序而是对应 API 的主要代码仅供开发者参考如需编译运行需将示例拷贝到仓颉模板工程中。模板工程创建后会自动生成index.cj、main_ability.cj、ability_stage.cj三个模板文件在index.cj对应位置添加示例代码即可。详见 仓颉示例代码说明 中的步骤。系统能力与版本前提模块内所有接口BatteryInfo类、全部静态属性、四个枚举及其方法均标注了相同的前提系统能力SystemCapability.PowerManager.BatteryManager.Core起始版本22这意味着应用运行设备必须支持PowerManager.BatteryManager.Core系统能力且使用 OpenHarmony API 12起始版本 22及以上版本的仓颉 SDK 才能调用这些接口。在跨设备部署或条件编译场景中应以该系统能力标识作为能力检测依据。class BatteryInfo电池信息查询类public class BatteryInfo {}BatteryInfo是描述电池信息的类其全部成员均为静态只读属性覆盖电量、温度、电压电流、充电状态、健康状态、充电器类型与电池技术型号七个维度。电量类属性属性类型说明batterySocInt32当前设备剩余电池电量百分比batteryCapacityLevelBatteryCapacityLevel当前设备电池电量的等级public static prop batterySoc: Int32 public static prop batteryCapacityLevel: BatteryCapacityLevelbatterySoc以百分比数值形式给出剩余电量适合做精确展示如电量 78%batteryCapacityLevel则将电量抽象为离散等级满电、高电量、正常、低电量、告警、极低、关电更适合做业务分支判断如低电量省电策略、关电前数据保存避免在应用侧自行维护阈值切分逻辑。注原文档中第一个属性小节的标题写作batteryCapacityLevel但其代码与功能描述实际对应的是batterySoc电池充电状态 SoC单位为百分比。两者均为只读Int32属性本文按代码声明整理特此说明便于读者与官方文档对照。温度、电压、电流类属性属性类型单位说明batteryTemperatureInt320.1 摄氏度当前设备电池的温度voltageInt32微伏当前设备电池的电压nowCurrentInt32-当前设备电池的电流public static prop batteryTemperature: Int32 public static prop voltage: Int32 public static prop nowCurrent: Int32使用这三个属性时务必注意单位换算batteryTemperature返回值为实际温度的 10 倍例如读取到350表示电池温度 35.0 摄氏度voltage以微伏µV为单位例如4150000对应 4.15 V展示为伏特需除以 1 000 000nowCurrent表示电池当前电流可结合pluggedType与chargingStatus判断设备正处于充电还是放电过程。温度、电压、电流数据在电池热管理、充电功耗统计、设备健康度监测等场景下尤为常用。状态类属性属性类型说明chargingStatusBatteryChargeState当前设备电池的充电状态healthStatusBatteryHealthState当前设备电池的健康状态isBatteryPresentBool当前设备是否支持电池或电池是否在位pluggedTypeBatteryPluggedType当前设备连接的充电器类型technologyString当前设备电池的技术型号public static prop chargingStatus: BatteryChargeState public static prop healthStatus: BatteryHealthState public static prop isBatteryPresent: Bool public static prop pluggedType: BatteryPluggedType public static prop technology: String其中isBatteryPresent返回true表示设备支持电池或电池在位返回false表示不支持电池或电池不在位默认值为false。从文档语义看在桌面类、固定供电类等无电池设备上读取其他电量属性之前建议先检查该属性对返回false的情况做降级处理如隐藏电量 UI 或跳过相关逻辑。healthStatus除正常外还定义了低温、过热、过压、僵死等异常状态是构建电池保护逻辑如高温暂停充电提示、低温禁用快充提示的关键依据。enum BatteryCapacityLevel电池电量等级public enum BatteryCapacityLevel : EquatableBatteryCapacityLevel ToString { | LevelFull | LevelHigh | LevelNormal | LevelLow | LevelWarning | LevelCritical | LevelShutdown | ... }功能表示电池电量等级的枚举。父类型EquatableBatteryCapacityLevel与ToString。枚举值含义LevelFull满电量LevelHigh高电量LevelNormal正常电量LevelLow低电量LevelWarning告警电量LevelCritical极低电量LevelShutdown关机电量从枚举定义的结构看电量等级按满电 → 高 → 正常 → 低 → 告警 → 极低 → 关电从高到低递进开发者可以据此实现逐级加强的省电策略或告警提示。该枚举提供三个成员方法public operator func !(other: BatteryCapacityLevel): Bool public operator func (other: BatteryCapacityLevel): Bool public func toString(): String对电池电量等级进行判等如果两个电量等级相同返回true否则返回false!对电池电量等级进行判不等如果两个电量等级不同返回true否则返回falsetoString()返回电池电量等级值对应的字符串表示可直接用于日志打印或界面展示。/!为仓颉的重载运算符operator func参数other为BatteryCapacityLevel类型必填无默认值返回值均为Bool。enum BatteryChargeState电池充电状态public enum BatteryChargeState : EquatableBatteryChargeState ToString { | UnknownChargeState | Enabled | Disabled | Full | ... }功能表示电池充电状态的枚举。父类型EquatableBatteryChargeState与ToString。枚举值含义UnknownChargeState电池充电状态未知Enabled充电使能状态正在充电Disabled停止状态未充电Full已充满状态成员方法与BatteryCapacityLevel一致public operator func !(other: BatteryChargeState): Bool public operator func (other: BatteryChargeState): Bool public func toString(): String对电池充电状态进行判等如果充电状态相同返回true否则返回false!对电池充电状态进行判不等如果充电状态不同返回true否则返回falsetoString()返回电池充电状态值对应的字符串表示。典型业务用法判断chargingStatus BatteryChargeState.Full展示已充满图标判断chargingStatus BatteryChargeState.Enabled时提示充电中UnknownChargeState则提示读取充电状态失败需做容错处理。enum BatteryHealthState电池健康状态public enum BatteryHealthState : EquatableBatteryHealthState ToString { | UnknownHealthState | Good | Overheat | Overvoltage | Cold | Dead | ... }功能表示电池健康状态的枚举。父类型EquatableBatteryHealthState与ToString。枚举值含义UnknownHealthState电池健康状态未知Good正常Overheat过热Overvoltage过压Cold低温Dead僵死状态成员方法同样为、!两个判等运算符与toString()public operator func !(other: BatteryHealthState): Bool public operator func (other: BatteryHealthState): Bool public func toString(): String对电池健康状态进行判等如果健康状态相同返回true否则返回false!对电池健康状态进行判不等如果健康状态不同返回true否则返回falsetoString()返回电池健康状态值对应的字符串表示。健康状态枚举中Good之外的四个异常值覆盖了温度、电压与电池本身三类故障维度应用侧可针对Overheat过热与Cold低温提示用户调整使用环境对Dead僵死等严重状态触发数据保存与退出流程。enum BatteryPluggedType充电器类型public enum BatteryPluggedType : EquatableBatteryPluggedType ToString { | UnknownType | Ac | Usb | Wireless | ... }功能表示连接的充电器类型的枚举。父类型EquatableBatteryPluggedType与ToString。枚举值含义UnknownType未获取到连接充电器类型Ac交流充电器UsbUSB 充电器Wireless无线充电器成员方法与其他三个枚举保持同一模式public operator func !(other: BatteryPluggedType): Bool public operator func (other: BatteryPluggedType): Bool public func toString(): String对充电器类型进行判等如果充电器类型相同返回true否则返回false!对充电器类型进行判不等如果充电器类型不同返回true否则返回falsetoString()返回充电器类型值对应的字符串表示。充电器类型与chargingStatus组合使用价值更高例如接 USB 且EnabledUSB 充电中接Wireless且Full无线充电已充满等组合判断可驱动不同的 UI 提示与充电策略。组合使用示例查询并展示完整电量状态以下示例综合使用BatteryInfo的各静态属性演示一次完整的电量信息读取。示例代码需在仓颉模板工程的index.cj文件中编译运行参见 仓颉示例代码说明// index.cj import kit.BasicServicesKit.* func printBatteryInfo() { // 设备不支持电池或电池不在位时电量相关属性无意义直接返回 if (!BatteryInfo.isBatteryPresent) { print(设备不支持电池或电池不在位) return } // 剩余电量百分比与电量等级 print(剩余电量: BatteryInfo.batterySoc.toString() %) print(电量等级: BatteryInfo.batteryCapacityLevel.toString()) // 温度0.1 摄氏度换算为摄氏度 print(电池温度: (BatteryInfo.batteryTemperature / 10.0).toString() ℃) // 电压微伏换算为伏特 print(电池电压: (BatteryInfo.voltage / 1000000.0).toString() V) print(电池电流: BatteryInfo.nowCurrent.toString()) // 充电状态、健康状态与充电器类型 print(充电状态: BatteryInfo.chargingStatus.toString()) print(健康状态: BatteryInfo.healthStatus.toString()) print(充电器类型: BatteryInfo.pluggedType.toString()) // 业务分支示例低电量 未充电时提示用户 if (BatteryInfo.batteryCapacityLevel BatteryCapacityLevel.LevelWarning || BatteryInfo.batteryCapacityLevel BatteryCapacityLevel.LevelCritical) { if (BatteryInfo.chargingStatus ! BatteryChargeState.Enabled) { print(电量较低请尽快充电) } } }示例体现了三个要点所有接口均为BatteryInfo的静态只读属性直接以类名访问无需构造对象利用枚举的toString()输出可读文本利用重载的/!运算符做状态判断在读取前先检查isBatteryPresent并对温度、电压做单位换算保证展示值正确。常见问题与错误排查电量信息接口依赖系统电源管理服务当系统服务不可用或连接异常时可能返回模块特有的电源管理错误码。系统电源管理错误码 文档定义了如下典型错误码错误码错误信息错误描述4900101Failed to connect to the service.操作失败连接系统服务发生异常可能原因系统服务停止运行系统服务内部通讯发生异常。处理步骤引自 系统电源管理错误码检查系统服务是否正常运行在控制台中输入如下命令查看当前的系统服务列表 hdc shell hidumper -ls查看系统服务列表中是否包含PowerManagerService系统服务。通用错误码的说明可进一步参考 通用错误码说明文档。小结ohos.battery_info模块以BatteryInfo类的静态只读属性为核心提供了从精确数值batterySoc、batteryTemperature、voltage、nowCurrent到语义状态batteryCapacityLevel、chargingStatus、healthStatus、pluggedType、technology的完整电量信息视图四个枚举均实现Equatable与ToString天然适配仓颉的模式匹配与字符串输出。结合SystemCapability.PowerManager.BatteryManager.Core系统能力声明、API 12起始版本 22的版本前提与4900101错误码排查方法即可在仓颉应用内实现健壮、完整的电量监测能力。相关文档ohos.battery_info电量信息原文档Basic ServicesKit 接口目录索引ohos.device_info设备信息系统电源管理错误码仓颉示例代码说明赞分享文档知识库教程OpenHarmony【免费下载链接】CangjieCorpus本仓库为仓颉编程语言语料库聚焦 仓颉编程语言 核心知识体系整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源经结构化处理与专业标注构建为支持 RAG检索增强生成技术 的高质量知识基座适配智能编码助手、学习辅助工具等应用开发需求。 欢迎开发者基于本语料库构建仓颉语言智能应用推动鸿蒙开发生态智能化升级项目地址https://gitcode.com/Cangjie/CangjieCorpus点击查看免费下载相关推荐仓颉语言 BasicServicesKit 基础服务 API 详解设备信息、电量、设置项、公共事件与后台上传下载仓颉语言 BasicServicesKit 基础服务 API 详解设备信息、电量、设置项、公共事件与后台上传下载 本文以 CangjieCorpus 语料库中文档知识库教程OpenHarmonyRGF 仓颉版 Windows API 常量全景rgf.win_def 变量与常量模块详解RGF 仓颉版 Windows API 常量全景 rgf.win_def 变量与常量模块详解 RGF仓颉 Windows 通用渲染框架在 src/win_图形学桌面应用Next.js 接入 PlanetScale MySQLPrisma 驱动适配器实战拆解附避坑清单Next.js 接入 PlanetScale MySQLPrisma 驱动适配器实战拆解附避坑清单 想在 App Router 里接一个 MySQL 兼容上一篇RuoYi-Vue-Plus 5.3.1版本深度解析企业级开发框架的全面升级下一篇OfficeCLI重新定义AI办公自动化的下一代工具链创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

利用Capture CIS 17.4 ORCAD Capture CIS 进行RC低通滤波仿真

利用Capture CIS 17.4 ORCAD Capture CIS 进行RC低通滤波仿真

一、时域仿真1、打开ORCAD软件,进入新建工程,填写工程文件名称,添加工程地址,同时勾选 Enable PSpice Simu..2、弹出的框里,选择最简单的一个模板simple.opj,然后点击OK。3、弹出的框选择PSpice A/D5、界面如下就建立…

2026/10/17 20:29:29 阅读更多 →
分布式定时任务系列12:XXL-job的任务触发为什么是死循环?

分布式定时任务系列12:XXL-job的任务触发为什么是死循环?

传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …

2026/10/17 17:34:57 阅读更多 →
Leetcode排序算法面试核心:快排/归并/堆排实战变形与工程落地

Leetcode排序算法面试核心:快排/归并/堆排实战变形与工程落地

1. 为什么刷排序算法是Leetcode和面试绕不开的“硬门槛”你打开Leetcode,点开“Top Interview Questions”列表,前20题里至少有3道直接考排序变体;你参加某大厂后端岗初面,面试官没问你八股文,第一句就是:“…

2026/10/17 14:18:39 阅读更多 →

最新新闻

Git多人项目开发流程实战:分支模型、代码评审与冲突处理

Git多人项目开发流程实战:分支模型、代码评审与冲突处理

很多同学学会 Git 的第一天,基本都是从git commit和git push开始。一个人写仓库怎样都好说,今天merge明天rebase,大不了reset回滚,反正卷宗里只有自己一个人,怎么折腾都有救。可一旦进入“Git 多人项目开发流程演练”的…

2026/10/18 18:00:49 阅读更多 →
2026马德里AIW 2026:人工智能与机器人展观展要点

2026马德里AIW 2026:人工智能与机器人展观展要点

每年年初我都会习惯性打开欧洲几个主要展会的官网,把一年的行业安排提前圈出来。2026年这一轮,最让我留意的不是巴塞罗那的通信展,也不是汉诺威的工博会,而是马德里这场名字听起来还不算太响的专业展会:2026年西班牙马…

2026/10/18 18:00:49 阅读更多 →
HTML+JS+CSS+jQuery实现高兼容性音乐播放器

HTML+JS+CSS+jQuery实现高兼容性音乐播放器

1. 这不是炫技Demo,而是一个能真正在浏览器里跑起来的音乐播放器“HTMLJavaScriptCSSJQuery实现音乐播放器”——看到这个标题,很多人第一反应是:又一个课堂作业?或者某次前端入门练习?但如果你真把它当成练手小项目随…

2026/10/18 18:00:49 阅读更多 →
IconFont图标库实战:从选型到性能优化的完整指南

IconFont图标库实战:从选型到性能优化的完整指南

1. 从一堆散落图标说起:为什么我最终选了IconFont图标库做前端或者客户端开发的人,几乎都绕不开图标这件事。一个页面里,返回箭头、搜索放大镜、购物车、用户头像、设置齿轮,这些视觉元素看着不起眼,但真到落地的时候&…

2026/10/18 18:00:49 阅读更多 →
只靠检测保食安,是个伪命题

只靠检测保食安,是个伪命题

《只靠检测保食安,是个伪命题》 ——安全不是查出来的,是接出来的过去十年,食品安全靠的是罚单;未来十年,靠的是数据。先看一个反差。全国食品抽检合格率,多年稳定在百分之九十七以上,连年向好。…

2026/10/18 18:00:49 阅读更多 →
UE5 C++字符串与容器全解析:FString、FName、FText与TArray、TMap底层原理

UE5 C++字符串与容器全解析:FString、FName、FText与TArray、TMap底层原理

做 UE5 C 开发,容器和字符串这两块绕不过去。项目做大了,每次新建一个类、存一份配置、调一次接口,都要跟它们打交道。我最早是从 std 那套东西切过来的,一开始真被 UE 的命名搞晕过——明明都是字符串,为什么有 FStri…

2026/10/18 17:59:49 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →