# 辅助功能 本模块提供辅助功能查询能力,包括获取辅助应用列表、辅助应用启用状态、无障碍字幕配置等。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 本模块首批接口从 API version 7 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```typescript import accessibility from '@ohos.accessibility'; ``` ## AbilityState 辅助应用状态类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | enable | 辅助应用已启用。 | | disable | 辅助应用已禁用。 | | install | 辅助应用已安装。 | ## AbilityType 无障碍辅助应用类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | audible | 表示具有听觉反馈。 | | generic | 表示具有通用反馈。 | | haptic | 表示具有触觉反馈。 | | spoken | 表示具有语音反馈。 | | visual | 表示具有视觉反馈。 | | all9+ | 表示以上所有类别。 | ## AccessibilityAbilityInfo 辅助应用信息。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core ### 属性 | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | id | number | 是 | 否 | ability id。 | | name | string | 是 | 否 | ability 名。 | | bundleName | string | 是 | 否 | 包名。 | | targetBundleNames9+ | Array<string> | 是 | 否 | 关注的目标包名。 | | abilityTypes | Array<[AbilityType](#abilitytype)> | 是 | 否 | 辅助应用类型。 | | capabilities | Array<[Capability](#capability)> | 是 | 否 | 辅助应用能力列表。 | | description | string | 是 | 否 | 辅助应用描述。 | | eventTypes | Array<[EventType](#eventtype)> | 是 | 否 | 辅助应用关注的无障碍事件列表。 | ## Action 应用所支持的目标动作。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | click | 表示点击操作。 | | longClick | 表示长按操作。 | | scrollForward | 表示向前滚动操作。 | | scrollBackward | 表示向后滚动操作。 | | focus | 表示获得焦点操作。 | | clearFocus | 表示清除焦点操作。 | | clearSelection | 表示清除选择操作。 | | accessibilityFocus | 表示获得无障碍焦点操作。 | | clearAccessibilityFocus | 表示清除无障碍焦点操作。 | | cut | 表示剪切操作。 | | copy | 表示复制操作。 | | paste | 表示粘贴操作。 | | select | 表示选择操作。 | | setText | 表示设置文本操作。 | | delete | 表示删除操作。 | | setSelection | 表示选择操作。 | ## Capability 辅助应用能力类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | retrieve | 具有检索窗口内容的能力。 | | touchGuide | 具有触摸探索模式的能力。 | | keyEventObserver | 具有过滤按键事件的能力。 | | zoom | 具有控制显示放大的能力。 | | gesture | 具有执行手势动作的能力。 | ## CaptionsFontEdgeType8+ 字幕字体边缘类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Hearing | 名称 | 描述 | | -------- | -------- | | none | 无效果。 | | raised | 凸起效果。 | | depressed | 凹陷效果。 | | uniform | 轮廓效果。 | | dropShadow | 阴影效果。 | ## CaptionsFontFamily8+ 字幕字体。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Hearing | 名称 | 描述 | | -------- | -------- | | default | 默认字体。 | | monospacedSerif | 等宽 Serif 字体。 | | serif | Serif 字体。 | | monospacedSansSerif | 等宽 Sans Serif 字体。 | | sansSerif | Sans Serif 字体。 | | casual | 非正式字体。 | | cursive | 手写字体。 | | smallCapitals | 小型大写字母字体。 | ## CaptionsStyle8+ 字幕风格。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Hearing | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | fontFamily | [CaptionsFontFamily](#captionsfontfamily8) | 是 | 否 | 描述字幕字体。 | | fontScale | number | 是 | 否 | 描述字幕字体缩放系数。 | | fontColor | number \| string | 是 | 否 | 描述字幕字体颜色。 | | fontEdgeType | [CaptionsFontEdgeType](#captionsfontedgetype8) | 是 | 否 | 描述字幕字体边缘。 | | backgroundColor | number \| string | 是 | 否 | 描述字幕背景颜色。 | | windowColor | number \| string | 是 | 否 | 描述字幕窗口颜色。 | ## CaptionsManager8+ 字幕配置。 **系统能力**:以下各项对应的系统能力均为SystemCapability.BarrierFree.Accessibility.Hearing ### 属性 | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | enabled | boolean | 是 | 否 | 表示是否启用字幕配置。 | | style | [CaptionsStyle](#captionsstyle8) | 是 | 否 | 表示字幕风格。 | 下列 API 示例中都需要使用 [accessibility.getCaptionsManager()](#accessibilitygetcaptionsmanager8) 获取 captionsManager 实例,再通过此实例调用对应的方法。 ### on('enableChange') on(type: 'enableChange', callback: Callback<boolean>): void; 注册字幕配置启用的监听函数。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 监听字幕配置启用状态。 | | callback | Callback<boolean> | 是 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | - **示例:** ```typescript let captionsManager = accessibility.getCaptionsManager(); captionsManager.on('enableChange',(data) => { console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) }) ``` ### on('styleChange') on(type: 'styleChange', callback: Callback<CaptionsStyle>): void; 注册字幕风格变化的监听函数。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 监听字幕风格变化。 | | callback | Callback<[CaptionsStyle](#captionsstyle8)> | 是 | 回调函数,在字幕风格变化时通过此函数进行通知。 | - **示例:** ```typescript let captionsManager = accessibility.getCaptionsManager(); captionsManager.on('styleChange',(data) => { console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) }) ``` ### off('enableChange') off(type: 'enableChange', callback?: Callback<boolean>): void; 移除字幕配置启用的监听函数。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 监听字幕配置启用状态。 | | callback | Callback<boolean> | 否 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | - **示例:** ```typescript let captionsManager = accessibility.getCaptionsManager(); captionsManager.off('enableChange') ``` ### off('styleChange') off(type: 'styleChange', callback?: Callback<CaptionsStyle>): void; 移除字幕风格变化的监听函数。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 字幕风格变化。 | | callback | Callback<[CaptionsStyle](#captionsstyle8)> | 否 | 回调函数,在字幕风格变化时通过此函数进行通知。 | - **示例:** ```typescript let captionsManager = accessibility.getCaptionsManager(); captionsManager.off('styleChange') ``` ## EventInfo 界面变更事件。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core ### 属性 | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | type | [EventType](#eventtype) | 是 | 是 | 无障碍事件类型。 | | windowUpdateType | [WindowUpdateType](#windowupdatetype) | 是 | 是 | 窗口变化类型。 | | bundleName | string | 是 | 是 | 目标应用名。 | | componentType | string | 是 | 是 | 事件源组件类型,如按钮、图表。 | | pageId | number | 是 | 是 | 事件源的页面 ID。 | | description | string | 是 | 是 | 事件描述。 | | triggerAction | [Action](#action) | 是 | 是 | 触发事件的 Action。 | | textMoveUnit | [TextMoveUnit](#textmoveunit) | 是 | 是 | 文本移动粒度。 | | contents | Array<string> | 是 | 是 | 内容列表。 | | lastContent | string | 是 | 是 | 最新内容。 | | beginIndex | number | 是 | 是 | 画面显示条目的开始序号。 | | currentIndex | number | 是 | 是 | 当前条目序号。 | | endIndex | number | 是 | 是 | 画面显示条目的结束序号。 | | itemCount | number | 是 | 是 | 条目总数。 | ### constructor constructor(jsonObject) 构造函数。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | jsonObject | string | 是 | 创建对象所需要的 JSON 格式字符串。 | - **示例:** ```typescript let eventInfo = new accessibility.EventInfo({"type":"click","bundleName":"com.example.MyApplication","triggerAction":"click"}) ``` ## EventType 无障碍事件类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | click | 描述点击组件的事件。 | | longClick | 描述长按组件的事件。 | | select | 描述选择组件的事件。 | | focus | 描述组件获得焦点的事件。 | | textUpdate | 描述组件文本已更改的事件。 | | hoverEnter | 描述悬停进入组件的事件。 | | hoverExit | 描述悬停离开组件的事件。 | | scroll | 描述滚动视图的事件。 | | textSelectionUpdate | 描述选定文本已更改的事件。 | | accessibilityFocus | 描述获得无障碍焦点的事件。 | | accessibilityFocusClear | 描述清除无障碍焦点的事件。 | ## TextMoveUnit 文本无障碍导航移动粒度。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | char | 以字符为移动粒度遍历节点文本。 | | word | 以词为移动粒度遍历节点文本。 | | line | 以行为移动粒度遍历节点文本。 | | page | 以页为移动粒度遍历节点文本。 | | paragraph | 以段落为移动粒度遍历节点文本。 | ## WindowUpdateType 窗口变化类型。 **系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core | 名称 | 描述 | | -------- | -------- | | add | 添加窗口的窗口变化事件。 | | remove | 一个窗口被删除的窗口变化事件。 | | bounds | 窗口边界已更改的窗口变化事件。 | | active | 窗口变为活动或不活动的窗口变化事件。 | | focus | 窗口焦点发生变化的窗口变化事件。 | ## accessibility.getAbilityLists getAbilityLists(abilityType: AbilityType, stateType: AbilityState): Promise<Array<AccessibilityAbilityInfo>> 查询辅助应用列表。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | | stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | - **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | 返回辅助应用信息列表。 | - **示例:** ```typescript accessibility.getAbilityLists("spoken", "enable") .then((data) => { console.info('success data:getAbilityList1 : ' + JSON.stringify(data)); for (let item of data) { console.info(item.id); console.info(item.name); console.info(item.description); console.info(item.bundleName); } }).catch((error) => { console.error('failed to getAbilityList1 because ' + JSON.stringify(error)); }) ``` ## accessibility.getAbilityLists getAbilityLists(abilityType: AbilityType, stateType: AbilityState,callback: AsyncCallback<Array<AccessibilityAbilityInfo>>): void 查询辅助应用列表。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | | stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | | callback | AsyncCallback<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | 是 | 回调函数,返回辅助应用信息列表。 | - **示例:** ```typescript accessibility.getAbilityLists("visual", "enable", (err, data) => { if (err) { console.error('failed to getAbilityList2 because ' + JSON.stringify(err)); return; } console.info('success data:getAbilityList2 : ' + JSON.stringify(data)); for (let item of data) { console.info(item.id); console.info(item.name); console.info(item.description); console.info(item.bundleName); } }) ``` ## accessibility.getCaptionsManager8+ getCaptionsManager(): CaptionsManager 获取无障碍字幕配置。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Hearing - **返回值:** | 类型 | 说明 | | -------- | -------- | | [CaptionsManager](#captionsmanager8) | 无障碍字幕配置管理。 | - **示例:** ```typescript let captionsManager = accessibility.getCaptionsManager() ``` ## accessibility.on('accessibilityStateChange' | 'touchGuideStateChange') on(type: 'accessibilityStateChange' | 'touchGuideStateChange', callback: Callback<boolean>): void 启用辅助应用和触摸浏览功能的状态变化监听。 **系统能力**:以下各项对应的系统能力有所不同,详见下表。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 监听的事件类型。
- type 为'accessibilityStateChange'时表示监听类型为辅助功能启用状态变化监听;
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
- type 为'touchGuideStateChange'时表示监听类型为触摸浏览启用状态变化监听。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Vision | | callback | Callback<boolean> | 是 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | - **示例:** ```typescript accessibility.on('accessibilityStateChange',(data) => { console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) }) ``` ## accessibility.off('accessibilityStateChange' | 'touchGuideStateChange') off(type: ‘accessibilityStateChange ’ | ‘touchGuideStateChange’, callback?: Callback<boolean>): void 关闭辅助应用和触摸浏览功能的状态变化监听。 **系统能力**:以下各项对应的系统能力有所不同,详见下表。 - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 否 | 监听的事件类型。
- type 为'accessibilityStateChange'时表示监听类型为辅助功能启用状态变化监听;
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
- type 为'touchGuideStateChange'时表示监听类型为触摸浏览启用状态变化监听。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Vision | | callback | Callback<boolean> | 否 | 要取消的监听回调函数。 | - **示例:** ```typescript accessibility.off('accessibilityStateChange',(data) => { console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) }) ``` ## accessibility.isOpenAccessibility isOpenAccessibility(): Promise<boolean> 判断是否启用了辅助功能。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | 如果辅助功能已启用,则返回 true;否则返回 false。 | - **示例:** ```typescript accessibility.isOpenAccessibility() .then((data) => { console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) }).catch((error) => { console.error('failed to isOpenAccessibility because ' + JSON.stringify(error)); }) ``` ## accessibility.isOpenAccessibility isOpenAccessibility(callback: AsyncCallback<boolean>): void 判断是否启用了辅助功能。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 | 回调函数,如果辅助功能已启用,则返回 true;否则返回 false。 | - **示例:** ```typescript accessibility.isOpenAccessibility((err, data) => { if (err) { console.error('failed to isOpenAccessibility because ' + JSON.stringify(err)); return; } console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) }) ``` ## accessibility.isOpenTouchGuide isOpenTouchGuide(): Promise<boolean> 判断触摸浏览模式是否开启。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Vision - **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | 如果触摸浏览模式已开启,则返回 true;否则返回 false。 | - **示例:** ```typescript accessibility.isOpenTouchGuide() .then((data) => { console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) }).catch((error) => { console.error('failed to isOpenTouchGuide because ' + JSON.stringify(error)); }) ``` ## accessibility.isOpenTouchGuide isOpenTouchGuide(callback: AsyncCallback<boolean>): void 判断触摸浏览模式是否开启。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Vision - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 | 回调函数,如果触摸浏览模式已开启,则返回 true;否则返回 false。 | - **示例:** ```typescript accessibility.isOpenTouchGuide((err, data) => { if (err) { console.error('failed to isOpenTouchGuide because ' + JSON.stringify(err)); return; } console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) }) ``` ## accessibility.sendEvent sendEvent(event: EventInfo): Promise<void> 发送无障碍事件。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | event | [EventInfo](#eventinfo) | 是 | 无障碍事件对象。 | - **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<void> | 以 Promise 形式返回结果,如果发送无障碍事件成功,则 data 有数据返回;如果发送无障碍事件失败,则 err 有数据返回。 | - **示例:** ```typescript let eventInfo : accessibility.EventInfo = { type: 'focus', bundleName: 'bundle', triggerAction: 'focus' } accessibility.sendEvent(eventInfo) .then((data) => { console.info('success data:sendEvent : ' + JSON.stringify(data)) }).catch((error) => { console.error('failed to sendEvent because ' + JSON.stringify(error)); }) ``` ## accessibility.sendEvent sendEvent(event: EventInfo, callback: AsyncCallback<void>): void 发送无障碍事件。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core - **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | event | [EventInfo](#eventinfo) | 是 | 辅助事件对象。 | | callback | AsyncCallback<void> | 是 | 回调函数,如果发送无障碍事件成功,则 AsyncCallback 中 data 有数据返回;如果发送无障碍事件失败,则 AsyncCallback 中 err 有数据返回。 | - **示例:** ```typescript let eventInfo : accessibility.EventInfo = { type: 'focus', bundleName: 'bundle', triggerAction: 'focus' } accessibility.sendEvent(eventInfo,(err, data) => { if (err) { console.error('failed to sendEvent because ' + JSON.stringify(err)); return; } console.info('success data:sendEvent : ' + JSON.stringify(data)) }) ```