Accessibility_Custom_CAPI示例

介绍

示例通过自定义绘制接入无障碍功能中各场景的开发示例,展示在项目中,帮助开发者更好地理解Accessibility Custom C接口并合理使用。该项目中展示的接口详细描述可查如下链接: native_interface_accessibility.h

使用说明

通过开启屏幕朗读后使用单指滑动点击双击等操作,可以验证无障碍C-API接口的基本功能。

工程目录

├──entry/src/main
│  ├──cpp                                       // C++代码区
│  │  ├──CMakeLists.txt                         // CMake配置文件
│  │  ├──ani_init.cpp                           // ANI模块注册          
|  |  ├──AccessibilityMaker.cpp                 // Accessibility Custom CAPI接口示例
|  |  ├──AccessibilityMaker.h
│  │  ├──AccessibilityDialog.cpp                // Accessibility Custom Dialog CAPI接口示例
│  │  ├──AccessibilityDialog.h
│  │  ├──AccessibilityDialogSubWindow.cpp       // Accessibility Custom DialogSubWindow CAPI接口示例
│  │  ├──AccessibilityDialogSubWindow.h
|  |  └──Manager.h
│  ├──ets                                       // ets代码区
│  │  ├──entryability
│  │  │  └──EntryAbility.ets                    // 程序入口类
│  │  └──pages                                  // 页面文件
│  │     └──Index.ets                           // 主界面
│  │     └──PageAccessibility.ets              // 单实例界面
│  │     └──PageAccessibilityMultiple.ets     // 多实例界面
│  │     └──PageCustomDialog.ets               // 弹窗界面
│  │     └──PageCustomDialogSubWindow.ets      // 弹窗子窗界面
│  │     └──PageNoCustom.ets                   // 非custom节点界面
|  ├──resources         			            // 资源文件目录
├──entry/src/ohosTest/
├──ets
|   |---index.test.ets                          // 示例代码测试代码

具体实现

  • 获取并注册ArkUI_AccessibilityProvider指针、为custom RenderNode构建native节点树并挂载到NodeContent、在provider回调中构建并返回 ArkUI_AccessibilityElementInfo列表、处理无障碍动作并发送异步事件、以及对话框/子窗口的provider注册与内容管理,源码参考:AccessibilityMaker.cpp
    • 通过调用OH_ArkUI_NativeModule_GetNativeAccessibilityProvider和OH_ArkUI_AccessibilityProviderRegisterCallbackWithInstance函数获取并注册ArkUI_AccessibilityProvider指针。
    • 通过调用nodeApi->createNode、nodeApi->setAttribute、nodeApi->addChild、OH_ArkUI_NodeContent_AddNode函数为custom RenderNode构建native节点树并挂载到NodeContent。
    • 通过调用OH_ArkUI_AddAndGetAccessibilityElementInfo、OH_ArkUI_AccessibilityElementInfoSetElementId、OH_ArkUI_AccessibilityElementInfoSetChildNodeIds在provider回调中构建并返回无障碍元素信息。
    • 通过调用ExecuteAccessibilityAction和SendAccessibilityAsyncEvent处理无障碍动作并发送异步事件。
    • 通过调用ArkUI_NativeDialogAPI_1::create、setContent、show、以及为customNode调用OH_ArkUI_NativeModule_GetNativeAccessibilityProvider进行弹窗、子窗口的provider注册与内容管理。

相关权限

不涉及。

依赖

不涉及。

约束与限制

1.本示例仅支持标准系统上运行,支持设备:default、tablet。

2.本示例为Stage模型静态编译模式,支持API26版本SDK,版本号:6.0.0.0,镜像版本号:OpenHarmony_6.0.0.0。

3.本示例需要使用DevEco Studio 6.0.0 Release及以上版本才可编译运行。

4.仅当三方框架将自身UI组件映射为ARKUI_NODE_CUSTOMRenderNode并得到ArkUI_NodeHandle,该接口才会生效,否则会报错误码。

5.本接口通过RenderNode并得到ArkUI_NodeHandle实现三方框架的接入,仅支持ARKUI_NODE_CUSTOM接入无障碍服务,可以实现无障碍控件树获取能力。

6.不支持多线程并发,由三方框架保证调用时的线程安全。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo examples/Accessibility_sta/AccessibilityCustomCapi > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/ace_engine.git
git pull origin master