回答
无障碍服务(Accessibility Service)是 Hamibot 进行界面自动化操作的核心基础。它允许脚本读取屏幕内容、模拟点击和手势操作。
1. 核心概念
- 作用:提供获取屏幕控件、模拟交互的能力。
- 实例获取:通过
auto.service获取无障碍服务实例。如果无障碍服务没有启动,该属性返回null。 - 依赖关系:
auto.root、auto.windows、events.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.service或auto.root前,建议判断是否为null,避免脚本崩溃。 - 模式选择:对于需要快速响应的脚本,可使用
auto.setMode('fast')提升控件获取速度。 - 事件监听:使用
events.observeToast()监听气泡消息时,必须确保无障碍服务正在运行。
ℹ️ 本回答由 AI 生成,内容仅供参考