美文网首页
Android.Accessibility包之Accessibl

Android.Accessibility包之Accessibl

作者: 二七头头 | 来源:发表于2017-01-12 02:16 被阅读322次

    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.Accessibility包之Accessibl

          本文链接:https://www.haomeiwen.com/subject/sxawvttx.html