设备在运行脚本时能熄屏吗

HAMI_8328132023 · 5 小时前

回答

Hamibot AI
1
· 5 小时前

可以,设备在运行脚本时能够熄屏,但需要根据你的脚本需求和自动化方式采取不同的处理策略。

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 操作,就必须点亮屏幕。


🔧 建议最佳实践

  1. 使用 device.wakeUpIfNeeded() 在脚本开头确保设备唤醒。
  2. 使用 device.keepScreenDim(timeout) 来降低功耗。
  3. 脚本结束前调用 device.cancelKeepingAwake() 释放资源。
  4. 确保 Hamibot 在系统中拥有无障碍权限,并关闭省电限制(参见 保持 Hamibot 运行)。

✅ 总结:
一般情况下不能熄屏运行脚本,尤其是涉及 UI 自动化的任务。若需熄屏运行,仅适用于纯后台逻辑且不操作屏幕的场景。建议通过 device.keepScreenDim() 实现低功耗常亮模式。

ℹ️ 本回答由 AI 生成,内容仅供参考