鸿蒙Next环境设备查询Environment用法总结

news/2024/12/17 22:40:41/

一、概述

Environment是ArkUI框架在应用程序启动时创建的单例对象,用于提供一系列描述应用程序运行状态的属性,其所有属性不可变(应用不可写入)且为简单类型,主要为AppStorage提供设备环境相关信息,以辅助应用根据设备环境做出不同的处理逻辑。

二、Environment内置参数

  1. accessibilityEnabled:数据类型为boolean,用于获取无障碍屏幕读取是否启用。
  2. colorMode:类型为ColorMode,其取值包括ColorMode.LIGHT(浅色)和ColorMode.DARK(深色),用于表示色彩模型类型。
  3. fontScale:数据类型为number,表示字体大小比例,范围在[0.85, 1.45]之间。
  4. fontWeightScale:也是number类型,用于表示字体粗细程度,范围是[0.6, 1.6]
  5. layoutDirection:类型为LayoutDirection,包含LayoutDirection.LTR(从左到右)和LayoutDirection.RTL(从右到左),用于确定布局方向类型。
  6. languageCodestring类型,存储当前系统语言值,且取值必须为小写字母,例如zh

三、使用场景

(一)从UI中访问Environment参数

  1. 存入AppStorage并链接到Component
    • 使用Environment.envProp('languageCode', 'en');将设备运行的环境变量(如语言code)存入AppStorage,其中'en'为默认值。
    • 然后可以在组件中使用@StorageProp('languageCode') lang : string = 'en';将其链接到Component中,实现设备环境到Component的更新链:Environment --> AppStorage --> Component
    • 注意,@StorageProp关联的环境参数可以在本地更改,但不能同步回AppStorage中,因为应用对环境变量参数不可写,只能查询。例如:
// 将设备languageCode存入AppStorage中
Environment.envProp('languageCode', 'en');
@Entry
@Component
struct Index {@StorageProp('languageCode') languageCode: string = 'en';build() {Row() {Column() {// 输出当前设备的languageCodeText(this.languageCode)}}}
}

(二)应用逻辑使用Environment

  1. 获取并使用环境变量
    • 首先使用Environment.envProp('languageCode', 'en');将设备运行的languageCode存入AppStorage。
    • 接着从AppStorage获取单向绑定的languageCode变量,如const lang: SubscribedAbstractProperty<string> = AppStorage.prop('languageCode');,然后根据该变量的值进行逻辑判断,例如:
// 使用Environment.EnvProp将设备运行languageCode存入AppStorage中;
Environment.envProp('languageCode', 'en');
// 从AppStorage获取单向绑定的languageCode的变量
const lang: SubscribedAbstractProperty<string> = AppStorage.prop('languageCode');
if (lang.get() === 'zh') {console.info('你好');
} else {console.info('Hello!');
}

四、限制条件

Environment和UIContext相关联,需要在UIContext明确的时候才可以调用。通常可以通过在runScopedTask里明确上下文,否则将导致无法查询到设备环境数据。例如在EntryAbility.ets中:

import { UIAbility } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
export default class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: window.WindowStage) {windowStage.loadContent('pages/Index');let window = windowStage.getMainWindow()window.then(window => {let uicontext = window.getUIContext()uicontext.runScopedTask(() => {Environment.envProp('languageCode', 'en');})})}
}

http://www.ppmy.cn/news/1555975.html

相关文章

APP、小程序对接聚合广告平台,有哪些广告变现策略?

开发者对接聚合广告平台&#xff0c;可以让自身流量价值最大化&#xff0c;获得更多的广告曝光机会&#xff0c;对接单一的广告联盟容易造成广告填充不足&#xff0c;收益不稳定的问题。#APP广告变现# APP开发者根据应用的生命周期、用户特征和产品定位&#xff0c;选择最适合…

《Time Ghost》的制作:利用AI模型,实现更具真实感的布料变形

在 2024 年 9 月&#xff0c;Unity 的 Demo 团队展示了一个全新的实时电影级 demo 《Time Ghost》。这个 demo 是基于 Unity 6 引擎制作的&#xff0c;采用了 Unity 6 中的一些新功能和技术能力&#xff0c;让我们能够实现前所未有的视觉品质和复杂程度。 在制作《Time Ghost》…

mac 安装CosyVoice (cpu版本)

CosyVoice 介绍 CosyVoice 是阿里研发的一个tts大模型 官方项目地址&#xff1a;https://github.com/FunAudioLLM/CosyVoice.git 下载项目&#xff08;非官方&#xff09; git clone --recursive https://github.com/v3ucn/CosyVoice_for_MacOs.git 进入项目 cd CosyVoic…

【人工智能】100+目标检测数据集模型算法源码(持续更新中建议收藏)

前言      目标检测在计算机视觉领域扮演着至关重要的角色&#xff0c;其核心任务是在图像或视频中识别并定位特定物体的位置。为了训练和评估这些算法的性能&#xff0c;研究人员和开发者常常依赖于一系列广泛应用的数据集。以下是一些非常有用的目标检测数据集、模型和算…

NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别

随着科技的飞速发展和社会的不断进步&#xff0c;视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中&#xff0c;H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…

springboot集成h2数据库并使用多数据源

前言 为了满足客户的需求&#xff0c;我们计划将项目中使用的MySQL数据库迁移至H2数据库。虽然项目已经集成了多数据源&#xff0c;理论上可以正常运作&#xff0c;但在实际操作过程中&#xff0c;我们发现项目启动时无法自动创建表。我们将对此问题进行深入分析&#xff0c;并…

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构&#xff0c;可方便地与其他FMC板卡实现高速互联&#xff0c;可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…

Java全栈项目 - 校园智慧节能管理平台

项目简介 校园智慧节能管理平台是一个基于Java全栈技术开发的现代化校园能源管理系统。该平台旨在通过智能化手段实现校园能源的精细化管理,提高能源使用效率,降低能源浪费,助力校园绿色可持续发展。 技术架构 后端技术栈 Spring Boot 2.xSpring SecurityMyBatis PlusMySQL…