#HarmonyOS NEXT体验官#设备信息查看器 原创

早起睡不够
发布于 2024-7-26 12:21
浏览
1收藏

今天我们来做一个设备信息查看器。

设备信息查看器

设备信息查看器 APP 具有多重重要意义。

首先,它为用户提供了对设备硬件和软件配置的清晰了解。用户可以知晓设备的处理器型号、内存容量、存储状况、操作系统版本等关键信息,有助于评估设备的性能和功能,判断是否满足自身需求。

其次,对于技术爱好者和开发者而言,这类 APP 是进行设备调试、优化和开发的有力工具。他们可以依据详细的设备信息,针对性地调整软件设置,开发适配特定硬件的应用程序。

再者,在设备维护和故障排查方面,它能帮助用户迅速定位问题。例如,如果设备运行缓慢,通过查看内存占用、CPU 使用率等信息,可以初步判断是否存在资源过度消耗的情况。

此外,当用户考虑升级设备或更换部件时,设备信息查看器 APP 提供的准确数据能作为决策的重要依据,确保新的组件与现有设备兼容。

总之,设备信息查看器 APP 无论是对普通用户了解自身设备,还是对专业人员进行技术操作,都具有显著的实用价值。

功能

设备信息查看器通常具有以下功能:

  1. 硬件信息展示:包括处理器型号、核心数、主频;显卡型号、显存容量;内存容量、类型和频率;硬盘容量、类型(如机械硬盘或固态硬盘)、转速;主板型号等。

  2. 操作系统信息:如操作系统的版本、安装日期、系统类型(32 位或 64 位)、激活状态等。

  3. 网络相关信息:网络适配器的型号、MAC 地址、IP 地址;已连接的无线网络名称和信号强度等。

  4. 电池信息:如果是移动设备,会显示电池的健康状况、剩余电量百分比、充电状态、循环次数等。

  5. 设备序列号和识别码:方便用户进行设备的注册、保修和售后服务。

  6. 显示设备的传感器信息:例如重力传感器、陀螺仪、光线传感器等是否正常工作。

  7. 安装的软件和驱动程序列表:用户可以了解已安装的应用程序名称、版本以及相关驱动程序的信息。

  8. 端口和接口信息:如 USB 端口数量和类型、音频接口等。

  9. 性能监测:实时监测 CPU 使用率、内存占用率、硬盘读写速度等性能指标。

  10. 设备温度监控:展示设备各部件的温度,以预防过热问题。

这些功能可以帮助用户全面了解设备的状况,为设备的维护、优化和问题排查提供有力支持。

效果

#HarmonyOS NEXT体验官#设备信息查看器-鸿蒙开发者社区

具体使用接口

以下各项所需要的权限有所不同,详见下表。

名称 类型 可读 可写 说明
deviceType string 设备类型,只允许查询,结果不能用于业务代码开发。详细请参考deviceTypes标签元服务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)
    }
  }
}

接下来一起看一下参数说明。

@ComponentV2概述

@Component装饰器一样,@ComponentV2装饰器用于装饰自定义组件:

  • 在@ComponentV2装饰的自定义组件中,开发者仅可以使用全新的状态变量装饰器,包括@Local、@Param、@Once、@Event、@Provider、@Consumer等。
  • @ComponentV2装饰的自定义组件暂不支持组件复用、LocalStorage等现有自定义组件的能力。
  • 无法同时使用@ComponentV2与@Component装饰同一个struct结构。
  • @ComponentV2支持一个可选的boolean类型参数freezeWhenInactive,来实现组件冻结功能
  • 一个简单的@ComponentV2装饰的自定义组件应具有以下部分:

@Param装饰器说明

@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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2024-7-26 14:03:41修改
1
收藏 1
回复
举报
回复
    相关推荐