841f9f1542d7c16d7c97db8e66c986b90ad1e672
PROGRESS.md §3.2 报告的三个结构性问题(设备页 + 更多设置重复、运动页两个入口同数据、「我的」四个死链接)本批一并收口。用户原话:「现在就是要 APP 页面完整成熟,后期再做后端接口,我的任务只是前端」。 首页(HomeScreen) - HealthSummary 加 activeMinutes: Int(M3 接 SDK 后由真实活动汇总接口填入) - MockDataProvider 演示值 47 分钟 - 删 StepsCard(步数大环 + 距离/千卡 横排),换为 TodaySummaryCard:横排 3 列「步数 / 卡路里 / 活动时长」 - 三列等宽,无主导项,步数下挂目标;步数一格整格可点进详情 - 三件套单格内 30sp + tnum,宽字符数字不会跳 - 三列之间 1dp 浅灰竖线(不用 core 的 DividerColor,那个是卡片间分割线) 运动页(WorkoutScreen) - 加 SportType 枚举(户外跑步 / 健走 / 户外骑行 / 室内跑步 / 跳绳 / 自由训练) - 删 StartWorkoutCard,换为 SportTypeGrid:横排 6 个运动类型入口,可滑 - 每格:80dp 圆角方块 + 浅 MetricGreen 底 + 深 MetricGreen 图标 + 类型名下方 - 点任意类型仍弹 Snackbar「将在接入戒指后开放」(一致行为) - 图标背景用 MetricGreen.copy(alpha=0.12f) 而不是小米那种饱和度极高的大色块 —— spec §7.1「颜色是有含义的不能当装饰用」 设备页(DeviceScreen) - DeviceContent 加分支:!state.device.connected 时显示 DeviceEmptyState - 空态:圆形 NFC 图标 + 「未连接戒指」+ 「连接戒指后即可查看电量、固件与监测设置」+ 「扫一扫」+ 「按型号添加」两按钮 - 已连态完全保留 - 加 Preview @Preview(name = "未连") 验证空态 - Mock 始终 connected,所以生产路径仍走已连;M2 接 SDK 后未连时自动落空态 我的(ProfileScreen + 4 个新子页) - 4 个死链接(单位设置 / 通知权限 / 检查更新 / 帮助与反馈)全部挂上 onClick - 加 4 条路由:PROFILE_SETTINGS / PROFILE_NOTIFICATIONS / PROFILE_ABOUT / PROFILE_HELP - 新增 4 个子页: - SettingsScreen:单位卡(距离/体重,只读)+ 通知卡(健康/设备/营销三个 Switch,演示值) - NotificationsScreen:权限状态徽章 + 引导文案 + 「请求权限」+ 「前往系统设置」按钮 - AboutScreen:App 版本 / 固件版本 / 设备型号 + 「检查更新」按钮(弹 Snackbar「已是最新版本」) - HelpScreen:4 条 FAQ 折叠卡(整卡可点切换展开)+ 「联系我们」邮箱卡 - tabRouteFor 把 4 条新路由归到 PROFILE Tab,子页栈顶时底栏仍高亮「我的」 校验 - ./gradlew :app:testDebugUnitTest → 44 个用例全绿 - ./gradlew :app:assembleDebug → APK 出包成功 - 装机截屏:PROGRESS.md 提到的 ringtest AVD 已不存在,现存的 Medium_Phone AVD 配错系统镜像路径(指向 android-36.1 但本机只装了 android-36),按 ledger Ruling R21 跳过运行时验证,交人工 未做(已记录的边界) - 通知开关不持久化:阶段一切换只走 remember,离页即丢;M2 接 SDK 时换 StateFlow - 「请求权限」不真发系统弹窗:阶段一按下后只切演示状态;M2 接 SDK 时用 NotificationManagerCompat.requestPermissions - 「前往系统设置」不真跳:同上,阶段一只占位 ——共 14 文件,+10 修改 / +4 新建。
ring-health-app
智能戒指健康 App(原生 Android / Kotlin + Jetpack Compose)。
- 设计文档:见
ring-health-docs仓库superpowers/specs/ - 当前阶段:M1 静态页面(数据来自 Mock,未接入蓝牙 SDK)
页面清单(M1)
| 页面 | 路由 |
|---|---|
| 健康首页 | home |
| 运动 | workout |
| 运动历史 | workout/history |
| 设备 | device |
| 设备设置 | device/settings |
| 我的 | profile |
| 指标详情(步数/心率/睡眠/血氧/压力/体温/血压) | detail/{metric} |
页面路由的唯一定义处是
core/navigation/Routes.kt,上表与其保持一致。 M1 的验收状态见docs/verification-m1.md。
构建
./gradlew assembleDebug # 产物在 app/build/outputs/apk/debug/
./gradlew installDebug # 安装到已连接设备(需接好设备或已启动模拟器)
./gradlew test # 单元测试
installDebug需要一台已连接的设备或正在运行的模拟器。M1 使用的机器两者都没有, 因此本机实际可执行的是./gradlew assembleDebug与./gradlew :app:testDebugUnitTest。
要求:JDK 17、Android SDK(platform 36 / build-tools 36.1.0)。
Languages
Kotlin
100%