回答
可以,设备在运行脚本时能够熄屏,但需要根据你的脚本需求和自动化方式采取不同的处理策略。
1. 基于坐标的自动化(如 click, swipe 等)
如果你的脚本使用的是基于屏幕坐标的操作(例如 click(500, 800)),屏幕必须保持点亮状态,因为这些操作依赖于可见的屏幕内容进行交互。熄屏后无法执行点击、滑动等模拟触摸行为。
⚠️ 注意:即使使用无障碍服务,在熄屏状态下大多数设备也无法正常模拟触摸事件。
2. 基于控件的自动化(如 text(), id() 等)
这类操作依赖 AccessibilityService 获取界面控件树,而大多数 Android 设备在屏幕关闭后会停止刷新 Accessibility 信息,导致脚本卡住或失败。因此,通常也需要保持屏幕常亮。
✅ 如何控制屏幕状态
你可以使用以下函数灵活管理屏幕状态:
🔆 唤醒并保持屏幕常亮
// 文档地址 https://docs.hamibot.com/
// 唤醒设备(如果屏幕熄灭则点亮)
device.wakeUpIfNeeded();
// 保持屏幕常亮30分钟(推荐设置一个较长时间代替“一直”)
device.keepScreenOn(30 * 60 * 1000);
🌙 允许屏幕变暗以省电(适合后台任务)
// 文档地址 https://docs.hamibot.com/
// 保持屏幕常亮但允许变暗
device.keepScreenDim(30 * 60 * 1000);
🛑 取消屏幕常亮
// 文档地址 https://docs.hamibot.com/
device.cancelKeepingAwake();
✅ 特殊场景:熄屏运行(仅限特定功能)
只有当你的脚本不依赖屏幕交互时,才可安全熄屏运行,例如:
- 定时触发脚本(通过 Hamibot 定时任务)
- 执行网络请求(
http.request) - 处理本地数据、文件操作
- 监听通知栏事件(
events.observeNotification())
在这种情况下,你可以在脚本开始前手动熄屏或调用:
// 文档地址 https://docs.hamibot.com/
// 不唤醒屏幕,直接运行(前提是系统允许后台执行)
但请注意:一旦涉及 UI 操作,就必须点亮屏幕。
🔧 建议最佳实践
- 使用
device.wakeUpIfNeeded()在脚本开头确保设备唤醒。 - 使用
device.keepScreenDim(timeout)来降低功耗。 - 脚本结束前调用
device.cancelKeepingAwake()释放资源。 - 确保 Hamibot 在系统中拥有无障碍权限,并关闭省电限制(参见 保持 Hamibot 运行)。
✅ 总结:
一般情况下不能熄屏运行脚本,尤其是涉及 UI 自动化的任务。若需熄屏运行,仅适用于纯后台逻辑且不操作屏幕的场景。建议通过 device.keepScreenDim() 实现低功耗常亮模式。
ℹ️ 本回答由 AI 生成,内容仅供参考