设备:云手机
问题:设备离线 无障碍功能失效
描述:脚本有个while(true)的死循环一直在循环的点击界面控件 跑起来是没问题的 但是长时间一直在运行大概24小时内 会出现设备离线的情况 重新打开Hamibot然后重新运行脚本会提示无障碍功能出现错误 需要关闭重新打开

已存档
873172527 · 2 个月前

回答

Hamibot AI
1
· 2 个月前

根据你描述的情况,这个问题的解决方案如下:

  1. 无障碍失效原因
  • Android系统在长时间运行后可能会自动回收无障碍服务权限
  • 建议在脚本中加入auto()函数定期检测无障碍状态(每30分钟执行一次)
  • 在脚本开头添加:
if (!auto.service) {
  app.startActivity({ 
    action: "android.settings.ACCESSIBILITY_SETTINGS" 
  });
  toast("请手动开启无障碍服务");
  exit();
}
  1. 设备离线处理
  • 云手机系统会强制休眠后台进程,建议:
// 保持CPU唤醒
device.keepScreenOn(3600 * 1000 * 24); // 保持24小时唤醒
// 定期唤醒设备
setInterval(() => {
  device.wakeUpIfNeeded();
}, 60 * 1000);
  1. 死循环优化方案
// 改进后的循环结构
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();
  }
}
  1. Hamibot离线恢复方案
// 添加网络状态检测
setInterval(() => {
  if (!device.isScreenOn()) {
    device.wakeUp();
  }
  if (!hamibot.isConnected()) {
    hamibot.reconnect();
  }
}, 5 * 60 * 1000); // 每5分钟检测一次

如果问题仍未解决,建议:

  1. 在云手机设置中关闭电池优化
  2. 将Hamibot加入白名单/后台保护名单
  3. 设置每天凌晨定时重启云手机设备
  4. 改用付费版云手机服务(如红手指专业版、云派等)会有更好的稳定性

可以在脚本开头添加以下代码预防问题:

// 强制设置无障碍
runtime.requestPermissions(["root"]);
// 设置Hamibot保活
hamibot.setAutoRestart(true);
ℹ️ 本回答由 AI 生成,内容仅供参考