accessibilityService

824566462 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

无障碍服务(Accessibility Service)是 Hamibot 进行界面自动化操作的核心基础。它允许脚本读取屏幕内容、模拟点击和手势操作。

1. 核心概念

  • 作用:提供获取屏幕控件、模拟交互的能力。
  • 实例获取:通过 auto.service 获取无障碍服务实例。如果无障碍服务没有启动,该属性返回 null
  • 依赖关系auto.rootauto.windowsevents.observeToast() 等功能均依赖无障碍服务正常运行。

2. 权限开启

无障碍服务是 Hamibot 的必要权限。如果权限未开启,脚本无法执行界面自动化操作。

  • 开启方式:在手机设置中找到“无障碍”或“辅助功能”,启用 Hamibot 服务。
  • 常见问题:如果已打开权限但仍无法运行,可能是服务被系统结束,尝试重启设备或重新开关权限。
  • 后台运行:如果 Hamibot 处于后台,可能需要开启“后台弹出界面”权限以确保脚本能唤醒其他应用。

3. 脚本中使用

在脚本开始时,建议检查并确保无障碍服务已启动。

  • auto.waitFor():检查无障碍服务是否启用。如果未启用,跳转到启用界面并等待启动;启动后脚本继续运行。该函数是阻塞的。
  • auto():在 UI 模式下建议使用此函数,非阻塞。
  • auto.setMode(mode):可设置模式为 fast(快速模式,启用控件缓存)或 normal(正常模式)。

4. 代码示例

以下示例展示了如何等待服务启动并获取服务实例:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
var service = auto.service;
if (service != null) {
    log("无障碍服务已启动");
    // 获取当前窗口根元素
    var root = auto.root;
    if (root != null) {
        log("获取到窗口根元素");
    }
} else {
    log("无障碍服务未启动");
}

5. 最佳实践

  • 启动检查:脚本开头务必使用 auto.waitFor() 确保环境就绪。
  • 空值判断:使用 auto.serviceauto.root 前,建议判断是否为 null,避免脚本崩溃。
  • 模式选择:对于需要快速响应的脚本,可使用 auto.setMode('fast') 提升控件获取速度。
  • 事件监听:使用 events.observeToast() 监听气泡消息时,必须确保无障碍服务正在运行。
ℹ️ 本回答由 AI 生成,内容仅供参考