今天我们来做一个设备信息查看器。
设备信息查看器 APP 具有多重重要意义。
首先,它为用户提供了对设备硬件和软件配置的清晰了解。用户可以知晓设备的处理器型号、内存容量、存储状况、操作系统版本等关键信息,有助于评估设备的性能和功能,判断是否满足自身需求。
其次,对于技术爱好者和开发者而言,这类 APP 是进行设备调试、优化和开发的有力工具。他们可以依据详细的设备信息,针对性地调整软件设置,开发适配特定硬件的应用程序。
再者,在设备维护和故障排查方面,它能帮助用户迅速定位问题。例如,如果设备运行缓慢,通过查看内存占用、CPU 使用率等信息,可以初步判断是否存在资源过度消耗的情况。
此外,当用户考虑升级设备或更换部件时,设备信息查看器 APP 提供的准确数据能作为决策的重要依据,确保新的组件与现有设备兼容。
总之,设备信息查看器 APP 无论是对普通用户了解自身设备,还是对专业人员进行技术操作,都具有显著的实用价值。
设备信息查看器通常具有以下功能:
这些功能可以帮助用户全面了解设备的状况,为设备的维护、优化和问题排查提供有力支持。
image-20240726090341489
以下各项所需要的权限有所不同,详见下表。
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
deviceType | string | 是 | 否 | 设备类型,只允许查询,结果不能用于业务代码开发。详细请参考deviceTypes 标签[1]。元服务 API:从 API version 11 开始,该接口支持在元服务中使用。 |
manufacture | string | 是 | 否 | 设备厂家名称。 |
brand | string | 是 | 否 | 设备品牌名称。元服务 API:从 API version 11 开始,该接口支持在元服务中使用。 |
marketName | string | 是 | 否 | 外部产品系列。 |
productSeries | string | 是 | 否 | 产品系列。 |
productModel | string | 是 | 否 | 认证型号。元服务 API:从 API version 11 开始,该接口支持在元服务中使用。 |
softwareModel | string | 是 | 否 | 内部软件子型号。 |
hardwareModel | string | 是 | 否 | 硬件版本号。 |
hardwareProfile(deprecated) | string | 是 | 否 | 硬件 Profile。说明:从 API version 6 开始支持,从 API version 9 开始废弃。 |
serial | string | 是 | 否 | 设备序列号,仅限系统应用使用。说明:可作为设备唯一识别码。需要权限:ohos.permission.sec.ACCESS_UDID |
bootloaderVersion | string | 是 | 否 | Bootloader 版本号。 |
abiList | string | 是 | 否 | 应用二进制接口(Abi)。 |
securityPatchTag | string | 是 | 否 | 安全补丁级别。 |
displayVersion | string | 是 | 否 | 产品版本。 |
incrementalVersion | string | 是 | 否 | 差异版本号。 |
osReleaseType | string | 是 | 否 | 系统的发布类型,取值为:- Canary:面向特定开发者发布的早期预览版本,不承诺 API 稳定性。- Beta:面向开发者公开发布的 Beta 版本,不承诺 API 稳定性。- Release:面向开发者公开发布的正式版本,承诺 API 稳定性。 |
osFullName | string | 是 | 否 | 系统版本。元服务 API:从 API version 11 开始,该接口支持在元服务中使用。 |
majorVersion | number | 是 | 否 | Major 版本号,随主版本更新增加。 |
seniorVersion | number | 是 | 否 | Senior 版本号,随局部架构、重大特性增加。 |
featureVersion | number | 是 | 否 | Feature 版本号,标识规划的新特性版本。 |
buildVersion | number | 是 | 否 | Build 版本号,标识编译构建的版本号。 |
sdkApiVersion | number | 是 | 否 | 系统软件 API 版本。 |
firstApiVersion | number | 是 | 否 | 首个版本系统软件 API 版本。 |
versionId | string | 是 | 否 | 版本 ID。 |
buildType | string | 是 | 否 | 构建类型。 |
buildUser | string | 是 | 否 | 构建用户。 |
buildHost | string | 是 | 否 | 构建主机。 |
buildTime | string | 是 | 否 | 构建时间。 |
buildRootHash | string | 是 | 否 | 构建版本 Hash。 |
udid7+ | string | 是 | 否 | 设备 Udid,仅限系统应用使用。说明:数据长度为 65 字节。可作为设备唯一识别码。需要权限:ohos.permission.sec.ACCESS_UDID |
distributionOSName10+ | String | 是 | 否 | 发行版系统名称。 |
distributionOSVersion10+ | String | 是 | 否 | 发行版系统版本号。 |
distributionOSApiVersion10+ | number | 是 | 否 | 发行版系统 api 版本。 |
distributionOSReleaseType10+ | String | 是 | 否 | 发行版系统类型。 |
ODID12+ | String | 是 | 否 | 开发者匿名设备标识符。ODID 值会在以下场景重新生成:手机恢复出厂设置。同一设备上同一个开发者的应用全部卸载后重新安装时。ODID 生成规则:同一设备上运行的同一个开发者的应用,ODID 相同。同一个设备上不同开发者的应用,ODID 不同。不同设备上同一个开发者的应用,ODID 不同。不同设备上不同开发者的应用,ODID 不同。说明:数据长度为 37 字节。 |
本次我们可以使用自定义组件实现。
@ComponentV2
export struct DescInfo {
@Param title: string = '';
@Param desc: string = '';
build() {
Row() {
Text(this.title)
Text(this.desc)
}
}
}
接下来一起看一下参数说明。
和@Component 装饰器[2]一样,@ComponentV2 装饰器用于装饰自定义组件:
@Param 变量装饰器 | 说明 |
---|---|
装饰器参数 | 无。 |
能否本地修改 | 否,修改值需使用@Event 装饰器的能力。 |
同步类型 | 由父到子单向同步。 |
允许装饰的变量类型 | Object、class、string、number、boolean、enum 等基本类型以及 Array、Date、Map、Set 等内嵌类型。支持 null、undefined 以及联合类型。 |
被装饰变量的初始值 | 允许本地初始化,若不在本地初始化,则需要和@Require 装饰器一起使用,要求必须从外部传入初始化。 |
传递规则 | 说明 |
---|---|
从父组件初始化 | @Param 装饰的变量允许本地初始化,若无本地初始化则必须从外部传入初始化。当同时存在本地初始值与外部传入值时,会优先使用外部传入值进行初始化 |
初始化子组件 | @Param 装饰的变量可以初始化子组件中@Param 装饰的变量。 |
同步 | @Param 可以和父组件传入的状态变量数据源(即@Local 或@Param 装饰的变量)进行同步,当数据源发生变化时,会将修改同步给子组件的@Param。 |
当装饰的变量类型是内置类型时,可以观察到变量整体赋值以及通过 API 调用带来的变化。
类型 | 可观测变化的 API |
---|---|
Array | push、pop、shift、unshift、splice、copyWithin、fill、reverse、sort |
Date | setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setUTCHours, setUTCMinutes, setUTCSeconds, setUTCMilliseconds |
Map | set, clear, delete |
Set | add, clear, delete |
import { deviceInfo } from '@kit.BasicServicesKit';
@Entry
@ComponentV2
struct DeviceInfoPage {
build() {
Column() {
DescInfo({
title: "设备类型",
desc: deviceInfo.deviceType
})
DescInfo({
title: "设备厂家名称。",
desc: deviceInfo.manufacture
})
DescInfo({
title: "设备品牌名称",
desc: deviceInfo.brand
})
DescInfo({
title: "外部产品系列",
desc: deviceInfo.marketName
})
DescInfo({
title: "产品系列",
desc: deviceInfo.productSeries
})
DescInfo({
title: "内部软件子型号",
desc: deviceInfo.softwareModel
})
DescInfo({
title: "硬件版本号",
desc: deviceInfo.hardwareModel
})
DescInfo({
title: "系统版本",
desc: deviceInfo.osFullName
})
DescInfo({
title: "系统软件API版本",
desc: deviceInfo.sdkApiVersion.toString()
})
DescInfo({
title: "发行版系统名称",
desc: deviceInfo.distributionOSName
})
DescInfo({
title: "发行版系统版本号",
desc: deviceInfo.distributionOSVersion
})
DescInfo({
title: "发行版系统api版本",
desc: deviceInfo.distributionOSApiVersion.toString()
})
DescInfo({
title: "发行版系统类型",
desc: deviceInfo.distributionOSReleaseType
})
DescInfo({
title: "设备序列号",
desc: deviceInfo.serial
})
DescInfo({
title: "Bootloader版本号",
desc: deviceInfo.bootloaderVersion
})
DescInfo({
title: "安全补丁级别",
desc: deviceInfo.securityPatchTag
})
DescInfo({
title: "产品版本",
desc: deviceInfo.displayVersion
})
DescInfo({
title: "系统的发布类型",
desc: deviceInfo.osReleaseType
})
DescInfo({
title: "Major版本号",
desc: deviceInfo.majorVersion.toString()
})
DescInfo({
title: "Senior版本号",
desc: deviceInfo.seniorVersion.toString()
})
DescInfo({
title: "Feature版本号",
desc: deviceInfo.featureVersion.toString()
})
DescInfo({
title: "firstApiVersion",
desc: deviceInfo.firstApiVersion.toString()
})
DescInfo({
title: "版本ID",
desc: deviceInfo.versionId
})
DescInfo({
title: "构建类型",
desc: deviceInfo.buildType
})
DescInfo({
title: "构建用户",
desc: deviceInfo.buildUser
})
DescInfo({
title: "构建主机",
desc: deviceInfo.buildHost
})
DescInfo({
title: "构建时间",
desc: deviceInfo.buildTime
})
}
.height('100%')
.width('100%')
}
}
@ComponentV2
export struct DescInfo {
@Param title: string = '';
@Param desc: string = '';
build() {
Row() {
Text(this.title)
Text(this.desc)
}
}
}
是不是很简单。
最后总结一下实现步骤
1.导入模块,拿到设备信息
2.自定义组件,组件封装
3.使用状态管理刷新内容。
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-device-info-V5
参考资料
[1]
deviceTypes 标签: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/module-configuration-file-V5#devicetypes标签
[2]
@Component 装饰器: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-create-custom-components-V5
[3]
组件冻结功能: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-custom-components-freezev2-V5