API Demos(6) AccessibilityService 无障碍辅助功能

最近编辑于2018年4月30日

通过AccessibilityService可以监听各个物理按键(音量,home键,返回键等等),手势操作和屏幕窗口变化(非系统的需要指定应用包名,通知监听也需要指定包名等)。

一、自定义AccessibilityService

1、继承AccessibilityService类

2、在AndroidManifest.xml中注册,同时指定,同时静态申请权限android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"。

3、同时可以指定meta-data,android:name属性必须指定为"android.accessibilityservice",android:resource属性指定xml文件决定一些自定义AccessibilityService的属性,例如

 


android:accessibilityEventTypes指定监听哪些事件;

 

android:accessibilityFeedbackType指定反馈形式;

android:canRequestFilterKeyEvents设为true,意味着物理按键按下时拦截请求事件,方便自定义处理;

android:canControlMagnification="true"可以放大缩小屏幕;

android:description指定设置中开启该服务前时的描述;

android:canRetrieveWindowContent="true",可以监听窗口层级视图。

4、重写onServiceConnected()方法,服务刚开启时触发;

重写onKeyEvent(KeyEvent event)方法,处理物理按键事件;

重写onAccessibilityEvent(AccessibilityEvent event)方法,响应AccessibilityEvent的事件,在用户操作的过程中,系统不断的发送sendAccessibiltyEvent(AccessibilityEvent event);然后通过onAccessibilityEvent()可以捕捉到该事件,然后分析;

onInterrupt():打断获取事件的过程。

二、开启服务

该服务奏效需要用户主动开启,两种跳转到开启页面的方式:

1、手动进入设置——>更多设置——>无障碍——>找到对应服务开启;

2、startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));打开无障碍页面——>找到对应服务开启。

三、其他

1、API Demos中MagnificationService类展示了按音量键控件屏幕放大缩小。

2、AccessibleCompoundButtonInheritance和AccessibleCompoundButtonComposition两个自定义控件如果开启了处理对应事件的AccessibilityService(如Demos中开启TaskBackService,该服务的配置为

 


其中android:accessibilityEventTypes="typeAllMask"会监听所有事件,android:packageNames="com.example.android.apis"表示监听的安装包为"com.example.android.apis",android:accessibilityFeedbackType="feedbackSpoken"表示响应方式是声音,然而却没有声音),在自定义view中重写会依次调用的三个方法onInitializeAccessibilityNodeInfo(View host,AccessibilityNodeInfo info),onPopulateAccessibilityEvent(View host, AccessibilityEvent event)和onInitializeAccessibilityEvent(View host, AccessibilityEvent event)。

 

3、系统中常见的有TalkBack等服务,但打开都需要慎重,需要先了解开启服务后如何操作手机,安卓手机误开启Talkback盲人语音模式的关闭步骤。

4、第三方的AccessibilityService服务更需要谨慎打开,有可能会偷偷收集你的数据。

5、微信自动抢红包(现在不行了),聊天自动回复等功能就是利用的AccessibilityService服务。

6、一些相关文档

Android开发 无障碍指南

http://www.capa.ac/

你可能感兴趣的:(API Demos(6) AccessibilityService 无障碍辅助功能)