Skip to content

About

一个简易的记录血糖的小工具,支持离线语音识别输入,关怀模式对老年人友好。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

GlucoDaily Logo

GlucoDaily · 糖舒心

专为糖友与银发长辈量身打造的端侧离线智能控糖助手 · 双模无障碍 · 隐私安全

(本项目全流程由 Google Gemini AI 辅助协同架构设计与工程实现)

Google Gemini Kotlin Jetpack Compose Android Support Offline AI License

📖 官方使用说明书:如需了解关怀模式操作、离线语音自然口述规范、临床图表解读与数据备份:
👉 【点击直达下方完整说明书】 (页内秒级平滑定位,无跳转失败问题)
📄 或在 GitHub 查阅独立说明书文件 (USER_GUIDE.md)


📖 项目简介 (Overview)

GlucoDaily(糖舒心) 是一款基于 Kotlin + Jetpack Compose 构建的现代化 Android 血糖与胰岛素随访管理应用。

很多中老年及慢病患者在日常控糖中,常面临传统健康应用**“界面字号太小看不清”、“操作步骤繁琐”、“满屏弹窗广告”、“健康隐私上传云端泄露”等痛点。GlucoDaily 从零重新思考慢病管理交互,首创“标准专业模式 + 适老关怀模式”**无缝切换,并搭载 100% 本地端侧离线语音大模型,无需打字,说一句话即可自动分拣血糖、胰岛素、用药与运动,守护家人健康与隐私。


✨ 核心特性 (Key Features)

👵 1. 适老关怀模式 (Care Mode)

  • 大字无障碍:全界面 24~32sp 强化对比大号字体,告别老花镜。
  • 立体气泡触控:加厚圆角气泡输入框,提供精准点击手感与微步加减步进器(±0.1 mmol/L、±1 单位)。
  • 自然时段防呆:智能锚定当前就餐时段,杜绝未来日期翻页越界。
  • 贴心语音播报:内置高拟真 TTS 语音口播,录入完毕自动复述确认,银发群体零使用门槛。

📊 2. 现代专业看板 (Standard Mode)

  • 卡片流仪表盘与时间轴:空腹、餐前、餐后、睡前全天七大生理时段一目了然。
  • 多维动态走势图:横轴七大时段舒展清晰,结合 3.9~10.0 mmol/L 绿色健康达标区与用药气泡,直观呈现全天血糖起伏与给药关系。
  • 正餐与多加餐录入:支持正餐与点击“+ 新增”添加多项加餐,时间轴卡片逐行展示与独立编辑。
  • 餐后多频段血糖监测:预置餐后半小时、1h、2h,支持点击“+ 新增”自由拓展加测时机。
  • 专业横屏表格与就诊报告:支持一键横屏全景数据透视(0.75x~2.5x 捏合缩放与全折满屏),支持一键导出临床级 Excel (.xlsx) 随访数据表发给医生。

🎙️ 3. 端侧离线智能语音 (SenseVoice-Small)

  • 零网络秒级响应:内置端侧高效语音模型,飞行模式或无网络环境下依然流畅使用。
  • 长文本自然流淌:

    “早起空腹血糖 6.2,打了 8 单位甘精胰岛素,吃了一片二甲双胍,饭后散步了半小时”

  • 智能语义自动解构:全本地正则与语义引擎,一次性自动抽取出 时段、血糖数值、胰岛素规格/剂量、口服药名/剂量、运动饮食 等复合信息。
  • 流式动画质感:动态呼吸波纹,超长语音输入时自动向上平滑隐退,打造沉浸灵动体验。

💊 4. 全场景用药与饮食运动联动

  • 多条目单次录入:告别单条重复提交,单次弹窗即可完整录入血糖、注射、用药、饮食、运动全部指标。
  • 智能药箱记忆:按磺脲类、双胍类、DPP-4、SGLT-2 等自动分类,自动沉淀常用用药历史与剂量,一键点选。

🛡️ 5. 纯本地私密存储 (Local-First Privacy)

  • 本地零外传:所有健康数据仅保存在设备本地 Room SQLite 数据库中,不设云端收集服务器,保护个人医疗隐私。
  • 冷热数据一键备份:支持全量本地数据导出与导入迁移。

📱 界面展示 (Screenshots)

适老关怀模式 · 大字清晰、极简易用

关怀主页 (大卡片直观排版) 适老复合录入 (大字防截断) 智能药箱 (品类/历史/时机)
关怀主页 适老复合录入 智能药箱

智能语音交互 · 连续大段识别与自动提取

语音助理 (流式动效 & 向上滑动隐退) 智能分拣多条实体 (自动归类)
语音助理 支持连续自然口述时段、血糖、胰岛素、用药与运动,本地毫秒级提取并一键保存

标准专业模式 · 丰富图表与数据全景

标准仪表盘 (卡片流看板) 动态血糖趋势 (AGP 曲线) 统计分析 (TIR / 变异度)
标准仪表盘 动态血糖趋势 统计分析

复合录入与横屏全景 · 多加餐与加测拓展

用餐正餐与多加餐拓展 餐后血糖多频段监测 横屏大字全景透视表格
多加餐拓展 餐后多频段 横屏全景表格

📚 详细使用与操作说明书 (User Manual)

本章节为 GlucoDaily 的官方使用指南,涵盖从零安装、适老关怀模式日常使用、离线语音自然口述规范,到专业图表解读与数据备份全流程。

目录索引 (轻点快速定位)


1. 快速入门与权限声明

  • 麦克风权限说明:首次启动请求录音权限,仅用于本地离线声学模型解码。本项目为 100% 离线应用(Local-First),音频数据在手机端侧芯片即时运算,绝不上传任何云端服务器,断网或飞行模式下功能完全一致。
  • 双模式一键自由切换:
    • 在关怀模式右上角点击带关怀手势图标的 模式切换开关,即可切换至标准专业看板;
    • 在标准模式顶部工具栏点击“关怀模式”图标,即可返回大字适老界面。

2. 适老关怀模式使用指南(图文详解)

关怀主页大字看板 记一笔立体大字录入 常用药下拉历史与分类
关怀主页 适老录入 药名下拉菜单
  1. 主看板认知:
    • 顶部显示今日日期,支持向左翻看既往历史,右侧禁止翻到未发生的未来日期;
    • 居中展示今日最新血糖大卡片,以绿色(正常 3.9~10.0)、蓝色(低血糖 < 3.9)、橙色(高血糖 > 10.0)状态胶囊警示。
  2. 大字记一笔手把手流程:
    • 步骤 1:点击右下角橙色 「记一笔」 悬浮大按钮;
    • 步骤 2:顶部轻点切换 早餐 / 午餐 / 晚餐 / 睡前;
    • 步骤 3:气泡输入框采用 32sp 强化居中大字,彻底杜绝文字截断;
    • 步骤 4:点击两侧加大 「-」 / 「+」 触控块,血糖以 ±0.1 mmol/L 步进微调,胰岛素以 ±1 单位 步进;
    • 步骤 5:点击底部绿色大按钮「保存记录」,即刻入库。
  3. 常用药与胰岛素快速点选:
    • 顶部按双胍类、磺脲类、DPP-4、SGLT-2 等自动分类筛选;
    • 药名输入框右侧点击下拉箭头,即可唤出高频历史用药,轻点自动填入,无需长辈打字;
    • 底部提供 0.25片 / 0.5片 / 1片 / 2片 常用剂量颗粒;
    • “睡前”时段自动隐藏餐前/餐后就餐时机,科学防呆。
  4. TTS 语音复述口播确认:
    • 保存记录后,手机自动语音播报核对(如:“已保存早餐前记录:血糖 6.2,注射甘精胰岛素 8 单位”),长辈不戴眼镜听声即可核对确认。
  5. 横屏大字全景表格与一键导出随访表格:
    • 点击主页的放大横屏按钮,或横置手机,进入全览大字排列表;点击右上角 「导出表格」 可直接生成带专业样式的 Excel (.xlsx) 随访表格并分享给医生:
横屏大字全景表格 (0.75x~2.5x 捏合缩放) 临床报告一键导出表格 (Excel .xlsx / 微信)
横屏表格 发给医生

3. 端侧离线智能语音操作指南 (SenseVoice AI)

离线智能语音助手
  1. 唤起语音录入:点击主界面底部绿色 「🎙️ 语音记一笔」 麦克风按钮,待声波律动出现并提示“正在倾听中...”即可说话;
  2. 自然口述记录:直接说出要记录的内容(如:“早上空腹血糖 6.2,打了 8 单位甘精胰岛素,吃了一片二甲双胍”),长句时文字自动平滑上滚,始终聚焦最新语句;
  3. 确认卡片信息无误并填入保存:口述完毕点击 「■ 停止」,系统自动解析并卡片化呈现提取的时段、数值与药品,确认无误后点击 「保存记录」 完成录入。

4. 标准专业模式与图表解读

标准看板卡片流 动态血糖趋势 (AGP 风格) 多日聚合统计与 TIR 达标率
标准看板 动态曲线 聚合统计
用餐正餐与多加餐拓展 餐后血糖多频段监测 记录修改与防误触删除
多加餐录入 餐后血糖加测 记录修改
  1. 全天七大生理时段卡片流:空腹、早餐后、午餐前、午餐后、晚餐前、晚餐后、睡前;每餐卡片独立逐行呈现正餐饮食与多加餐明细。
  2. 走势图与达标区间:横轴七大时段两端保持安全间距,文字清晰不遮挡;浅绿背景标示 3.9 ~ 10.0 mmol/L 健康达标靶区,时段上方悬浮用药/胰岛素剂量蓝色气泡。
  3. 正餐与多加餐录入:用餐支持 [正餐] 与点击 [+ 新增] 依次添加的 [加餐1]、[加餐2] 等标签;主看板卡片逐行展示正餐与各项加餐,长按可独立编辑或删除。
  4. 餐后多频段血糖监测:预置 [餐后半小时]、[餐后1h]、[餐后2h],支持点击 [+ 新增] 增加自由复测点。
  5. TIR (Time in Range) 目标范围内时间比与多日聚合:绿色达标区间(3.9 ~ 10.0 mmol/L),《中国 2 型糖尿病防治指南》建议维持 TIR ≥ 70%;变异系数 (CV < 33%) 提示血糖平稳度。
  6. 记录修改与长按防误触删除:点击记录项铅笔图标可重新编辑;长按弹出高对比度防误触二次确认框,安全稳妥。

5. 数据安全与离线备份迁移

  • Local-First 架构:无手机号注册,无账号密码,所有健康记录只保存在本机系统沙盒内的加密 Room SQLite 数据库;
  • 换机数据迁移:进入设置支持全量数据导出为标准备份文件,新手机安装后导入即可无缝恢复所有历史明细。

6. 版本迭代与文档持续维护规范 (Documentation Maintenance Protocol)

  • 代码与文档强同步:凡涉及 Bug 修复、交互微调或新功能上线,必须在提交代码的同时,同步刷新本说明书与 USER_GUIDE.md 中对应的章节描述;
  • 真机全真重新截屏:严禁使用过时设计稿或历史截图,所有 UI 变动模块必须在真实 Android 测试设备上运行最新编译的 APK 截取无遮挡(无 Toast、无通知)高清截图替换至 docs/images/;
  • 长辈视角防呆说明:对新增功能必须详述适用场景、操作步骤与防呆措施,确保老年长辈与家属都能轻松上手。

7. 常见问题排查 (FAQ)

  • Q1: 语音识别提示“未听到声音”?
    请检查系统设置是否允许应用访问麦克风;端侧模型首次初始化约需 1 秒,看到声波律动后再开始口述即可。
  • Q2: 误记了数值或时段如何修改或删除?
    直接点击卡片可重新编辑并修正时段;长按任意记录条目,在弹出的防误触确认框中选择删除。
  • Q3: 换手机后原手机的数据还在吗?
    由于本应用不设云端服务器,换机前请在设置中导出本地备份文件发送到新手机并导入即可。

🛠️ 技术架构 (Architecture)

本项目严格遵循 Google 官方倡导的 Modern Android Architecture (MVVM + Clean Architecture) 与单向数据流 (UDF) 范式:

graph TD
    UI[Jetpack Compose UI Layer] -->|User Actions / Events| VM[ViewModel / StateFlow]
    VM -->|Observes UiState| UI
    VM -->|Invokes UseCases / Repo| REPO[Data Repository Layer]
    REPO -->|Query / Insert| ROOM[(Room SQLite Database)]
    VM -->|Audio Stream| ASR[SenseVoice Offline AI Engine]
    ASR -->|Decoded Text| PARSER[VoiceRecordParser - NLP Extraction]
    PARSER -->|Parsed Entities| VM
Loading

核心技术栈

  • 编程语言:Kotlin 2.0+
  • UI 界面:Jetpack Compose + Material 3 + Accompanist Flow Layout
  • 架构范式:MVVM + Unidirectional Data Flow (StateFlow / SharedFlow)
  • 本地数据库:Jetpack Room 2.6+ (SQLite)
  • 端侧语音大模型:SenseVoice-Small ONNX Runtime / Sherpa-ONNX 离线推理
  • AI 协同工程:Google Gemini
  • 异步处理:Kotlin Coroutines + Flow
  • 触感反馈与动效:HapticFeedback + Jetpack Compose Animation

📂 项目结构 (Project Structure)

app/src/main/java/com/example/
├── MainActivity.kt                  // 入口 Activity,双模切换与沉浸式状态栏配置
├── data/                            // 数据持久化与端侧离线语音
│   ├── AppDatabase.kt               // Room 数据库配置与迁移
│   ├── InsulinDao.kt                // 核心 CRUD 数据访问对象
│   ├── InsulinRecord.kt             // 实体模型 (时段/血糖/胰岛素/用药/饮食/运动)
│   ├── MedicationData.kt            // 常用降糖药字典与分类分类器
│   ├── VoiceRecordParser.kt         // 正则与规则驱动的自然语言实体提取引擎
│   ├── VoiceRecognitionManager.kt   // 离线语音录制与分发调度
│   └── SystemTtsManager.kt          // 关怀模式语音确认口播引擎
├── ui/                              // 界面表现层
│   ├── InsulinTrackerScreen.kt      // 主界面容器与顶层状态脚手架
│   ├── InsulinTrackerViewModel.kt   // 全局 ViewModel,业务逻辑与响应式状态
│   ├── CareFontSize.kt              // 关怀模式大字号系统定义
│   ├── components/
│   │   ├── CareHomeView.kt          // 适老关怀模式主页
│   │   ├── CareRecordDialog.kt      // 适老大字号复合录入弹窗
│   │   ├── SiriVoiceOverlay.kt      // 离线语音流式气泡与上滑隐退交互组件
│   │   ├── RecordTable.kt           // 标准模式多时段对比表格
│   │   ├── TrendChart.kt            // 血糖曲线与 AGP 趋势图表
│   │   ├── StatsView.kt             // 多日聚合统计视图
│   │   ├── FrostedGlassDialog.kt    // 高质感毛玻璃蒙层弹窗
│   │   └── AppleDesignEffects.kt    // 物理弹性与平滑过渡特效
│   └── theme/                       // Material 3 主题系统

🚀 快速上手 (Getting Started)

环境要求

  • Android Studio:Ladybug (2024.2.1+) 或更新版本
  • JDK:OpenJDK 17 / Oracle JDK 17
  • Android SDK:API 35 (Android 15) Target SDK,最低兼容 API 26 (Android 8.0)
  • NDK:26.1+ (用于 ONNX Runtime 离线推理加速)

📥 快速安装体验(普通用户)

💡 无需配置开发环境与模型:
直接前往 👉 GitHub Releases 页面 下载最新版安装包:
GlucoDaily_TangShuXin_v1.0.apk
安装包已全量打包内置了 SenseVoice 离线大模型与语音引擎,直接安装到手机即可体验全部离线功能!


🛠️ 源码编译与 Git LFS 离线模型(开发者)

本项目采用 Git LFS (Large File Storage) 进行了全量端到端托管,端侧离线语音模型(model.int8.onnx,约 228MB)已完全包含在仓库中,实现 100% 开箱即用!

1. 克隆与模型自动拉取

在克隆仓库时,Git LFS 会自动下载离线模型文件;若本地未安装 LFS,也可随时手动拉取:

# 确保已安装 git-lfs(绝大多数 Git 安装包已默认内置)
git lfs install

# 克隆仓库(模型将自动随代码一并拉取到位)
git clone https://github.com/tamako33/GlucoDaily.git
cd GlucoDaily

# 如果之前克隆时未下载大文件,可手动执行:
git lfs pull

2. 离线语音模型目录结构

拉取完成后,模型文件已自动就绪于如下路径:

app/src/main/assets/sense-voice/
├── tokens.txt             ✅ (词表文件,约 316KB)
└── model.int8.onnx        ✅ (SenseVoice-Small INT8 量化模型,约 228MB)

💡 备用镜像源:若因网络原因需要独立下载模型,也可从以下官方源获取同款模型放入上述目录:


💻 编译与运行

  1. 克隆代码仓库

    git clone https://github.com/tamako33/GlucoDaily.git
    cd GlucoDaily
  2. 本地编译 Debug APK

    • Linux / macOS:
      ./gradlew assembleDebug
    • Windows (PowerShell):
      .\gradlew.bat assembleDebug
  3. 安装至真机或模拟器

    adb install -r app/build/outputs/apk/debug/app-debug.apk

🔒 隐私与免责声明 (Privacy & Disclaimer)

  1. 隐私承诺:本项目作为离线优先(Local-First)工具,绝不包含任何第三方跟踪 SDK、广告插件或数据收集服务。麦克风权限仅在用户主动点击语音记录时请求,且所有音频数据直接送入设备芯片本地解码,计算完成后即刻销毁,永不上传。
  2. 医疗免责声明:本项目记录与统计功能仅作为日常自我健康管理参考,不能替代专业医生的诊断、处方及治疗方案。在调整胰岛素用量或更换降糖药物前,请务必咨询专业内分泌科医生。

📄 开源协议 (License)

本项目采用 GNU General Public License v3.0 (GPLv3) 开源协议。


🤝 贡献与致谢 (Credits & Acknowledgements)

  • SenseVoice-Small & FunASR:阿里巴巴通义实验室开源的高性能语音识别大模型
  • Sherpa-ONNX:k2-fsa 团队提供的新一代端侧嵌入式语音识别与语音合成推理引擎
  • Google Jetpack Compose & Material 3:现代化声明式 Android 原生 UI 体系

About

一个简易的记录血糖的小工具,支持离线语音识别输入,关怀模式对老年人友好。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages