Android Accessibility 辅助功能简单介绍_Android

Android Accessibility 辅助功能

Accessibility:

许多Android使用者因为各种情况导致他们要以不同的方式与手机交互。

这包括了有些用户由于视力上,身体上,年龄上的问题致使他们不能看完整的屏幕或者使用触屏,也包括了无法很好接收到语音信息和提示的听力能力比较弱的用户。

Android提供了Accessibility功能和服务帮助这些用户更加简单地操作设备,包括文字转语音(这个不支持中文),触觉反馈,手势操作,轨迹球和手柄操作。

开发者可以利用这些服务使得程序更好用。

开发者可以搭建自己的Accessibility服务,这可以加强可用性,例如声音提示,物理反馈,和其他可选的操作模式。

Accessibility服务可以为所有的应用程,一组应用程序或单个应用程序提供这些增强功能。

官方文档中,有三篇文章介绍了Accessibility,这里只要是第三篇关于AccessibilityService的使用:

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. 配置工作

一般在onServiceConnected()方法里进行。/Android-Sample/ApiDemos/com.example.android.apis.accessibility.ClockBackService 配置代码:

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()进行设置。

注:从Android4.0开始,开发者可以通过在AndroidManifest里添加<meta-data>标签,在标签里指出配置文件的位置,样例代码:

<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"
/>

更多详细的可以参见官方文档,或者可以看samples里的两个例子:ClockBackService, TaskBackService。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 详细介绍
, Accessibility
辅助功能
accessibility功能、android 辅助功能、android 开启辅助功能、android 辅助功能开发、android 打开辅助功能,以便于您获取更多的相关知识。

时间: 2024-12-07 14:20:29

Android Accessibility 辅助功能简单介绍_Android的相关文章

Android Retrofit的简单介绍和使用

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装.把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了,其主要作者是Android大神JakeWharton. 导包: compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包 compile 'com.squareup.retrofit2:converter-gso

Android init.rc文件简单介绍_Android

Android init.rc文件简单介绍 init.rc脚本是由Android中linux的第一个用户级进程init进行解析的. init.rc 文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(Android Init Language,这里简称为AIL)的脚本写成的文件. 该文件在ROM中是只读的,即使有了root权限,可以修改该文件也没有.因为我们在根目录看到的文件只是内存文件的镜像.也就是说,android启动后,会将init.rc文件装载到内存.而修改

Android 启动模式详细介绍_Android

Android 启动模式:     启动模式:LaunchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里.       这里简单介绍一下任务栈task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task.任务栈里面的Activity是按照先进后出的形式保存的,比如:你打开一个页面,

Android Framework Application Framework层简单介绍_Android

引言               Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6内核层,核心库层,应用框架层,应用层.我今天重点介绍一下应用框架层Framework,其实也是我自己的学习心得.         Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求.写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notific

Android静态变量的生命周期 简单介绍_Android

Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类被卸载的时候,静态变量被销毁.在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收.内存泄漏这些问题有关,有必要加深研究和理解

Android中的Adapter简单介绍_Android

Android中的Adapter在自定义显示列表时非常有用,比如SimpleAdapter,它的构造函数是: public SimpleAdapter (Context context, List> data, int resource, String[] from, int[] to) 它的各参数的意思: 1.context,上下文,SimpleAdapter关联的视图,一般而言就是当前的Activity,this 2.data,泛型的List,如ArrayList,Map或者HashMap

android 传感器(OnSensorChanged)使用介绍_Android

下面是API中定义的几个代表sensor的常量. Int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. 加速度传感器 int TYPE_ALL A constant describing all sensor types. 所有类型 A constant describing all sensor types. int TYPE_GRAVITY A constant describing a grav

Android应用 坐标系详细介绍_Android

Android 应用坐标系详解:              由于最近做Android项目需要用坐标系的知识,所以度娘了一下,整理了相关资料,记录下来. 1 背景 去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有较为系统性授之于渔的文章,同时由于自己也迟迟没有时间规划这一系列文章,最近想将这一系列文章重新提起来,所以就来先总结一下自定义控件的一个核心知识点--坐标系. 很多人可能不屑一顾Android的坐标系,但是如果你想彻底学

Android onCreate( )方法详细介绍_Android

onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢?     先看看Google Android Developers官网上的解释:     onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout re