前言
针对Android
无障碍开发, 和使用场景, 封装出来一个可以适用于各种场景的快速开发框架
.
框架介绍
无障碍
的本质就是通过代码模拟人工操作, 所以流程很明确, 可以归纳为: 目标界面
->找到操作元素
->进行对应操作
所以将对应流程
, 封装成对应代码
, 一个通用无障碍框架
就成型了.
目标界面
首先, 代码时刻要关注当前是什么界面
, 比如当前是那个应用程序, 应用程序的那个界面, 界面上有哪些元素等信息.
可以通过方法getWindows
获取到所有的AccessibilityWindowInfo
信息, 基本上就是用户能够看到的所有应用程序信息.
android.accessibilityservice.AccessibilityService#getWindows
比如, 可以看到状态栏
导航栏
当前打开的程序
输入法
部分程序的浮窗
等, 这些AccessibilityWindowInfo
信息.
有了AccessibilityWindowInfo
对象, 可以通过getRoot
获取到AccessibilityNodeInfo
对象, 再通过getPackageName
获取到程序的包名, 进而就知道了是什么应用程序
android.view.accessibility.AccessibilityWindowInfo#getRoot
android.view.accessibility.AccessibilityNodeInfo#getPackageName
有了上述方法, 就可以实时获取到打开的应用程序信息
.
找到元素
通过枚举AccessibilityNodeInfo
节点, 可以获取到界面上所有的控件信息,其实也是AccessibilityNodeInfo
信息.
找到元素
就是在这些AccessibilityNodeInfo
中, 判断出目标.
无障碍能够识别到的数据有限, 使用最多的就是AccessibilityNodeInfo
的文本信息
坐标信息
类名
状态
等.
所以可以通过:
- 匹配
文本
获取到对应的元素 - 匹配
坐标
获取到对应的元素 - 匹配
类名
获取到对应的元素, 通常类名匹配能拿到很多个元素 - 匹配
状态
获取到对应的元素, 比如是否可点击
有焦点
被选中
等
高级一点, 还可以通过匹配child node
的分布组合匹配到目标元素等.
进行操作
有了元素, 就等于有了AccessibilityNodeInfo
对象, 之后的操作,请参考本人文章:
acc–›Android无障碍开发常用操作
框架
本人已经实现, 并且历经多年的实践操作, 证明了稳定性和可行性.
框架
是一个解析器, 通过解析json
脚本文件, 进行对应的处理.
所以可以动态下发json
动态更新json
达到远程控制的效果.
如有合作意愿,请于本人联系.
系列文章
- acc–›Android无障碍开发入门
- acc–›Android无障碍开发常用操作
- acc–›Android无障碍开发手势操作
- acc–›Android无障碍开发框架
联系作者
群内有各(pian)种(ni)各(jin)样(qun)
的大佬,等你来撩.
点此QQ对话 该死的空格
点此快速加群
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)