小米14使用device.keepScreenOn([timeout])、device.keepScreenDim([timeout])无法保持屏幕常亮,会自动锁屏
没有帮助
回答
在小米14设备上,如果使用 device.keepScreenOn([timeout])
或 device.keepScreenDim([timeout])
无法保持屏幕常亮,并且设备仍然自动锁屏,可能是由于以下原因导致的:
1. 省电策略限制
小米设备(尤其是搭载 MIUI 系统的设备)通常具有非常严格的省电策略。即使调用了 device.keepScreenOn()
或 device.keepScreenDim()
,系统可能会强制关闭屏幕以节省电量。
解决方法:
-
关闭省电模式:
- 进入手机设置 > 电池与性能 > 省电策略。
- 找到 Hamibot 应用,选择“无限制”或“允许后台活动”。
-
调整电池优化设置:
- 设置 > 电池与性能 > 应用管理 > 右上角菜单 > 特殊应用权限 > 电池优化。
- 找到 Hamibot,选择“不允许”。
2. 自启动权限未开启
MIUI 系统默认会限制第三方应用的自启动行为。如果没有开启 Hamibot 的自启动权限,脚本可能无法持续运行,导致屏幕无法保持常亮。
解决方法:
- 开启自启动权限:
- 设置 > 应用管理 > 权限管理 > 自启动。
- 找到 Hamibot,打开“允许自启动”。
3. 前台服务未启用
MIUI 对于后台运行的应用有严格限制,即使脚本在运行,也可能被系统强制挂起。
解决方法:
- 启用前台服务:
- 在 Hamibot 的设置中,启用“前台服务”选项。
- 前台服务会在通知栏显示一个常驻通知,防止脚本被系统挂起。
4. Hamibot 的权限不足
某些功能(如保持屏幕常亮)需要“修改系统设置”的权限。如果没有正确授予权限,相关函数可能无法生效。
解决方法:
- 检查权限:
- 确保 Hamibot 已获得“修改系统设置”的权限。
- 如果权限不足,会抛出
SecurityException
并跳转到权限设置界面,请按照提示授予权限。
5. 超时时间设置问题
根据文档说明,如果不传递 timeout
参数,部分设备可能无法一直保持屏幕常亮。建议明确指定一个较长的超时时间,例如 1 小时(3600 秒)。
修改代码示例:
// 保持屏幕常亮 1 小时
device.keepScreenOn(3600 * 1000);
// 或者保持屏幕变暗但常亮 1 小时
device.keepScreenDim(3600 * 1000);
6. 系统版本兼容性问题
不同 Android 版本对屏幕常亮的支持可能存在差异。如果你的小米 14 使用的是较新的 MIUI 版本(基于 Android 13 或更高版本),可能需要额外适配。
解决方法:
-
尝试使用 Root 权限:
如果设备已 Root,可以尝试通过更高权限调用屏幕常亮功能。 -
更新 Hamibot:
确保你使用的 Hamibot 版本是最新的,因为开发者可能已经修复了相关的兼容性问题。
7. 其他注意事项
- 确保脚本正常运行:如果脚本中途停止运行,屏幕常亮的状态也会被取消。可以使用
device.cancelKeepingAwake()
手动取消屏幕常亮状态。 - 避免用户手动干预:虽然这些函数无法阻止用户主动按电源键锁屏,但如果用户手动锁屏,屏幕常亮的状态也会被中断。
综合解决方案
以下是一个综合解决方法的示例代码,结合了上述建议:
// 请求必要权限
if (!device.isScreenOn()) {
device.wakeUpIfNeeded(); // 如果屏幕未点亮,则唤醒设备
}
// 设置屏幕常亮 1 小时
device.keepScreenOn(3600 * 1000);
// 监听脚本退出事件,取消屏幕常亮
events.on("exit", () => {
device.cancelKeepingAwake();
});
同时,按照上述步骤调整 MIUI 系统的设置,确保 Hamibot 能够稳定运行。
如果尝试以上方法后问题仍未解决,建议联系 Hamibot 官方支持团队,提供具体的设备型号和系统版本信息,以便进一步排查问题。
本回答由 AI 生成,内容仅供参考