Files
opendance-android/README.md
T

48 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# opendance-android
OpenDance Studio **阶段三**:Android 辅助 App(Kotlin + MediaPipe 端侧推理)。
> **状态:占位仓库**。按《DSH 开发文档:OpenDance Studio》的开发顺序
> (Web 服务端 → Windows 客户端 → Android 辅助 App),本仓库将在阶段二
> (`opendance-windows`)冻结 WebSocket 关键点协议后开始开发。
## 计划技术栈
| 组件 | 选型 |
|---|---|
| 语言 | Kotlin |
| 相机 | CameraX (Apache 2.0) |
| 推理 | MediaPipe Pose (Apache 2.0) |
| 通信 | OkHttp WebSocket (Apache 2.0) |
| UI | Jetpack Compose (Apache 2.0) |
## 计划任务
`T-AND-001` 骨架 → `T-AND-002` CameraX 采集 → `T-AND-003` MediaPipe Pose 推理 →
`T-AND-004` 33 点 → 239 字节帧序列化 → `T-AND-005` WebSocket 推流 + 自动重连 →
`T-AND-006` 连接页 + 主机发现 → `T-AND-007` 运行页 + 状态指示 →
`T-AND-008` 关于页 + 开源声明 → `T-AND-009` APK 打包
## 依赖的契约(已冻结于 opendance-web,v0.1.0)
- `contracts/websocket-keypoints.md` — **239 字节关键点帧**编码规则(本端为发送方)
- 帧头 8 字节:`magic(u16)=0x4F44` + `version(u8)=1` + `flags(u8)` + `frame_id(u32)`
- 33 点 × 7 字节:`x(i16) y(i16) z(i16) conf(u8)`,小端序,归一化系数 32767
- 文本控制帧:`hello` / `welcome` / `config` / `stats` / `bye`
- `contracts/skeleton-topology.md` — MediaPipe 33 点顺序与坐标语义(**顺序一旦冻结不得重排**)
- `contracts/open-source-credits.md` — 关于页必须展示的开源声明(三端共用)
契约地址:https://gitea.kasugano.cn/zijunchiang/opendance-web/src/branch/main/contracts
参考实现:`opendance-web/web-server/src/preprocess/keypoint-codec.ts` 中的
`encodeBinaryFrame()` 即本端序列化器的权威参考。
**任何跨端契约变更必须先回到 `opendance-web` 修改 `contracts/` 并提升版本**,
再在本仓库创建适配任务。
## 关键约束
- 仅使用 MediaPipe 33 点拓扑,**不使用 SMPL**(规避非商用许可限制)
- 本端不做评分与渲染:只负责采集、端侧推理、编码、推流
- 视频帧不离开设备,仅发送 33 个关键点
- 发布产物必须包含关于页开源声明