OpenHarmony开发者论坛

标题: 如何获取设备横竖屏的状态变化通知 [打印本页]

作者: 妮巴~😘    时间: 2023-9-11 09:49
标题: 如何获取设备横竖屏的状态变化通知
[md]【问题描述】当设备发生横竖屏变化时,开发者应如何获取到变化的事件通知?

【运行环境】硬件:rk3568;  ROM: 3.2  ;  API 9

[/md]
作者: 马迪    时间: 2023-9-16 21:38
[md]使用UIAbility.onConfigurationUpdate()回调方法订阅系统环境变量的变化(包括语言,颜色模式,屏幕方向等)。

UIAbility组件提供了`UIAbility.onConfigurationUpdate()`回调方法用于订阅系统环境变量的变化。当系统环境变量发生变化时,会调用该回调方法。在该方法中,通过[Configuration](https://gitee.com/openharmony/do ... ty-configuration.md)对象获取最新的系统环境配置信息,而无需重启UIAbility。

例如,在`onConfigurationUpdate()`回调方法中实现监测系统语言的变化。

```
import UIAbility from '@ohos.app.ability.UIAbility';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';
import { Configuration } from '@ohos.app.ability.Configuration';

let systemLanguage: string | undefined; // 系统当前语言

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    systemLanguage = this.context.config.language; // UIAbility实例首次加载时,获取系统当前语言
    console.info(`systemLanguage is ${systemLanguage} `);
  }

  onConfigurationUpdate(newConfig: Configuration) {
    console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`);

    if (systemLanguage !== newConfig.language) {
      console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`);
      systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言
    }
  }

  // ...
}
```

[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5