保持屏幕常亮只在autojs内生效,且无法取消常亮。
device.keepScreenOn(3600*1000)
device.keepScreenDim([timeout])
以上两个命令按照文档添加参数后依然只能在autojs应用内保持常亮,
应用外无法生效,屏幕照常熄灭。
且使用 device.cancelKeepingAwake() 后,autojs内还是会保持常亮。
只能强行停止autojs才能取消常亮。
autojs版本:6.6.2 安卓版本:15 系统版本:HyperOS 2.0.107.0
是否可以在 AutoJs6 失去窗口焦点时保持设备屏幕不会超时关闭, 这个与安卓操作系数有关, 不能保证功能一定生效.
device.cancelKeepingAwake 方法, 必须与 device.keepScreenOn 或 device.keepScreenDim 在同一个脚本 (或同一个 Script Runtime) 中使用才能生效.
修改时长。 我程序大概都是跑1分钟。 偶尔多出10-20秒,偶尔少10-20秒。 所以我都是设置1分钟时长,就是60秒。 device.keepScreenOn(601000) 即便超过了60秒,它依旧会亮一段时间,才自动息屏。 如果你不放心,可以多加一分钟。 或者使用device.keepScreenDim(60 * 1000),就更安全了。 如果你设置36001000,当无法通过程序取消的时候,搞不好就要等1小时。
无法取消常亮,除非强行终止autojs6才行。。。。。有解决办法么
无法取消常亮,除非强行终止autojs6才行。。。。。有解决办法么
把autojs6强行停止后,莫名其妙的device.keepScreenOn();后再用cancelKeepingAwake就有效果了,好奇怪。。。。。我是任何引用页面都生效,6.6.1版本
public class Device {
private PowerManager.WakeLock mWakeLock;
public void cancelKeepingAwake() {
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
}
}
}
可以看到, device.cancelKeepingAwake 方法是脚本级别的, 而非应用级别的, 因为 mWakeLock 不是 static, 而是保存在 Device 实例里.
AutoJs 6 每执行一个新的脚本, 就会为该脚本创建独立的 JS 引擎, 随之也会生成一次新的 Device 对象. keepScreenOn() 获得的 mWakeLock 存放在脚本自己的 Device 实例中, 因此其他脚本是调用 cancelKeepingAwake 是无法作用到此脚本的.
因此, 有:
device.cancelKeepingAwake 方法, 必须与 device.keepScreenOn 或 device.keepScreenDim 在同一个脚本 (或同一个 Script Runtime) 中使用才能生效.
// 无障碍锁屏
function autoLockScreen() {
// 无障碍服务调用系统锁屏
auto.service.performGlobalAction(android.accessibilityservice.AccessibilityService.GLOBAL_ACTION_LOCK_SCREEN);
}
用这个可以锁屏