讨论广场 问答详情
Accessibility Kit(无障碍服务) 这个能力有人使用过的么,一般是如何使用 Accessibility Kit 的能力来提升应用的可访问性,方便从组件使用、事件处理和服务配置几个方面讲解一下么,并给出相应的代码示例?
拥抱太阳的月亮405 2026-08-07 11:15:02
96 评论 分享
harmonyos


最近在有一个开发需求,想接入Accessibility Kit(无障碍服务)能力。Accessibility Kit(无障碍服务)为应用更好的适配无障碍,开放了必要的能力,如为组件添加无障碍焦点、无障碍朗读文本等,让应用能够被更多的人所使用。 这个能力有人使用过的么,一般是如何使用?有代码示例可以参考么

96 评论 分享
写回答
全部评论(1)

在鸿蒙应用开发中,使用 Accessibility Kit 的能力可以显著提升应用的可访问性,使应用更易于不同能力的用户使用。以下结合知识库内容从组件层面、事件处理层面和服务配置层面进行阐述,并给出相应的代码示例。

#### 组件层面

在组件层面,使用 Accessibility Kit 为组件添加无障碍属性,如无障碍焦点和无障碍朗读文本。这可以帮助视障用户更好地理解和操作组件。

```ts
import { Button } from '@arkui/arkui'
import { AccessibilityKit } from '@kit.AccessibilityKit'

const myButton = new Button({
  text: '点击我',
})

// 为组件设置无障碍焦点和无障碍朗读文本
AccessibilityKit.setAccessibilityFocusable(myButton.id, true)
AccessibilityKit.setAccessibilityText(myButton.id, '这是一个点击按钮,点击后将执行某项操作')
```

通过`setAccessibilityFocusable()`方法使组件可获取无障碍焦点,`setAccessibilityText()`方法为组件设置无障碍朗读文本,提升了组件的可访问性。

#### 事件处理层面

在事件处理层面,使用 Accessibility Kit 的无障碍事件发送能力,主动触发焦点和朗读等无障碍事件,为用户提供更好的交互体验。

```ts
import { AccessibilityKit, AccessibilityEvent } from '@kit.AccessibilityKit'

// 主动聚焦事件
const focusEvent: AccessibilityEvent = {
  eventType: 'focus',
  targetElement: 'componentId',
}

// 发送主动聚焦事件
AccessibilityKit.sendAccessibilityEvent(focusEvent)
```

通过创建并发送无障碍事件,如主动聚焦事件,系统会将焦点移动到指定的组件上,方便用户操作。

#### 服务配置层面

在服务配置层面,使用 Accessibility Kit 开发无障碍扩展服务,处理各种无障碍事件,如手势事件和物理按键事件。

```ts
import { AccessibilityExtensionAbility, AccessibilityEvent } from '@kit.AccessibilityKit'
import AccessibilityManager from './AccessibilityManager'

class AccessibilityExtAbility extends AccessibilityExtensionAbility {
  onAccessibilityEvent(accessibilityEvent: AccessibilityEvent) {
    console.info(`AccessibilityExtAbility onAccessibilityEvent: ${JSON.stringify(accessibilityEvent)}`)
    // 根据事件信息进行业务逻辑处理
    AccessibilityManager.getInstance().onEvent(accessibilityEvent)
  }
}

export default AccessibilityExtAbility
```

在`onAccessibilityEvent()`方法中,根据不同的事件类型执行相应的业务逻辑,如获取当前页面的所有节点、打印节点信息等。同时,在`module.json5`和`accessibility_config.json`文件中进行相应的配置,声明无障碍扩展服务的能力类型。

通过以上从组件层面、事件处理层面和服务配置层面的操作,结合 Accessibility Kit 的能力,可以有效提升应用的可访问性。

2026-08-07 14:42:04