纯血鸿蒙设备信息读取实战:9大类硬件参数、屏幕检测与端侧基准测试

0 阅读4分钟

先说为什么做这个东西

最近手头几个鸿蒙原生应用要做机型适配,测试同学反复来问:这台机器 API 版本是多少、屏幕刷新率多少、内存还剩多少、某个传感器到底支不支持。纯血鸿蒙上不能再拿安卓那套 Build 类去读,系统信息接口换了一整轮,于是干脆写了个专门读设备信息的小工具「设备信息鉴」,把适配时最常用的硬件参数、屏幕检测和一个轻量基准测试整合到一起。整个工具不声明网络权限,读取全部在端侧完成,目前免费。本文按功能模块记录实现要点。 设备信息概览页

静态信息:deviceInfo 一字排开

设备型号、系统版本这类出厂就定下来的信息,统一从 @ohos.deviceInfo 取:

import deviceInfo from '@ohos.deviceInfo';

deviceInfo.marketName         // 市场名:华为畅享 90 Plus
deviceInfo.distributionOSName // HarmonyOS
deviceInfo.osFullName         // 6.1.0.125(SP15C00E120R2P4)
deviceInfo.sdkApiVersion      // 24
deviceInfo.securityPatchTag   // 安全补丁级别 2026/05/01
deviceInfo.buildType          // user

概览页顶部两张卡片就是市场名加完整系统版本号。deviceInfo 是纯同步接口,字段非常全(品牌、制造商、硬件版本、ABI 列表、构建时间、首发 API 版本等),做「关于设备」页基本不用再找别的来源。需要注意 udid、serial 这类设备标识字段受系统权限管控,普通应用拿不到,设计页面时要做好字段缺失的降级显示。

动态信息:电池、存储、内存、屏幕

实时变化的数据来自另外几个 kit:

import batteryInfo from '@ohos.batteryInfo';
import statvfs from '@ohos.file.statvfs';
import { hidebug } from '@ohos.hidebug';
import display from '@ohos.display';

batteryInfo.level        // 电量百分比
batteryInfo.temperature  // 电池温度
batteryInfo.voltage      // 电压
batteryInfo.health       // 健康状态
statvfs.getTotalSize(ctx.filesDir) // 数据分区总字节
statvfs.getFreeSize(ctx.filesDir)  // 可用字节
hidebug.getPss()                   // 进程实际占用物理内存(KB)
display.getDefaultDisplaySync()    // 分辨率/密度/刷新率

系统版本与API信息 概览页环形图里 4.74 GB / 7.45 GB、64% 的占用率,分母取系统总内存,分子用 hidebug 的 Pss 折算;存储 51.19 GB / 119.21 GB 来自 statvfs,字节换算成 GB 时要和系统设置的口径保持一致。系统页的 API 版本、安全补丁日期、构建时间则全部来自 deviceInfo 的静态字段。

屏幕检测:灰阶、坏点与触摸

11级灰阶检测 光读参数不够,屏幕素质还得靠肉眼。检测页做了四项:灰阶(11 级 0 到 255 条带,能分辨的级数越多越好)、黑白棋盘格与饱和度渐变、8 种纯色全屏切换查坏点、触摸轨迹测试。实现上是一个全屏窗口承载自绘组件:色块用显式 RGB 值等宽排列;纯色页点击切换红/绿/蓝/白/黑/黄/青/品红;触摸页在 onTouch 回调里按按下点坐标画轨迹,多点触控时遍历事件里的全部 touch 点即可。提示文案会提醒先把亮度拉到最高,暗部相邻色块的分界线才看得清。

传感器枚举与 CPU 基准

传感器列表用 @ohos.sensor:

import sensor from '@ohos.sensor';
const list: Array<sensor.Sensor> = sensor.getSensorList();
// 每项含 sensorName(加速度/陀螺仪/光线/距离…)、vendorName、maxRange

CPU性能参考说明 性能参考页没有做花哨跑分,而是 10 项固定的 CPU 运算任务:数值/字符串排序、位运算、浮点、傅里叶变换、内存赋值、加密、压缩、神经网络算子、矩阵 LU 分解等。每项在固定时间窗内统计迭代次数,归一后取平均得到综合参考分(900+ 较高、800-899 良好,页面上也明确标注仅供参考、不作为评测标准)。计算密集循环全部丢进 TaskPool,传参只带可序列化配置,避免阻塞主线程;测试期间提示不要操作手机、尽量充电跑,因为温度和后台进程都会影响结果。概览页八核实时频率(Kirin8000,小核 811 MHz、大核 2189 MHz)来自系统开放的硬件信息通道,不同 ROM 版本开放程度不同,取不到的格子就显示横杠降级。

信息导出与零网络权限模型

我的页与信息导出 「我的」页提供 8 类信息导出(基本/系统/芯片/网络/存储/电池/屏幕/传感器可选),通过 @ohos.file.picker 的 DocumentSaveOptions 让用户自选保存位置,再用 fileIo 写入文本文件,全程不需要申请存储权限——这也是纯血鸿蒙「用户授权一次、文件归用户管」模型的便利之处。 安全模型上这个工具最彻底的一点是:module.json5 的 requestPermissions 为空,并且不声明 ohos.permission.INTERNET。没有网络权限,系统在网络层就把请求断掉了,不存在偷偷上传的可能;所有信息只停留在应用沙箱里,卸载即清。对设备信息这类天生敏感的数据,零权限比任何隐私政策都直观。

小结

deviceInfo 管静态、batteryInfo/hidebug/statvfs/display 管动态、sensor 管外设、picker 管导出,纯血鸿蒙把设备信息这套体系拆得很清楚,组合起来就是一个完整的本地硬件检测工具。设备信息鉴目前免费,做机型适配或买二手机验机时都用得上。也欢迎评论区交流,你们适配鸿蒙多机型时还读过哪些冷门参数。