chore(android): 合并占位说明与阶段三实现
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# 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 个关键点
|
||||
- 发布产物必须包含关于页开源声明
|
||||
Reference in New Issue
Block a user