GestureDemo 这是一个基于 Android 的手势交互演示项目,展示了如何集成 MediaPipe Tasks Vision 进行实时的手部关键点检测与手势识别,并将其应用于交互式场景中。
- 集成 MediaPipe: 使用最新的 MediaPipe Tasks Vision 库实现高性能的手势识别。
- 实时响应: 基于 CameraX 和异步处理逻辑,实现低延迟的交互体验。
- 多样化演示:
- 石头剪刀布: 识别“拳头”、“手掌”和“胜利”手势与电脑对战。
- 数字识别: 基于手部关键点几何逻辑识别数字 0-5。
- 路径追踪: 追踪食指尖端的移动轨迹,展示精准的空间定位能力。
- 高度自适应: 完美处理相机旋转、镜像以及不同
ScaleType下的坐标映射。 - Jetpack Compose: 完全使用声明式 UI 构建,逻辑清晰。
- 开发语言: Kotlin
- UI 框架: Jetpack Compose
- 相机框架: CameraX
- AI 模型: MediaPipe (Hand Landmarker & Gesture Recognizer)
- 架构模式: MVVM (ViewModel, Repository, Compose)
app/src/main/java/com/ezatgz/gesturedemo/
├── core/ # 核心能力层
│ ├── camera/ # CameraX 封装与 MediaPipe 助手类
│ ├── data/ # 用户偏好与数据仓库
│ └── ui/ # 通用相机预览与关键点绘制组件
├── demos/ # 业务演示层
│ ├── number/ # 数字识别场景
│ ├── path/ # 路径追踪绘图场景
│ └── rps/ # 石头剪刀布游戏场景
├── ui/ # 顶层 UI
│ ├── portal/ # 入口(主菜单)
│ └── theme/ # 颜色、字体与主题定义
└── MainActivity.kt # 应用入口与导航配置
- 坐标映射: 项目在
HandLandmarksCanvas中实现了复杂的坐标变换逻辑,确保在FILL_CENTER模式下,手部骨架能精准覆盖在预览画面上。 - 兼容性: 针对 Android 13/14 上的
SurfaceView可能出现的花屏问题,项目在相关组件中提供了对TextureView的支持。 - 自定义逻辑: 数字识别不仅依赖手势模型,还结合了
MyLib/中探讨的指尖位置几何逻辑,以增强识别的准确性。
| 主界面 | 数字识别 |
|---|---|
![]() |
![]() |
| 路径追踪 | 石头剪刀布 |
![]() |
Powered by MediaPipe & Jetpack Compose.


