Android Accessibility学习

来源:互联网 发布:网络女神排行 编辑:程序博客网 时间:2024/04/28 04:55

许多Android用户有不同的需求,要求它们以不同的方式与他们的Android设备进行交互。这包括用户视觉、物理或年龄的限制,为了他们能完全看到或使用触摸屏,以及听力损失的用户能感知到声音和警报信息。
Android提供了可访问性特性和服务( accessibility features and services)更容易帮助这些用户使用设备,包括语音、触觉反馈,,手势导航,轨迹球和directional-pad导航。Android应用程序开发人员可以利用这些服务使应用程序更容易。
Android开发者也可以建立自己的可访问性服务,可以提供增强的可用性特性,比如音频提示物理反馈,和替代导航模式。可访问性服务可以为所有应用程序提供这些增强功能,一组应用程序或只是一个单一的应用程序。
官方文档中,有三篇文章介绍Accessibility。这里主要介绍AccessibilityServices的使用。
一、在AndroidManifest.xml文件中里注册它 :

<manifest>  ...  <uses-permission ... />  ...  <application>    ...    <serviceandroid:name=".MyAccessibilityService"        android:label="@string/accessibility_service_label"        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">      <intent-filter>        <actionandroid:name="android.accessibilityservice.AccessibilityService"/>      </intent-filter>    </service>    <uses-permissionandroid:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>  </application></manifest>       

二、在子类MyAccessibilityService里实现几个重要的重载方法:
onServiceConnected() - 可选。系统会在成功连接上你的服务的时候调用这个方法,在这个方法里你可以做一下初始化工作,例如设备的声音震动管理,也可以调用setServiceInfo()进行配置工作。
onAccessibilityEvent() - 必须。通过这个函数可以接收系统发送来的AccessibilityEvent,接收来的AccessibilityEvent是经过过滤的,过滤是在配置工作时设置的。
onInterrupt() - 必须。这个在系统想要中断AccessibilityService返给的响应时会调用。在整个生命周期里会被调用多次。
onUnbind() - 可选。在系统将要关闭这个AccessibilityService会被调用。在这个方法中进行一些释放资源的工作。
三、配置工作:
一般在onServiceConnected()方法里进行。建立一个AccessibilityServiceInfo对象,通过这个对象设置监听系统事件类型,服务的反馈类型(震动,语音,声音),事件时间间隔,你想要监听的包名(或者说是应用程序)。最后调用setServiceInfo()进行设置。从Android4.0开始,开发者可以通过在AndroidManifest里添加标签,在标签里指出配置文件的位置。

<service android:name=".MyAccessibilityService">    ...    <meta-data      android:name="android.accessibilityservice"      android:resource="@xml/accessibility_service_config" />  </service>

然后在/res/xml/accessibility_service_config.xml:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"      android:description="@string/accessibility_service_description"      android:packageNames="com.example.android.apis"      android:accessibilityEventTypes="typeAllMask"      android:accessibilityFlags="flagDefault"      android:accessibilityFeedbackType="feedbackSpoken"      android:notificationTimeout="100"      android:canRetrieveWindowContent="true"      android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"  />  

四、实例:
静默安装实现方案:http://blog.csdn.net/guolin_blog/article/details/47803149
微信抢红包插件:https://github.com/geeeeeeeeek/WeChatLuckyMoney

0 0
原创粉丝点击