diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..c61ea33 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 5d4bf6e..50fe5ea 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,7 +37,7 @@ com.example.m20_gamepad/ │ ├── RobotConnection.kt # 连接状态机管理(连接/订阅/心跳/断线判定) │ └── JoystickController.kt # 摇杆输入 → 协议指令映射 ├── video/ -│ └── RtspSurfaceView.kt # RTSP 视频流播放(SurfaceView 层) +│ └── RtspVideoPlayer.kt # RTSP 视频流播放(ExoPlayer + Composable 包装) ├── data/ │ ├── SettingsRepository.kt # 设置项读写(DataStore 封装) │ └── AppSettings.kt # 配置数据类定义 + 默认值 @@ -217,6 +217,8 @@ gradlew installDebug - [x] 状态上报闪烁修复:`_latestStatus` 改用合并策略(`prev.copy`),保留上次报告的非 null 字段,避免 4 个独立订阅交替覆盖导致状态栏/步态按钮闪烁 - [x] 电量显示稳定性优化:`StatusBar` 电量改用独立 `batteryStatus` StateFlow,不依赖 `status?.batteryStatus` - [x] 休眠按钮状态约束:仅非站立状态(空闲/趴下/阻尼等)可切换休眠,站立/RL 控制时禁用 +- [x] RTSP 自动重连:`RtspVideoPlayer` 播放失败后自动重试,指数退避(初始 1s,最大 30s,倍率 2),URL/解码器变化时重置退避状态;覆盖层显示重试次数和倒计时 +- [x] 订阅请求移除:`ProtocolClient` 注释掉 `sendSubscriptionRequests()` 调用,不再在连接时主动订阅状态上报 ### 待办