在HarmonyOS NEXT开发中如何临时禁止屏幕自动息屏?目前我们在做人脸活体检测过程中,系统设置的30秒自动息屏,所以导致检测中30秒也会自动息屏,请问如果临时禁止掉这个息屏?活检结束后又如何恢复设置?我在API里没找到,只找到了一个@ohos.screenLock (锁屏管理)。 另外如何监听息屏的回调?如果息屏了,会自动回调哪个方法呢?
在HarmonyOS NEXT开发中如何临时禁止屏幕自动息屏?目前我们在做人脸活体检测过程中,系统设置的30秒自动息屏,所以导致检测中30秒也会自动息屏,请问如果临时禁止掉这个息屏?活检结束后又如何恢复设置?我在API里没找到,只找到了一个@ohos.screenLock (锁屏管理)。 另外如何监听息屏的回调?如果息屏了,会自动回调哪个方法呢?
问题解答:
1. 临时禁止自动息屏:
使用 @ohos.power
模块的屏幕常亮能力(非 @ohos.screenLock
),示例代码:
import power from '@ohos.power';
// 活体检测开始时禁止息屏
power.request("hold"); // 保持屏幕常亮
// 检测结束后恢复系统默认设置
power.release("hold");
2. 监听息屏回调:
通过 @ohos.screenLock
监听锁屏状态变化:
import screenLock from '@ohos.screenLock';
// 注册息屏/亮屏监听
screenLock.on('screenLockStateChange', (state) => {
if (state === 0) {
console.log('屏幕解锁/亮屏');
} else if (state === 1) {
console.log('屏幕锁定/息屏'); // 息屏时会触发此回调
}
});
// 活体检测结束后取消监听
screenLock.off('screenLockStateChange');
注意事项:
需要在 module.json5
中添加权限:
"requestPermissions": [
"ohos.permission.KEEP_SCREEN_ON"
]
power.request("hold")
会覆盖系统默认息屏策略,需成对调用 release
避免耗电。
setWindowKeepScreenOn(isKeepScreenOn: boolean, callback: AsyncCallback<void>): void设置屏幕是否为常亮状态,使用callback异步回调。
详细请参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...