文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
README

ArkTS 注册和取消过滤回调函数(KeyEventFilter)

介绍

WindowManager提供应用窗口的管理能力,可以用于管理多模输入事件。

使用WindowManager模块提供的能力为指定窗口注入触摸事件,仅支持同进程窗口。此操作不会触发窗口焦点、层级变化或拖拽,事件会直接发送给ArkUI。

从API version 20开始支持

效果预览

1、Demo提供发起注入touchEvent事件的按钮,将事件注入到指定按钮的位置,触发指定按钮onClick事件

2、点击测试InjectEvent按钮后,发起事件注入,上方按钮被注入事件,执行了按钮的onClick,显示了当前时间

inject1.jpg

使用说明

点击测试InjectEvent按钮后:注入touchEvent事件,上方发生变化。

工程目录

entry/src/
 ├── main
 │   ├── cpp
 │   │   ├── types
 │   │       ├── libentry
 │   │           ├── Index.d.ts         // 导出的napi函数定义
 │   │           ├── oh-package.json5   // 导出napi函数配置
 │   │   ├── CMakeLists.txt             // CMake配置
 │   │   ├── napi_init.cpp              // napi函数实现
 │   ├── ets
 │   │   ├── entryability
 │   │   ├── entrybackupability
 │   │   ├── pages
 │   │       ├── Index.ets               // 主页面
 │   ├── module.json5
 │   └── resources                       // 静态资源
 ├── ohosTest
 │   ├── ets
 │   │   ├── test
 │   │       ├── Index.test.ets          // 自动化测试代码

具体实现

  • 触摸事件注入功能封装在napi_init.cpp中,源码参考:napi_init.cpp
    • 创建触摸事件对象:使用OH_Input_CreateTouchEvent()创建触摸事件结构体;
    • 设置事件属性:调用OH_Input_SetTouchEventAction、OH_Input_SetTouchEventFingerId、OH_Input_SetTouchEventDisplayX、OH_Input_SetTouchEventDisplayY等函数设置触摸事件的各项属性;
    • 注入触摸事件:调用OH_WindowManager_InjectTouchEvent向指定窗口注入触摸事件;
    • 销毁事件对象:使用OH_Input_DestroyTouchEvent释放触摸事件资源。
  • ArkTS层实现,源码参考:Index.ets
    • 获取窗口ID:通过windowStage.getMainWindowSync()获取窗口属性,取得windowId;
    • 调用注入接口:通过testNapi.injectEvent()调用C++层的注入函数,传入windowId、displayId、坐标、action等参数。

相关权限

不涉及。

依赖

不涉及

约束与限制

1.本示例仅支持标准系统上运行, 支持设备:华为手机、平板、PC、TV、车机、穿戴设备。

2.本示例为Stage模型,支持API20版本SDK,版本号:6.0.0.38,镜像版本号:OpenHarmony-6.0.0.38。

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

下载

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

git init
git config core.sparsecheckout true
echo ArkUISample/FloatingBall > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master