在鸿蒙实际开发的时候,想请教一下怎么禁止系统自动息屏啊?有什么好的方法么?

在鸿蒙实际开发的时候,想请教一下怎么禁止系统自动息屏啊?有什么好的方法么?

阅读 541
2 个回答
  1. 使用电源管理器:引入 @ohos.powerManager 模块,通过 powerManager = powerManager.getInstance(); 获取电源管理器实例。调用 powerManager.acquireWakeLock 方法获取唤醒锁,阻止设备进入睡眠状态,实现禁止自动息屏。
  2. 设置唤醒锁类型:在获取唤醒锁时,指定合适的唤醒锁类型。例如使用 powerManager.WakeLockType.SCREEN_DIM_WAKE_LOCK 类型,此类型允许屏幕调暗但不会自动熄灭,可满足既保持屏幕开启又相对节能的需求。
  3. 释放唤醒锁:在不需要禁止自动息屏时,要及时释放唤醒锁。通过调用 powerManager.releaseWakeLock 方法,避免过度消耗电量。例如在页面关闭或特定操作完成后释放唤醒锁。
  4. 示例代码

    import powerManager from '@ohos.powerManager';
    let powerManagerInstance: powerManager.PowerManager | null = null;
    async function preventScreenOff() {
     if (!powerManagerInstance) {
         powerManagerInstance = powerManager.getInstance();
     }
     await powerManagerInstance.acquireWakeLock(powerManager.WakeLockType.SCREEN_DIM_WAKE_LOCK);
    }
    function allowScreenOff() {
     powerManagerInstance?.releaseWakeLock();
    }

调用setWindowKeepScreenOn接口,设置isKeepScreenOn为true即可, 代码示例如下:

windowStage.loadContent('pages/LauncherPage', (err) => {
  if (err.code) {
    hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
    return;
  }
  // ...
  // 获取应用主窗口
  let windowClass: window.Window = windowStage.getMainWindowSync(); 
  // 设置屏幕常亮(不熄屏)
  let isKeepScreenOn: boolean = true;
  try {
    windowClass.setWindowKeepScreenOn(isKeepScreenOn, (err: BusinessError) => {
      const errCode: number = err.code;
      if (errCode) {
        console.error('Failed to set the screen to be always on. Cause: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in setting the screen to be always on.');
    });
  } catch (exception) {
    console.error('Failed to set the screen to be always on. Cause: ' + JSON.stringify(exception));
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进