【HarmonyOS NEXT】应用设置屏幕常亮

555 阅读1分钟

【HarmonyOS NEXT】应用设置屏幕常亮

一、问题背景: 金融类或钱包场景的应用APP,对于付款码,扫一扫等场景都会对屏幕设置常亮。防止屏幕长时间不操作,自动息屏。

目前这种场景的需求也是非常有必要的,也是行业内默认的处理方式。

那屏幕常亮在鸿蒙中如何实现呢?

二、解决方案:

1.首先需要获取当前屏幕窗口对象,在鸿蒙中,一般是以窗口为最小操作舞台。类似常亮,隐私窗口(防止录屏截屏),窗口大小等设置都是操作窗口。 2.之后调用setWindowKeepScreenOn设置屏幕是否常亮,默认是不会常亮。

三、DEMO示例:

import { window } from '@kit.ArkUI';

/**
 * 设备管理
 */
export class DeviceMgr {

  private TAG: string = 'DeviceMgr';

  private static mDeviceMgr: DeviceMgr | null = null;

  public static Ins(): DeviceMgr {
    if (!DeviceMgr.mDeviceMgr) {
      DeviceMgr.mDeviceMgr = new DeviceMgr();
    }
    return DeviceMgr.mDeviceMgr;
  }

  /**
   * 设置屏幕是否常亮
   * @param isON true
   */
  public async setKeepScreenState(isON: boolean){
    let win: window.Window = await window.getLastWindow(getContext());
    await win.setWindowKeepScreenOn(isON);
  }

  /**
   * 当前窗口屏幕是否长亮
   * @returns 
   */
  public async isKeepScreenState(): Promise<boolean> {
    let win: window.Window = await window.getLastWindow(getContext());
    return win.getWindowProperties().isKeepScreenOn;
  }
}