Skip to content

API文档

Ven edited this page Aug 25, 2024 · 6 revisions

Assists

方法 说明
openAccessibilitySetting() 打开无障碍服务设置
isAccessibilityServiceEnabled() 检查无障碍服务是否开启
getPackageName() 获取当前窗口所属包名
findById(id: String) 通过id查找所有符合条件元素
AccessibilityNodeInfo?.findById(id: String) 在当前元素范围下,通过id查找所有符合条件元素
findByText(text: String) 通过文本查找所有符合条件元素
AccessibilityNodeInfo?.findByText(text: String) 在当前元素范围下,通过文本查找所有符合条件元素
findByTags(className: String) 根据元素类型查找元素
AccessibilityNodeInfo.findByTags(className: String) 在当前元素范围下,根据类型查找元素
getAllNodes() 获取所有元素
AccessibilityNodeInfo.getNodes() 获取当前元素下所有子元素
AccessibilityNodeInfo.findFirstParentClickable() 查找第一个可点击的父元素
AccessibilityNodeInfo.getBoundsInScreen() 获取当前元素在屏幕中的范围
AccessibilityNodeInfo.gestureClick() 手势点击当前元素所处的位置
AccessibilityNodeInfo.gestureLongClick() 手势长按元素所处的位置
AccessibilityNodeInfo.click() 点击当前元素
gesture() 手势模拟,点击/路径
gestureClick 点击屏幕指定位置
back() 返回
home() 回到主页
notifications() 显示通知栏
tasks() 查看最近任务
getX(baseWidth: Int, x: Int) 根据基准分辨率宽度获取对应当前设备分辨率的x坐标
getY(baseHeight: Int, y: Int) 根据基准分辨率高度获取对应当前设备分辨率的y坐标
AccessibilityNodeInfo.paste(text: String?) 粘贴文本到当前元素
AccessibilityNodeInfo.log() 控制台输出当前元素信息

StepCollector(步骤收集器)

方法 说明
next(step,next) 单次步骤,step步骤序号,next步骤逻辑
nextLoop(step,loopDuration,loopInterval,next) 循环步骤,step步骤序号,loopDuration循环时长,loopInterval循环间隔,next步骤逻辑

StepManager(步骤管理器)

方法 说明
execute(stepImpl,step) 执行步骤,stepImpl 执行的业务实现类,step 步骤序号

图像识别模块使用

图像识别模块主要是对opencv的模板匹配api和Android的屏幕图像获取进行了一层封装,下面是所封装api的使用说明

检查是否拥有录屏权限

Assists.isEnableScreenCapture()

请求录屏权限

Assists.requestScreenCapture()

获取屏幕图像

OpencvWrapper.getScreen()

通过Assets获取图像

OpencvWrapper.getTemplateFromAssets()

创建掩膜

OpencvWrapper.createMask(
        source: Mat, //原图像
        lowerScalar: Scalar, 可操作区域最低rgb
        upperScalar: Scalar, 可操作区域最高rgb
        requisiteExtraRectList: List<Rect> = arrayListOf(), //不可操作区域
        redundantExtraRectList: List<Rect> = arrayListOf() //可操作区域,即图像匹配有效区域
    )

添加掩膜进行模板匹配可大大提高匹配准确度,掩膜是一个黑白色的图像,白色为匹配的区域,黑色为不匹配区域,通过仅匹配关键区域提高匹配准确度

模板匹配

OpencvWrapper.matchTemplate(image: Mat?, template: Mat?, mask: Mat? = null)

image大图图像
template模板图像,即小图
mask掩膜
返回所有匹配结果,按需求进行筛选

模板匹配获取最佳结果

OpencvWrapper.matchTemplateFromScreenToMinMaxLoc(image: Mat?, template: Mat?, mask: Mat? = null)

image大图图像
template模板图像,即小图
mask掩膜
返回最佳匹配结果

筛选匹配结果获取达到阈值的匹配结果

OpencvWrapper.getResultWithThreshold(
        result: Mat,
        threshold: Double,
        ignoreX: Double = -1.0,
        ignoreY: Double = -1.0,
    )

result匹配结果
threshold匹配值,范围0-1,0最低匹配值,1最高匹配值
ignoreX忽略的x轴范围
ignoreY忽略的y轴范围
返回符合条件的匹配坐标列表

更多待完善...

Clone this wiki locally