You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Android UI录制工具:修改框架能否记录触摸/滑动事件?

修改Android框架代码实现触摸/滑动事件记录的可行性

完全可以通过修改Android框架代码实现全局触摸/滑动事件的捕获与记录,下面是具体的实现思路和关键切入点:

核心实现路径

1. 拦截InputManagerService的事件分发

Android系统的所有输入事件(包括触摸、滑动)都由InputManagerService(IMS)统一调度分发,这是捕获全局输入事件最直接的入口:

  • 重点修改frameworks/native/services/inputflinger/InputDispatcher.cpp中的dispatchMotionEvent方法,这个方法是触摸事件分发的核心逻辑。
  • 在事件传递给目标应用之前,你可以在这里提取触摸事件的关键信息:动作类型(ACTION_DOWN/ACTION_MOVE/ACTION_UP)、触摸坐标、时间戳、事件所属的窗口ID等。
  • 拿到这些信息后,既可以直接记录事件日志,也可以触发屏幕截图逻辑(比如调用SurfaceFlinger的截图接口)。

2. 关联应用包名(可选)

如果需要区分事件属于哪个测试应用,可以通过窗口ID关联到对应的应用包名:

  • 从InputDispatcher中获取当前接收事件的窗口信息,再通过WindowManagerService查询该窗口所属的应用进程,进而拿到包名,将其与事件信息一起记录。

注意事项

  • 编译与部署:修改框架代码需要完整编译Android源码,生成定制ROM后刷入测试设备,无法作为普通第三方APP发布。
  • 性能优化:频繁的事件记录和截图会增加系统负载,建议做防抖处理——比如只在ACTION_UP(触摸抬起)或滑动结束时触发截图,或者设置固定时间间隔的截图频率。
  • 权限与兼容性:框架层修改不受普通APP的权限限制,但要注意不同Android版本的框架代码结构差异,比如Android 10+的InputFlinger实现有部分调整。

非框架层替代方案(补充)

如果不想修改系统框架,也可以通过AccessibilityService辅助功能监听触摸事件和界面跳转,但这种方式需要用户手动开启权限,且事件捕获的完整性不如框架层直接拦截。

内容的提问来源于stack exchange,提问作者Kevin Ding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:16:02