Android Accessibility学习

许多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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值