HarmonyOS next 示例代码全集
AccessibilityBasedCapabilities: 本示例基于系统提供的无障碍阅读能力,实现了无障碍扩展服务集成、原生组件屏幕朗读以及多个控件组合标注。
HarmonyOS next 示例代码全集
基于原生能力的无障碍模式
介绍
本示例基于系统提供的无障碍阅读能力,实现了无障碍扩展服务集成、原生组件屏幕朗读以及多个控件组合标注。
效果图预览
原生组件屏幕朗读:
创建说明:
- 在已创建工程的ets文件夹下创建accessibility文件夹,在该文件夹下创建AccessibilityExtAbility.ets文件,可在该文件中实现一些回调函数,并加入业务处理逻辑的调用,具体可参考src/main/ets/accessibility/AccessibilityExtAbility.ets代码。
- 在已创建的accessibility文件夹下创建AccessibilityManager.ets文件,用于存放业务逻辑代码,可参考src/main/ets/accessibility/AccessibilityManager.ets进行实现。
- 在src/main/module.json5下新增扩展服务的配置信息,其中srcEntry标签为extensionAbility对应的路径。需要注意的一点是配置信息中的type标签要按照与无障碍子系统的约定进行配置,固定为accessibility,否则将无法正常连接。
"extensionAbilities": [
{
"name": "AccessibilityExtAbility",
"srcEntry": "./ets/accessibility/AccessibilityExtAbility.ets",
"label": "$string:MainAbility_label",
"description": "$string:MainAbility_desc",
"type": "accessibility",
"metadata": [
{
"name": "ohos.accessibleability",
"resource": "$profile:accessibility_config"
}
]
}
]
- 另外,配置信息中的accessibility_config为无障碍扩展服务的具体配置,需要在resources/base/profile/下新建accessibility_config.json文件,在该文件中声明此无障碍扩展服务具备的能力类型,根据业务功能合理声明能力类型,本案例中,需要如下声明:
{
"accessibilityCapabilities": [
"retrieve",
"gesture",
"touchGuide"
]
}
使用说明:
- 打开设置->辅助功能->屏幕朗读->屏幕朗读选项。
- 打开屏幕朗读后,关键手势如下:
- 单击选择某个项目,双击确认选择。
- 返回桌面及桌面切换等原有的单指操作都需要换成两指操作。
- 下滑屏幕朗读下一项,上滑屏幕朗读上一项。
- 打开应用,下滑或上滑查看朗读情况。
工程目录
工程的目录结构
├──entry/src/main/ets // 代码区
│ ├──accessibility
│ │ ├──AccessibilityExtAbility.ets // 无障碍扩展ability
│ │ └──AccessibilityManager.ets // 无障碍扩展管理
│ ├──common
│ │ └──Constants.ets // 常量
│ ├──entryability
│ │ └──EntryAbility.ets // EntryAbility
│ ├──pages
│ │ └──Index.ets // 组合标注sample页
│ ├──utils
│ │ └──Logger.ets // 日志工具类
│ ├──view
│ │ └──WeatherLine.ets // 天气行组件
│ └──viewmodel
│ └──WeatherViewModel.ets // 天气数据viewmodel
└──entry/src/main/resources // 应用资源目录
具体实现
使用原生组件时,即可自然支持无障碍能力,但是在一些场景中,一个功能上完整的UI对象可能是由若干个更小的UI组件组合而成的。若每一个小的UI组件都可以获焦并朗读,则会造成信息冗余和效率降低。同时由于可聚焦的组件过多过细,也会影响触摸浏览时走焦的性能体验。此时需要将多个控件设置为一个组,通过对组设置朗读标签,达到整组播报的效果。
相关权限
不涉及
约束与限制
- 本示例仅支持标准系统上运行,支持设备:华为手机。
- HarmonyOS系统:HarmonyOS NEXT Developer Beta1及以上。
- DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。
- HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。