Android Accessibility 学习
2014-03-09 23:29
477 查看
许多Android使用者因为各种情况导致他们要以不同的方式与手机交互。这包括了有些用户由于视力上,身体上,年龄上的问题致使他们不能看完整的屏幕或者使用触屏,也包括了无法很好接收到语音信息和提示的听力能力比较弱的用户。Android提供了Accessibility功能和服务帮助这些用户更加简单地操作设备,包括文字转语音(这个不支持中文),触觉反馈,手势操作,轨迹球和手柄操作。
Accessibility服务可以为所有的应用程序,一组应用程序或单个应用程序提供这些增强功能。AccessibilityService使用很简单:
(1)新建一个类继承AccessibilityService,并在AndroidManifest文件里注册它:
(2)在子类MyAccessibilityService里实现几个重要的重载方法:
onServiceConnected() - 可选。系统会在成功连接上你的服务的时候调用这个方法,在这个方法里你可以做一下初始化工作,例如设备的声音震动管理,也可以调用setServiceInfo()进行配置工作。
onAccessibilityEvent() - 必须。通过这个函数可以接收系统发送来的AccessibilityEvent,接收来的AccessibilityEvent是经过过滤的,过滤是在配置工作时设置的。
onInterrupt() - 必须。这个在系统想要中断AccessibilityService返给的响应时会调用。在整个生命周期里会被调用多次。
onUnbind() - 可选。在系统将要关闭这个AccessibilityService会被调用。在这个方法中进行一些释放资源的工作。
(3)配置setServiceInfo,比如:
参考原文:http://blog.csdn.net/wyzxk888/article/details/9006881
Accessibility服务可以为所有的应用程序,一组应用程序或单个应用程序提供这些增强功能。AccessibilityService使用很简单:
(1)新建一个类继承AccessibilityService,并在AndroidManifest文件里注册它:
<application> <service android:name=".MyAccessibilityService" android:label="@string/accessibility_service_label"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> </service> <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /> </application>在<application>标签下添加指定了AccessibilityService的子类MyAccessibilityService,同时加入相应的权限。
(2)在子类MyAccessibilityService里实现几个重要的重载方法:
onServiceConnected() - 可选。系统会在成功连接上你的服务的时候调用这个方法,在这个方法里你可以做一下初始化工作,例如设备的声音震动管理,也可以调用setServiceInfo()进行配置工作。
onAccessibilityEvent() - 必须。通过这个函数可以接收系统发送来的AccessibilityEvent,接收来的AccessibilityEvent是经过过滤的,过滤是在配置工作时设置的。
onInterrupt() - 必须。这个在系统想要中断AccessibilityService返给的响应时会调用。在整个生命周期里会被调用多次。
onUnbind() - 可选。在系统将要关闭这个AccessibilityService会被调用。在这个方法中进行一些释放资源的工作。
(3)配置setServiceInfo,比如:
private void setServiceInfo(int feedbackType) { AccessibilityServiceInfo info = new AccessibilityServiceInfo(); // We are interested in all types of accessibility events. info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; // We want to provide specific type of feedback. info.feedbackType = feedbackType; // We want to receive events in a certain interval. info.notificationTimeout = EVENT_NOTIFICATION_TIMEOUT_MILLIS; // We want to receive accessibility events only from certain packages. info.packageNames = PACKAGE_NAMES; setServiceInfo(info); }建立一个AccessibilityServiceInfo对象,通过这个对象设置监听系统事件类型,服务的反馈类型(震动,语音,声音),事件时间间隔,你想要监听的包名(或者说是应用程序)。最后调用setServiceInfo()进行设置。
参考原文:http://blog.csdn.net/wyzxk888/article/details/9006881
相关文章推荐
- Android知识点五:底部菜单效果(方式1)
- Android 开发必读
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- 基于android的设备故障诊断终端
- 导入工程出现叹号或X号可能的解决方法
- 常用的android弹出对话框
- Android测试相关资源
- 中兴U960s重装android系统
- 噜噜的android唠叨一
- android String 类型转换成UTF-8格式
- Android Activity launchMode
- 给APK 文件签名
- android手势检测类的扩展支持单点和多点触摸
- [经验] 【技术交流贴】Android命令行工具logcat详细用法
- [Tutorial]Android开发环境搭建
- 在 ANDROID 程序中禁止屏幕旋转和避免重启Activity
- Android系统扫描带广告应用的方法
- Android 一键清理内存(ARM)
- Android蓝牙开发之连接设备
- Android的QA很痛苦?看看顶级开发商怎样做软件测试