Android.Accessibility包之AccessiblityService类

accessibility service概念

“信息无障碍”起源于西方发达国家,译自Accessibility,指任何人在任何情况下都能平等、方便、无障碍地获取信息并利用信息。在Android里,accessiblity service的目的主要用来协助有身体缺陷的用户使用android设备和应用。

Android有自带的accessibility功能,如talkback。但其作用域只在系统自带的软件。同时,开发者也可以通过继承AccessiblityService类为自己的应用自定义accessibility功能。

运行机制

accessiblity service在后台运行,并由用户的行为产生的AccessibilityEvents触发service的回调方法。这些AccessibilityEvents可以是视图焦点变化、按钮被点击和界面滚动等。

生命周期

  • 启动:
    当带有accessiblity service的应用在Android设备安装后,可通过设备里设置-->无障碍服务 为应用开启服务。开后,Service的onCreate(),onServiceConnection()的方法会被先后调用。开发者可在这些方法进行一些初始化动作。
  • 运行
    服务启动后,用户行为触发的AccessibilityEvents会回调服务的onAccessibilityEvent(AccessibilityEvent event) 的方法。
  • 结束
    当用户通过设备里设置-->无障碍服务 为应用关闭服务后,服务便终止。通过AccessiblityService的disableSelf()方法也可以终止服务.

声明与配置

  • 声明
    AccessiblityService需要在AndroidManifest.xml中进行声明,一是通过BIND_ACCESSIBILITY_SERVICE让系统识别出这是个无障碍服务,二是为了声明该服务用于处理的Intent类型。
 <service android:name=".MyAccessibilityService"
         android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
     <intent-filter>
         <action android:name="android.accessibilityservice.AccessibilityService" />
     </intent-filter>
     . . .
 </service>
  • 配置
    配置的目的主要是设置该accessibilityservice用于哪个应用、处理哪种事件和获取事件的时间间隔等。
    配置有两种方式,一是通过XML文件配置,如:
 <service android:name=".MyAccessibilityService">
     <intent-filter>
         <action android:name="android.accessibilityservice.AccessibilityService" />
     </intent-filter>
     <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" />
 </service>

二是通过代码setServiceInfo(AccessibilityServiceInfo)配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,404评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • 念念不忘 红漆窗在等曾经伏上它的人 窗外的景色已是落叶纷飞 我在梦里翘首以望 月亮下小小的身影独自摇晃 月光还是那...
    却_7149阅读 415评论 5 7
  • 那些所有你日日夜夜梦寐以求想要拥有的,其实都会来的很简单,只要你随性淡然,无喜无忧地去拥抱生命里的一切.当你转身时...
    杨宇鹏yipong阅读 505评论 8 4
  • 纪录片同剧情片的区别就好比是非虚构文学同小说的区别。非虚构的价值在于真实,如果硬要拿评价小说的那一套来要求非虚构文...
    李盒阅读 251评论 0 0