前言
在Android
开发过程中,我们可能会涉及到无障碍
的功能。无障碍
是由AccessibilityService
服务来实现的。今天就让我们来学习下这个特殊的服务。
今天涉及知识有:
- 无障碍服务AccessibilityService简介
- AccessibilityService实现步骤
2.1 继承AccessibilityService写一个自定义无障碍服务TestService
2.2 声明无障碍服务 - AccessibilityService的一些方法
- AccessibilityService的开启运行
一. 无障碍服务AccessibilityService简介
AccessibilityService
官网的介绍是这样的: 无障碍服务应该只用于帮助残疾用户使用Android设备和应用程序。它们在后台运行,并在AccessibilityEvents被触发时接收系统的回调。这类事件表示用户界面中的某些状态转换,例如焦点发生了变化、按钮被单击等等。这样的服务可以请求查询活动窗口内容的功能。可访问性服务的开发需要扩展这个类并实现它的抽象方法。
描述一大堆,只知道他是一个服务,可以在后台监听手机的各种状态,至于用来干啥的,就一句话用于帮助残疾用户使用Android设备和应用程序
,个人表示无法理解,这是毛的描述啊。至于是怎么帮助的,没有描述。所以啊,很悲催,不知道怎么用。后来研究了下,发现其可以自动控制其他app的各种事件,如:点击,滑动,输入等。哦,原来是这样...
二. AccessibilityService实现步骤
2.1 继承AccessibilityService写一个自定义无障碍服务TestService
AccessibilityService
归根结底还是一个服务,其继承自Service
,当然也就具备的Service
的声明周期和一些特性,但是,其与Service
又又很大的不同。当我们需要写一个无障碍
服务时,需要继承AccessibilityService
,然后重写AccessibilityService
的三个方法:onServiceConnected()
,onAccessibilityEvent(event: AccessibilityEvent?)
和onInterrupt()
。
- onServiceConnected():AccessibilityService 这个服务可以关联很多属性,这些属性 一般可以通过代码在这个方法里进行设置,我这里偷懒 把这些设置属性的流程用xml 写好 放在manifest里,如果你们要使用的时候需要区分版本号做兼容,在老的版本里是无法通过xml进行引用的 只能在这个方法里手写那些属性 一定要注意.同时你的业务如果很复杂比如需要初始化广播啊之类的工作 都可以在这个方法里写。
- onAccessibilityEvent(event: AccessibilityEvent?):一旦无障碍服务开启,此方法会不断的重复执行,我们要做的一些操作及业务逻辑主要在此方法中执行
- onInterrupt():
无障碍
服务退出时会调用此方法,我们可以在此方法中做些销毁和释放资源的操作
下面以继承AccessibilityService
写一个简单的自定义无障碍服务的示例(假设该服务命名为TestService
):