前言:
“Accessibility”译作“信息无障碍”,是指任何人在任何情况下都能平等、方便地获取信息并利用信息。其目的是缩小全社会不同阶层、不同地区、不同年龄、不同健康状况的人群在信息理解、信息交互、信息利用方面的数字鸿沟,使其更加方便地参与社会生活,享受数字发展带来的便利。
Accessibility Kit(无障碍开发服务)提供扩展服务的开放能力,三方可基于此开放能力开发出类似读屏软件的扩展服务,同时也为三方应用提供开放能力,使三方应用可以更好的适配扩展服务,以更好的服务于障碍人群和障碍场景。例如利用读屏软件,用户可以“听见”当前屏幕内容。
能力范围
1、为三方应用提供获取扩展服务列表、扩展服务启用状态、发送无障碍事件等能力。
2、为扩展服务提供扩展服务框架,允许三方开发类似读屏软件的扩展服务。
框架原理
无障碍扩展服务框架提供在三方应用和和扩展服务之间交换信息的标准机制。扩展服务通过AAkit向AAMS发出查询或操作请求,AAMS通过ASACkit向三方应用执行查询或操作请求,并将执行结果返回给扩展服务。

- Accessibility App:基于无障碍扩展服务框架开发的扩展服务,如视障用户使用的读屏App。
- Tartget App:被Accessibility App辅助的三方应用。
- AccessibilityAbilityManagerService(AAMS):无障碍扩展服务框架主服务,用于对Accessibility App生命周期进行管理,同时为Accessibility App和Target App提供信息交互的桥梁。
- AccessibilityAbility(AAkit):Accessibility App利用AAkit构建扩展服务Ability运行环境,并为Accessibility App提供可查询和操作Target App的接口,如查询节点信息、对节点执行点击/长按操作等。
- AccessibilitySystemAbilityClient(ASACkit):Target App通过ASACkit向AAMS发送无障碍事件,如内容变化事件等,同时响应Accessibility App通过AAMS请求的指令,如查询节点信息、对节点执行点击/长按操作等。
AccessibilityExtensionAbility
Accessibility Kit(无障碍开发服务)通过基于ExtensionAbility框架的AccessibilityExtensionAbility提供无障碍扩展服务,开发者可以基于AccessibilityExtensionAbility模板开发自己的扩展服务,协助用户完成一些快捷的交互过程。
如何创建一个无障碍扩展服务
开发者在创建一个无障碍扩展服务时,如工程满足环境要求,开发者可自主选择是否跳过创建工程步骤,在已有工程中新增无障碍扩展服务。一个工程仅支持创建一个无障碍扩展服务。
本指南以实现以下功能为案例,讲述如何创建无障碍扩展服务,如何调用API接口实现该功能:
启动辅助功能后,在设备屏幕上绘画“右划后再下划”(rightThenDown)的手势,获取当前界面的全部节点;之后再绘画“左划后再下划”(leftThenDown)的手势,打印所有节点。
创建工程
如需新增独立的无障碍扩展服务应用,在DevEco Studio中新建一个API 9以上的Stage工程。
新建无障碍扩展服务ets文件
在已创建工程的ets文件夹下创建AccessibilityExtAbility文件夹,在该文件夹下创建AccessibilityExtAbility.ets文件,可在该文件中实现一些回调函数,并加入业务处理逻辑的调用:
import AccessibilityExtensionAbility, { AccessibilityEvent } from '@ohos.application.AccessibilityExtensionAbility';
import AccessibilityManager from './AccessibilityManager';
class AccessibilityExtAbility extends AccessibilityExtensionAbility {
onConnect() {
console.info(`AccessibilityExtAbility onConnect`);
// 执行初始化业务逻辑的操作
AccessibilityManager.getInstance().onStart(this.context);
}
onDisconnect() {
console.info(`AccessibilityExtAbility onDisconnect`);
// 执行资源回收退出业务逻辑的操作
AccessibilityManager.getInstance().onStop();
}
onAccessibilityEvent(accessibilityEvent: AccessibilityEvent) {
console.info(`AccessibilityExtAbility onAccessibilityEvent: ${JSON.stringify(accessibilityEvent)}`);
// 根据事件信息进行业务逻辑处理
AccessibilityManager.getInstance().onEvent(accessibilityEvent);

最低0.47元/天 解锁文章
7150

被折叠的 条评论
为什么被折叠?



