Android Accessibility使用及事件流程简介

本文介绍了Android AccessibilityService的功能,主要用于帮助障碍用户,但也常用于实现特殊功能,如微信抢红包。文章详细讲解了如何实现AccessibilityService,配置声明,以及事件处理流程,包括从View开始、反向递归到ViewRootImpl、 AccessibilityManagerService的角色,最后总结了使用AccessibilityService的步骤和理解事件流程的重要性。
摘要由CSDN通过智能技术生成

Accessibility是Android从API 4开始提供的一个功能,它主要目的是帮助一些因为有视觉,听觉,身体障碍而无法完全使用触摸屏或铃声等的用户来使用Android的。而实际上现在很多开发者都用它来实现一些其他功能了,比如说微信抢红包,自动安装APK,强制停止应用等。下面来简单介绍一下它的相关使用及原理。

AccessibilityService

它最主要的接口是类AccessibilityService。AccessibilityService是Service的子类,我们可以继承这个类并实现它的抽象方法来监视一个应用的界面元素状态的变化,比如focus变化,一个按钮被click等等。当有这些变化的时候,系统会将这些信息封装在AccessibilityEvent里面,回调AccessibilityService的onAccessibilityEvent(AccessibilityEvent)方法。我们可以实现onAccessibilityEvent来处理这些AccessibilityEvent。下面看一步一步地使用示例:

实现AccessibilityService

这里使用ApiDemo当中将文字转换为语音的例子来介绍,这段代码在/samples//ApiDemos/src/com/example/android/apis/accessibility/TaskBackService,如何使用ApiDemo可以参考Samples。下面是简单介绍里面的核心代码:





/**

 * This class demonstrates how an accessibility service can query

 * window content to improve the feedback given to the user.

 */

public class TaskBackService extends AccessibilityService implements OnInitListener {
     



    /** Tag for logging. */

    private static final String LOG_TAG = "TaskBackService/onAccessibilityEvent";



    /** Comma separator. */

    private static final String SEPARATOR = ", ";



    /** The class name of TaskListView - for simplicity we speak only its items. */

    private static final String TASK_LIST_VIEW_CLASS_NAME =

        "com.example.android.apis.accessibility.TaskListView";



    /** Flag whether Text-To-Speech is initialized. */

    private boolean mTextToSpeechInitialized;



    /** Handle to the Text-To-Speech engine. */

    private TextToSpeech mTts;



    @Override

    public 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值