accessibillity service

w343fnnaqv · 2 小时前
第 1 条补充
·
2 小时前

accessibillity service

的设置

回答

Hamibot AI
1
· 2 小时前

你提到的 "accessibility service" 是 Hamibot 实现自动化操作的核心技术基础。Hamibot 通过 Android 的无障碍服务(Accessibility Service)来获取屏幕上的控件信息、监听页面变化,并执行点击、滑动、输入等自动化操作。

以下是与该服务相关的关键 API 和用法说明:


auto.service

获取当前无障碍服务实例。如果无障碍服务未启动,返回 null

// 文档地址 https://docs.hamibot.com/
if (auto.service) {
    console.log("无障碍服务已启用");
} else {
    console.log("无障碍服务未启用,请在设置中开启");
}

auto.waitFor()

等待无障碍服务启动,最多等待 10 秒。如果服务在超时前启动成功,则继续执行后续脚本;否则抛出异常。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
console.log("无障碍服务已就绪,开始执行自动化任务");

通常放在脚本开头,确保无障碍服务可用后再进行 UI 操作。


auto.root

获取当前窗口的布局根节点(UiObject),可用于遍历整个页面的控件树。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
var root = auto.root;
if (root) {
    console.log("当前窗口根布局:", root);
} else {
    console.log("无法获取根布局,请检查窗口过滤器或权限");
}

auto.windows

返回当前所有窗口的信息数组(AccessibilityWindowInfo),包括应用主窗口、输入法、悬浮窗、分屏窗口等。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
console.log("当前窗口数量: " + auto.windows.length);
for (var i = 0; i < auto.windows.length; i++) {
    var win = auto.windows[i];
    console.log("窗口 ID: " + win.id + ", 类型: " + win.type + ", 包名: " + win.packageName);
}

适用于多窗口场景下的精确控制。


auto.setWindowFilter(filter)

设置窗口过滤器,用于指定哪些窗口可以被 auto.root 获取。

// 文档地址 https://docs.hamibot.com/
// 只允许包名为 com.example.app 的窗口作为根窗口
auto.setWindowFilter(function(window) {
    return window.packageName === "com.example.app";
});

这在处理悬浮窗干扰时非常有用。


注意事项

  • 使用基于控件的自动化功能前必须调用 auto.waitFor() 或确保 auto.service 不为 null。
  • 需要在系统设置中手动授予 Hamibot “无障碍权限”。
  • 在 Android 5.0 以上才能使用 auto.windows 和更完整的窗口管理功能。

如需进一步了解如何结合选择器进行控件查找和操作,请参考 基于控件的自动化文档


补充回答 1

要让 Hamibot 正常运行脚本,你必须先开启无障碍服务权限。以下是设置方法:

  1. 打开 Hamibot App。
  2. 点击右上角的“开启”按钮,会跳转到系统设置页面。
  3. 找到“Hamibot 无障碍服务”选项并启用它。

如果你已经开启了但仍然无法运行脚本,可能是因为系统自动停止了服务。建议重启设备以恢复服务。

某些手机系统(如 MIUI、EMUI、ColorOS 等)会对后台服务进行严格限制,导致无障碍服务被关闭。为了避免这种情况,请参考以下优化设置:

  • 锁定 Hamibot 在最近任务列表中(不要从后台清理掉)。
  • 关闭电池优化或省电模式对 Hamibot 的限制。
  • 在系统安全设置中允许 Hamibot 自启动和后台运行。

具体操作因手机品牌而异,可参考手机说明书或官方帮助文档。

如果无障碍服务频繁中断,建议查看 保持在线 的详细配置指南,确保脚本长时间稳定运行。

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