风清扬

Android信息无障碍开发指南(中文版)

1楼 风清扬



发表于 2015-07-14 14:26:00   阅读量(0)

 

无障碍开发规范

应用无障碍是指承诺应用可用、细节明确和使用过程愉悦。此文档提供了一个关于无障碍需求、建议和注意事项的检验清单,以帮助确认应用是否无障碍。遵循这个列表不能保证你的应用一定是无障碍的,但是却是开始无障碍开发的第一步。

开发无障碍应用不仅仅是开发人员的责任,也是设计和测试人员的重任,请确保他们能遵循不同开发阶段的指导思想。

安卓开发:无障碍可访问性[https://developer.android.com/design/patterns/accessibility.html](需翻墙)

无障碍开发测试清单[https://developer.android.com/tools/testing/testing_accessibility.html](需翻墙)

大多数情况下,创建无障碍的安卓应用不需要额外的代码重构。而更多的是关注用户与应用交互的细节,以便可以给用户提供他们能够感知和理解的反馈。此清单帮助你关注使应用无障碍的主要开发问题。

无障碍开发需求

以下步骤必须按序完成以确保最低层的应用细节无障碍。

1.描述用户界面控件:为没有可见文本的用户界面控件提供内容描述,尤其是ImageButton,ImageView CheckBox组件。使用android:contentDescription XML layout属性或者setContentDescription(CharSequence)方法来为无障碍服务提供信息(装饰性图形除外)。

2.设置焦点导航:确保用户可以使用基于硬件或软件的定向控制(D-垫,轨迹球,键盘和导航手势)导航。在某些情况下,需要设置UI组件为可获取焦点,或者设置焦点的跳跃顺序更合用户操作逻辑。

3.自定义视图控件:若要为应用建立自定义界面控件,须为自定义视图设置无障碍界面且提供内容描述。对于想兼容安卓1.6的自定义控件,请使用辅助支持包来实现最新的无障碍特性。

4.不使用纯音频的反馈:音频反馈必须有一个次级反馈机制,来为失聪或者听力障碍的用户提供支持。例如,短信接收的提示音必须伴随一个系统提示,触觉反馈(如具备条件)或者视觉提示。

5.测试:使用定向控制功能和启用了TalkBack的非视觉导航功能来测试应用的无障碍访问。关于无障碍测试的更多信息,请参阅无障碍测试列表。

无障碍开发建议

建议使用以下步骤来确认您的应用无障碍。如果不执行以下步骤,可能会影响您应用的整体无障碍体验及产品质量。

1.安卓无障碍开发指南:在构建布局之前,请查看并遵循开发指南中的无障碍开发指导。

2.框架内置的控件:条件允许的话,使用安卓内置的界面控件,因为这些组件默认提供了无障碍支持。

3.临时的或者自我隐藏的控件和通知:避免使用淡出或者定时消失的界面控件。如果你的应用需要这些功能,请为这些功能提供备用接口。

特殊情况和注意事项

如下列表描述了需要使app无障碍的一些特殊场景。阅读这个列表,以确认你的app是否遇到了这些场景和需要注意的事项,并选择合适的技术处理。

1.文本域提示:对于EditText域,提供一个android:hint属性而不是内容描述,来帮助用户理解,当文本域为空时,期望填写什么内容。且当内容填充时,允许语音系统以音频形式播放内容。

2.高可视化语境的自定义控件:如果应用包含高可视化语境的自定义控件(如日历控件),默认的无障碍服务不能为用户提供良好的体验,你应该考虑使用AccessibilityNodeProvider为控件提供虚拟的视图层。

3.自定义控件和点击事件处理:如果自定义控件提供用户触摸交互的处理,例如onTouchEvent(MotionEvent)MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP的监听,并将之视为一次点击事件。你必须触发一个AccessiblityEvent,等同于一次点击事件并为用户行为提供无障碍服务。详情见自定义触摸事件处理。

4.改变功能的控件:如果应用中有button或者其他在正常用户行为中能改变功能的控件(例如,buttonplay变成了pause),确保buttonandroid:contentDescription也对应做了改变。

5.为相关控件提供提示:当用户与控件集中的控件(如DatePicker)交互时,确保控件集提供有效的音频反馈。

6.视频播放与字幕:如果应用提供视频播放功能,必须支持字幕以帮助失聪或者听力障碍的用户理解信息。视频播放控件也必须清楚得表明字幕是否可用,并提供一个明确的方法以启用字幕。

7.增补无障碍音频反馈:只使用安卓的无障碍框架为应用提供无障碍音频反馈。如TalkBack这样的无障碍服务应该是为应用提供无障碍视频提示的唯一服务。使用android:contentDescription XML layout属性或者使用无障碍框架API动态增加来提供提示信息。比如,如果你的应用想通知用户,例如自动翻页,使用announceForAccessibility(CharSequence)方法来让无障碍服务播放此信息的音频给用户。

8.复杂视觉交互的自定义控件:对于提供复杂视觉交互或者非标准视觉交互的自定义控件,使用可为无障碍服务提供简单交互模型的AccessibilityNodeProvider为用户操作提供一个虚拟的视觉层。如果这种方法不可行,考虑提供一个不同的可访问的视觉层。

9.小控件:如果有比最小触摸尺寸还小的控件在应用屏幕中,考虑使用ViewGroup把他们分组,并为之提供android:contentDescription.

10.装饰性的图像与图形:应用屏幕上只为装饰的且不提供内容或者可供用户操作的元素,不应该有无障碍内容描述。

 


1楼 发布于:2016-6-16   |   查看数:0   |   回复数:0
初出江湖