当前位置: 首页 > news >正文

HarmonyOS 如何获取设备信息(系统、版本、网络连接状态)

在这里插入图片描述

在这里插入图片描述

文章目录

    • 前言
    • 一、引入模块和基本设备信息的获取
    • 二、设备硬件和系统版本信息的获取
    • 三、获取安全相关的设备信息
    • 四、获取网络状态信息
    • 五、完整 Demo 代码
      • 1. 导入所需模块
      • 2. 获取设备基本信息
        • 代码解析
      • 3. 检测网络连接状态
      • 4. 执行函数
    • 总结

前言

HarmonyOS 提供了一个强大的 API 集,方便开发者获取设备的硬件和软件信息。通过 @kit.BasicServicesKit 模块的 deviceInfo 接口,开发者可以访问设备的型号、品牌、系统版本等详细信息。本文将详细介绍如何使用这些接口获取设备信息,并提供一个完整的 Demo 示例代码。

一、引入模块和基本设备信息的获取

首先,引入 @kit.BasicServicesKit 模块,然后通过 deviceInfo 接口获取设备的基本信息。这些信息包括设备类型、制造商、品牌等。以下是获取设备基本信息的代码示例:

import { deviceInfo } from '@kit.BasicServicesKit';// 获取设备类型
let deviceTypeInfo: string = deviceInfo.deviceType;
console.info('Device Type: ' + deviceTypeInfo);// 获取设备制造商信息
let manufactureInfo: string = deviceInfo.manufacture;
console.info('Manufacture: ' + manufactureInfo);// 获取品牌信息
let brandInfo: string = deviceInfo.brand;
console.info('Brand: ' + brandInfo);// 获取市场名称
let marketNameInfo: string = deviceInfo.marketName;
console.info('Market Name: ' + marketNameInfo);

二、设备硬件和系统版本信息的获取

HarmonyOS 提供了详细的硬件和系统版本信息,包括设备系列、硬件型号、软件版本、OS 版本等。这些信息有助于开发者根据设备的特性做出优化适配。以下是获取设备硬件和系统版本信息的代码示例:

// 获取设备系列
let productSeriesInfo: string = deviceInfo.productSeries;
console.info('Product Series: ' + productSeriesInfo);// 获取产品型号
let productModelInfo: string = deviceInfo.productModel;
console.info('Product Model: ' + productModelInfo);// 获取系统显示版本
let displayVersionInfo: string = deviceInfo.displayVersion;
console.info('Display Version: ' + displayVersionInfo);// 获取增量版本
let incrementalVersionInfo: string = deviceInfo.incrementalVersion;
console.info('Incremental Version: ' + incrementalVersionInfo);// 获取 OS 全名
let osFullNameInfo: string = deviceInfo.osFullName;
console.info('OS Full Name: ' + osFullNameInfo);

三、获取安全相关的设备信息

在某些应用场景中,了解设备的安全补丁和系统版本信息是非常重要的。HarmonyOS 提供了安全补丁标签、引导加载程序版本等信息,便于开发者确保应用运行在安全的设备环境上。

// 获取安全补丁标签
let securityPatchTagInfo: string = deviceInfo.securityPatchTag;
console.info('Security Patch Tag: ' + securityPatchTagInfo);// 获取引导加载程序版本
let bootloaderVersionInfo: string = deviceInfo.bootloaderVersion;
console.info('Bootloader Version: ' + bootloaderVersionInfo);

四、获取网络状态信息

设备的网络状态对于某些功能的实现至关重要。HarmonyOS 提供了接口帮助开发者判断设备是否连接到网络。以下是获取当前网络状态的示例代码:

import { network } from '@kit.NetworkKit';function checkNetworkConnection() {let isNetworkConnected: boolean = network.isConnected;console.info('Network Connected: ' + isNetworkConnected);
}
checkNetworkConnection();

五、完整 Demo 代码

我们利用 HarmonyOS 提供的 deviceInfonetwork 两个模块,来获取设备的基础信息、系统版本信息和网络连接状态。以下是 Demo 的详细解释。

1. 导入所需模块

首先,我们需要引入两个模块:

  • @kit.BasicServicesKit 提供了 deviceInfo 对象,用于访问设备的基本信息,如设备类型、制造商、品牌、系统版本等。
  • @kit.NetworkKit 提供了 network 对象,用于检测当前设备的网络连接状态。
import { deviceInfo } from '@kit.BasicServicesKit';
import { network } from '@kit.NetworkKit';

2. 获取设备基本信息

getDeviceInfo 函数用于获取和输出设备的各种信息,包括类型、制造商、品牌、系统版本等。

代码解析
  • deviceInfo.deviceType: 获取设备的类型,如手机、平板等。
  • deviceInfo.manufacture: 获取设备的制造商名称。
  • deviceInfo.brand: 获取设备的品牌,如华为。
  • deviceInfo.marketName: 获取设备在市场上的商品名称。
function getDeviceInfo() {console.info('--- Device Information ---');console.info('Device Type: ' + deviceInfo.deviceType);console.info('Manufacture: ' + deviceInfo.manufacture);console.info('Brand: ' + deviceInfo.brand);console.info('Market Name: ' + deviceInfo.marketName);

示例输出:

Device Type: Phone
Manufacture: Huawei
Brand: HUAWEI
Market Name: P50 Pro
  • deviceInfo.productSeries: 获取设备的系列信息,例如 P 系列、Mate 系列等。
  • deviceInfo.productModel: 获取设备的产品型号。
  • deviceInfo.displayVersion: 获取设备的显示版本,这个信息通常用来表示操作系统的整体版本。
  • deviceInfo.incrementalVersion: 获取增量版本,用于区别小版本更新。
  • deviceInfo.osFullName: 获取操作系统的完整名称。
    console.info('Product Series: ' + deviceInfo.productSeries);console.info('Product Model: ' + deviceInfo.productModel);console.info('Display Version: ' + deviceInfo.displayVersion);console.info('Incremental Version: ' + deviceInfo.incrementalVersion);console.info('OS Full Name: ' + deviceInfo.osFullName);

示例输出:

Product Series: P Series
Product Model: P50
Display Version: HarmonyOS 3.0
Incremental Version: 123456
OS Full Name: HarmonyOS
  • deviceInfo.securityPatchTag: 获取设备的安全补丁标签,用于了解设备的安全更新状态。
  • deviceInfo.bootloaderVersion: 获取引导加载程序版本,用于设备的启动和安全相关的操作。
    console.info('Security Patch Tag: ' + deviceInfo.securityPatchTag);console.info('Bootloader Version: ' + deviceInfo.bootloaderVersion);
}

示例输出:

Security Patch Tag: 2024-09-01
Bootloader Version: V1.0.0

3. 检测网络连接状态

checkNetworkConnection 函数用于检测设备的网络连接状态。通过 network.isConnected 属性,判断设备是否已连接到网络,返回一个布尔值,true 表示连接,false 表示未连接。

function checkNetworkConnection() {console.info('--- Network Connection Status ---');let isNetworkConnected: boolean = network.isConnected;console.info('Network Connected: ' + isNetworkConnected);
}

示例输出:

Network Connected: true

4. 执行函数

最后,调用 getDeviceInfocheckNetworkConnection 函数来输出设备信息和网络状态:

getDeviceInfo();
checkNetworkConnection();

总结

本文展示了如何在 HarmonyOS 中获取设备的详细信息,包括设备类型、品牌、系列、产品型号、系统版本以及网络连接状态。HarmonyOS 提供的 deviceInfonetwork 模块使得设备信息和网络状态的获取变得简便。在实际开发中,这些信息对于设备的适配、功能的优化以及安全检查都至关重要。

通过这些接口,开发者可以动态地了解设备的特性和当前网络状态,从而实现更智能化、个性化的应用体验。

相关文章:

HarmonyOS 如何获取设备信息(系统、版本、网络连接状态)

文章目录 前言一、引入模块和基本设备信息的获取二、设备硬件和系统版本信息的获取三、获取安全相关的设备信息四、获取网络状态信息五、完整 Demo 代码1. 导入所需模块2. 获取设备基本信息代码解析 3. 检测网络连接状态4. 执行函数 总结 前言 HarmonyOS 提供了一个强大的 API…...

2411rust,1.80

1.80.0稳定版 LazyCell和LazyLock 这些"懒"类型会延迟初化其数据,直到第一次访问.它们类似1.70中稳定的OnceCell和OnceLock类型,但单元中包含初化函数. 这稳定化了从流行的lazy_static和once_cell中进入标准库. LazyLock是线安选项,使其适合静态值等位置.如,产生…...

FPGA 第6讲 简单组合逻辑多路选择器

时间:2024.11.11-11.14 一、学习内容 1.组合逻辑 组合逻辑是VerilgHDL设计中一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路,也没…...

Android Studio开发学习(五)———LinearLayout(线性布局)

一、布局 认识了解一下Android中的布局,分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局), FrameLayout(帧布局),AbsoluteLayout(绝对布局),GridLayout(网格布局) 等。 二、…...

大模型(LLMs)RAG 版面分析------文本分块面

一、为什么需要对文本分块? 使用大型语言模型(LLM)时,切勿忽略文本分块的重要性,其对处理结果的好坏有重大影响。 考虑以下场景:你面临一个几百页的文档,其中充满了文字,你希望对其…...

Web3游戏先锋 Big Time Studios 重磅推出 $OL 通证,赋能 Open Loot 游戏平台

作为 Web3 游戏领域的领军者,Big Time Studios 不仅创造了热门游戏《Big Time》,还开发了 Open Loot 平台,至今交易量已超过 5 亿美元。如今,Open Loot 平台的活跃用户可以获得 $OL 代币,这是该平台推出的首个实用型代…...

Linux—ln(link files)命令使用方法(How to create links on Linux)

Linux—ln(link files)命令使用方法 在 Linux 系统中工作时,需要在不同的目录中使用相同的文件时,不必在每个目录下都复制一份文件,这样不仅浪费磁盘空间,还会导致文件管理上的混乱。 ln(link files) 便是…...

学习日记_20241110_聚类方法(K-Means)

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...

解决Oracle DECODE函数字符串截断问题的深度剖析20241113

解决Oracle DECODE函数字符串截断问题的深度剖析 在使用Oracle数据库进行开发时,开发者可能会遇到一些令人困惑的问题。其中,在使用DECODE函数时,返回的字符串被截断就是一个典型的案例。本文将以学生管理系统为背景,深入探讨这个…...

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(二)

一、前言 语音转文本技术具有重要价值。它能提高信息记录和处理的效率,使人们可以快速将语音内容转换为可编辑、可存储的文本形式,方便后续查阅和分析。在教育领域,可帮助学生更好地记录课堂重点;在办公场景中,能简化会议记录工作。同时,该技术也为残障人士提供了便利,让…...

PHP框架 单一入口和多入口以及优缺点

在PHP框架中,单一入口和多入口是两种不同的应用架构设计方式,以下是关于这两者及其优缺点的详细解释: 一、单一入口 定义: 单一入口(Single Entry Point)指的是应用程序通过一个统一的文件(通…...

PhpSpreadsheet导出图片

PhpSpreadsheet导出图片 //导出public function pdf($ids){$jzInfo $this->model->where(id,$ids)->find();try {//巡检人员$staff_ids \app\admin\model\inspection\Plan::where(id,$jzInfo[plan_id])->value(staff_id);$staff_names \app\admin\model\inspect…...

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时,提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文,从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…...

web应用安全和信息泄露预防

文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…...

《人工智能深度学习的基本路线图》

《人工智能深度学习的基本路线图》 基础准备阶段 数学基础: 线性代数:深度学习中大量涉及矩阵运算、向量空间等概念,线性代数是理解和处理这些的基础。例如,神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…...

基于Java Springboot宠物猫售卖管理系统

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:…...

力扣-Hot100-链表其三【算法学习day.36】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...

iOS逆向入门:使用theos注入第三方依赖库

背景 theos是一个跨平台的软件开发框架,常用于管理,开发和部署iOS项目,同时也是开发iOS越狱插件的主要工具。和MonkeyDev不同的是,它不依赖于xcode,可以在多个操作系统上运行。一个完整的iOS越狱开发流程包括&#xf…...

JavaScript 原型

JavaScript 的原型(Prototype)是其面向对象编程模型的核心概念之一,它决定了对象如何继承属性和方法。通过理解 JavaScript 的原型,你可以更好地理解对象之间的关系以及如何扩展对象功能。 核心概念 [[Prototype]](内部…...

力扣 LeetCode 20. 有效的括号(Day5:栈与队列)

解题思路: 使用栈 只有三种情况 1. ( [ { } ] ( ( 左括号多了 -> 最后栈中经过抵消会剩下括号 2. [ { ( ] } ] 括号不匹配 -> return false 3. [ { } ] ( ) ) ) 右括号多了 -> 未遍历完时,栈提前为空,…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

32单片机——基本定时器

STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...

在Spring Boot中集成RabbitMQ的完整指南

前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...

华硕电脑,全新的超频方式,无需进入BIOS

想要追求更佳性能释放 或探索更多可玩性的小伙伴, 可能会需要为你的电脑超频。 但我们常用的不论是BIOS里的超频, 还是Armoury Crate奥创智控中心超频, 每次调节都要重启,有点麻烦。 TurboV Core 全新的超频方案来了 4不规…...

智能问数Text2SQL Vanna windows场景验证

架构 Vanna 是一个开源 Python RAG(检索增强生成)框架,用于 SQL 生成和相关功能。 机制 Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回 SQL 查询,这些查…...