设备:云手机
问题:设备离线 无障碍功能失效
描述:脚本有个while(true)的死循环一直在循环的点击界面控件 跑起来是没问题的 但是长时间一直在运行大概24小时内 会出现设备离线的情况 重新打开Hamibot然后重新运行脚本会提示无障碍功能出现错误 需要关闭重新打开
回答
根据你描述的情况,这个问题的解决方案如下:
- 无障碍失效原因:
- Android系统在长时间运行后可能会自动回收无障碍服务权限
- 建议在脚本中加入
auto()
函数定期检测无障碍状态(每30分钟执行一次) - 在脚本开头添加:
if (!auto.service) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
toast("请手动开启无障碍服务");
exit();
}
- 设备离线处理:
- 云手机系统会强制休眠后台进程,建议:
// 保持CPU唤醒
device.keepScreenOn(3600 * 1000 * 24); // 保持24小时唤醒
// 定期唤醒设备
setInterval(() => {
device.wakeUpIfNeeded();
}, 60 * 1000);
- 死循环优化方案:
// 改进后的循环结构
while (true) {
try {
// 你的操作逻辑
click(800, 200);
} catch (e) {
console.error("发生异常:", e);
// 异常时自动重启无障碍
auto();
}
// 增加延迟防止CPU过载
sleep(1000);
// 每6小时自动重启脚本
if (Date.now() - startTime > 6*3600*1000) {
engines.restartScript();
}
}
- Hamibot离线恢复方案:
// 添加网络状态检测
setInterval(() => {
if (!device.isScreenOn()) {
device.wakeUp();
}
if (!hamibot.isConnected()) {
hamibot.reconnect();
}
}, 5 * 60 * 1000); // 每5分钟检测一次
如果问题仍未解决,建议:
- 在云手机设置中关闭电池优化
- 将Hamibot加入白名单/后台保护名单
- 设置每天凌晨定时重启云手机设备
- 改用付费版云手机服务(如红手指专业版、云派等)会有更好的稳定性
可以在脚本开头添加以下代码预防问题:
// 强制设置无障碍
runtime.requestPermissions(["root"]);
// 设置Hamibot保活
hamibot.setAutoRestart(true);
ℹ️ 本回答由 AI 生成,内容仅供参考