acc--›Android无障碍开发框架

2023-05-16

文章目录

  • 前言
  • 框架介绍
    • 目标界面
    • 找到元素
    • 进行操作
  • 系列文章
  • 联系作者

前言

针对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(使用前将#替换为@)

acc--›Android无障碍开发框架 的相关文章

随机推荐

  • docker安装ES及kibana

    docker安装elasticsearch xff1a docker pull elasticsearch 7 4 2 docker pull kibana 7 4 2 xff08 可视化界面 xff0c 要与es版本保持一致 xff09
  • redis分布式锁到redisson的转变

    首先导入redis依赖 xff1a lt dependency gt lt groupId gt org springframework boot lt groupId gt lt artifactId gt spring boot sta
  • 实现Mysql事务嵌套(部分回滚)

    测试数据库表结构 xff1a CREATE TABLE 96 my user 96 96 id 96 int 11 NOT NULL AUTO INCREMENT 96 name 96 varchar 50 DEFAULT NULL 96
  • iframe框架中a标签的target失效问题,导致链接跳转到新窗口

    最近遇到一个问题很奇怪 xff0c 我用iframe搭建的页面 xff0c 页面左侧设置了菜单栏 xff0c 右侧是菜单对应的链 接内容 a标签加target实现 xff0c 但是最近发现有一个菜单链接一访问会导致所有的菜单target失效
  • http和https网页切换导致cookie失效问题

    网站先后从https和http方式登陆网站 xff0c 会导致http中cookie无法生效 xff0c 即https覆盖和http但作用域只在https中 xff0c 在http中浏览器debug中查看不到相关cookie 之前遇到这个问
  • 程序员要多跳巢才能涨工资

    不要一辈子呆死在一家公司 都是打工高薪才是王道 fs xff1a 这 篇文章的本意 xff0c 是告诉大家如何识别公司 而不是鼓励大家无脑跳槽 只有当你在一个公司略有所成的时候 xff0c 你才能有所积累 跳槽更多时候 xff0c 应该看到
  • Ajax反正现在我没怎么看懂

    AJAX即 A synchronous J avascript A nd X ML xff08 异步JavaScript和XML xff09 xff0c 是指一种创建交互式 网页应用的网页开发技术 AJAX 61 异步 JavaScript
  • ViewBinding封装基类(BaseActivity,BaseFragment)

    混淆规则 keep class 包名 databinding 使用反射 BaseActivity public class BaseActivity lt T extends ViewBinding gt extends AppCompat
  • acc--›Android无障碍开发手势操作

    文章目录 前言dispatchGesture 96 api gt 61 24 96 GestureDescriptionGestureResultCallback执行手势 DslAccessibilityGestureclick 点击dou
  • C语言基础学习——基本数据类型(float型)

    1 float型 xff08 浮点型 xff09 浮点型是用来表示小数的 xff0c 默认至少有6位有效小数 xff1b 有float xff08 单精度 xff09 xff0c double xff08 双精度 xff09 xff0c l
  • Mybatis整合Spring和SpringMVC配置文件详解

    配置文件 pom xml xff08 配置我们需要的jar包 xff09 web xml xff08 启动spring容器监听器并加载spring的xml文件 xff0c 加载springmvc前端控制器 xff09 springmvc的配
  • 高并发场景下如何保证数据库和缓存的数据一致性

    高并发场景下如何保证数据库和缓存的数据一致性 分析经典做法 分析 只要用缓存 xff0c 就可能会涉及到缓存与数据库双存储双写 xff0c 你只要是双写 xff0c 就一定会有数据一致性的问题 xff0c 那么你如何解决一致性问题 xff1
  • XmlDocument类详解

    xfeff xfeff XmlDocument类 FreeEIM XmlDocument类是 NET框架的DOC解析器 XmlDocument将XML视为树状结构 xff0c 它装载XML文档 xff0c 并在内存中构建该文档的树状结构 下
  • 1024,如果全世界程序员都消失了,会怎样?

    这两天 xff0c 有一个话题引起了程序员的广泛讨论 xff1a 年薪80W程序员相亲被鄙视 某知名互联网社区 xff0c 一网友发帖 xff0c 自己年薪80W去相亲 xff0c 竟然被鄙视不如在二本学校教书的大学老师 估计令他没想到的是
  • AI---是什么?可以做什么?

    1 AI的项目简单介绍 图像识别 描述 xff1a 给定图片 xff0c 识别图片中有什么 xff1f 算法 xff1a KNN CNN 情感分析 描述 xff1a 判断文本包含的情感是正面 负面还是中性 关键 xff1a 文本如何表示成向
  • linux 下 gb18030 转码成 utf8

    iconv f gb18030 t utf8 1 txt o 2 txt
  • ocelot+IdentityServer认证

    IdentityServer4 IdentityServer4是用于ASP NET Core的OpenID Connect和OAuth 2 0框架 具体大家可以自己搜索 xff0c 网上很多 我不想写的就推荐别人的 IdentityServ
  • 图中连通块的个数:并查集

    图的连通性问题 在地图上有若干城镇 xff08 点 xff09 xff0c 已知所有有道路直接相连的城镇对 要解决整幅图的连通性问题 比如 xff0c 随意给你两个点 xff0c 让你判断它们是否连通 xff1b 或者问你整幅图一共有几个连
  • 依赖注入

    举个例子 xff0c 组件A中有类ClassA xff0c 组件B中有接口IB和其对应的实现类B1和B2 那么 xff0c 现在ClassA需要利用IB接口来做一些事情 xff0c 例如 xff1a public class ClassA
  • acc--›Android无障碍开发框架

    文章目录 前言框架介绍目标界面找到元素进行操作 系列文章联系作者 前言 针对Android无障碍开发 和使用场景 封装出来一个可以适用于各种场景的快速开发框架 框架介绍 无障碍的本质就是通过代码模拟人工操作 所以流程很明确 可以归纳为 目标