< 返回项目列表

/// 宜康管家 - 手绘风服药提醒与血压监测

宜康管家(控压)— 手绘风服药提醒与血压监测

一、项目概述

高血压患者需要长期按时服药并定期监测血压,但市面上多数健康管理应用界面冰冷、操作复杂,且服药提醒不够精确(依赖 JS 定时器,App 被杀后失效)。宜康管家(控压) 是一款面向高血压患者的手绘风格健康管家应用,以智能服药提醒血压监测记录为核心功能,在 Android 端使用原生 AlarmManager 精确闹钟确保提醒不遗漏,UI 采用独特的手绘美学设计,让健康管理更有温度。

  • 项目形态:原生移动应用(Android 主力 + iOS + HarmonyOS)
  • 核心能力:智能服药提醒(原生闹钟)、血压等级监测、服药历史追踪、完全离线使用
  • 适用场景:高血压及慢性病患者日常服药管理与血压监测

二、业务痛点与目标

痛点

  • 慢性病患者需长期按时服药,但常因遗忘或外出导致漏服
  • 普通提醒类 App 依赖 JS 定时器,App 被系统杀死后提醒失效
  • 血压数据记录分散,缺乏等级分类与可视化呈现
  • 医疗类应用界面过于冰冷,老年用户使用门槛高

目标

  • 实现可靠的服药提醒,即使 App 不在前台也能准时提醒
  • 提供血压等级分类(正常/正常高值/1-3级高血压),帮助患者自我评估
  • 采用手绘风格 UI,降低使用门槛,提升亲和力
  • 完全离线运行,无需注册、无需联网,保护用户隐私

三、技术方案与架构

技术栈

层级技术说明
跨平台框架uni-app x (DCloud)支持 Android / iOS / HarmonyOS
前端框架Vue 3(Composition API)<script setup> 模式
开发语言UTS (TypeScript 方言)uni-app x 原生开发语言
模板格式.uvueuni-app x Vue 单文件组件
样式方案SCSS + 手绘主题不均匀圆角 + 粗边框 + 投影
原生插件yk-native-alarm (UTS)Android AlarmManager 精确闹钟
本地存储uni.getStorageSync / setStorageSync完全离线数据持久化
构建工具Vite + @dcloudio/vite-plugin-uniHBuilderX 管理
图标方案jk-icon (iconify)Material Design Icons 自定义字体

项目组织

宜康管家/
├── pages/                         # 5 个应用页面
│   ├── index/index.uvue           # 首页 — 今日用药列表 + 状态切换
│   ├── add-medicine/add-medicine.uvue  # 添加/编辑药品表单
│   ├── detail/detail.uvue         # 药品详情(倒计时 + 7天历史)
│   ├── records/records.uvue       # 血压记录(测量 + 历史)
│   └── mine/mine.uvue            # "我的" 页面(关于 + 使用说明)
├── components/                    # 可复用组件
│   ├── TabBar/TabBar.uvue         # 底部导航栏(首页/记录/我的)
│   ├── TimePicker/TimePicker.uvue # 时间选择器(AM/PM + 小时/分钟网格)
│   └── FrequencyPicker/FrequencyPicker.uvue  # 频率选择器(每日/自定义星期)
├── utils/                         # 工具模块
│   ├── storage.uts                # 数据持久化(药品、历史、血压记录)
│   ├── frequency.uts              # 频率解析与校验
│   ├── NotificationService.uts    # 核心提醒引擎(JS + 原生双方案)
│   └── platform-notification/     # 平台专属通知
│       ├── android.uts            # Android 原生闹钟调度
│       └── ios.uts                # iOS push 消息调度
├── uni_modules/
│   ├── yk-native-alarm/           # 自定义 UTS 原生 Android 闹钟插件
│   └── jk-icon/                   # 自定义图标字体生成器
└── static/                        # 静态资源 + 字体文件

四、核心功能实现

1)智能服药提醒(双引擎架构)

JS 引擎(通用兜底):

  • 30 秒轮询间隔 + 每个药品独立的 setTimeout 调度
  • 适用于非 Android 平台或非"每日1次"的提醒场景

Android 原生引擎(精确可靠):

  • 使用 AlarmManager.setAlarmClock() 设置精确系统闹钟,App 被杀后仍可触发
  • 自定义 BroadcastReceiver(MedicineAlarmReceiver)接收闹钟广播并发送通知
  • 5 分钟间隔重复提醒,持续 30 分钟,直到用户响应
  • 监听 BOOT_COMPLETED 广播,设备重启后自动恢复所有闹钟
  • Android 12+ 自动检查并请求精确闹钟权限

通知交互:

  • 点击"已服":取消今日所有重复提醒,安排明日闹钟
  • 点击"稍后":清除重复提醒,10 分钟后发送新提醒
  • 点击"待服":重置状态为待处理,恢复提醒

2)今日用药管理

  • 根据频率规则和当天星期过滤展示今日用药
  • 每个药品卡片展示:时间(24h + AM/PM)、药名、剂量、状态徽章
  • 状态三态切换:待服已服稍后
  • 支持 FAB 浮动按钮快速添加药品

3)血压监测与等级分类

  • 输入收缩压(30-300)、舒张压(10-200)、心率(20-300),含范围校验
  • 自动按中国高血压防治指南分级,颜色编码展示:
    • 🟢 正常(<120/80)
    • 🟡 正常高值(120-139/80-89)
    • 🟠 1级高血压(140-159/90-99)
    • 🔴 2级高血压(160-179/100-109)
    • ⭕ 3级高血压(≥180/110)
  • 最近一次测量大号卡片突出显示
  • 最多存储 30 条历史记录,最新优先

4)药品详情与服药历史

  • 下次服药倒计时动态计算("X小时 Y分钟")
  • 7 天服药历史视图,颜色编码:
    • 红色 = 已服(✓ 图标)
    • 黄色 = 今天(○ 图标)
    • 灰色 = 错过/跳过(✗ 图标)
  • 编辑和删除药品功能

五、设计系统 — 手绘风格

项目采用独特的手绘风格设计,打破医疗类应用的冰冷感:

配色

用途颜色说明
背景#fdfbf7暖米白色
卡片#ffffff / #fff9c4白色 / 暖黄色
主色#ff4d4d红色 — 行动按钮、已服状态
边框#2d2d2d深灰粗边框

手绘特征

  • 不均匀圆角:卡片 18rpx 6rpx 18rpx 6rpx,模拟手绘不规则感
  • 粗边框 + 偏移投影border: 3rpx solid #2d2d2d + box-shadow: 8rpx 8rpx 0 0 #2d2d2d
  • 手写字体:标题使用 font-family: cursive, sans-serif

六、项目亮点

可靠性

  • Android 端使用原生 AlarmManager 精确闹钟,即使 App 不在前台也能准时提醒
  • 设备重启后自动恢复所有闹钟,确保提醒不丢失
  • 基于 SharedPreferences 去重,防止重复安排

隐私性

  • 完全离线运行,无需注册、无需联网
  • 所有数据通过 uni.setStorageSync 本地存储
  • 无远程推送、无数据上报

体验感

  • 手绘风格 UI 降低使用门槛,亲和力强
  • 三态状态切换(待服/已服/稍后)交互简洁
  • 血压等级颜色编码,一目了然

七、可扩展与复盘

  • iOS 原生提醒:当前 iOS 使用 uni.createPushMessage 延迟调度,后续可开发原生 UTS 插件实现更精确的本地通知
  • 数据导出:支持将血压记录导出为 PDF/Excel,方便就医时提供
  • 趋势图表:增加血压趋势折线图,帮助患者观察长期变化
  • 家人共享:通过局域网或蓝牙实现家属端同步查看老人用药与血压状态
  • 鸿蒙原生:适配 HarmonyOS NEXT 原生开发