八.Android无障碍服务AccessibilityService详解

前言

Android开发过程中,我们可能会涉及到无障碍的功能。无障碍是由AccessibilityService服务来实现的。今天就让我们来学习下这个特殊的服务。

今天涉及知识有:

  1. 无障碍服务AccessibilityService简介
  2. AccessibilityService实现步骤
    2.1 继承AccessibilityService写一个自定义无障碍服务TestService
    2.2 声明无障碍服务
  3. AccessibilityService的一些方法
  4. 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):

你可能感兴趣的:(八.Android无障碍服务AccessibilityService详解)