宜康管家(控压)— 手绘风服药提醒与血压监测
一、项目概述
高血压患者需要长期按时服药并定期监测血压,但市面上多数健康管理应用界面冰冷、操作复杂,且服药提醒不够精确(依赖 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 原生开发语言 |
| 模板格式 | .uvue | uni-app x Vue 单文件组件 |
| 样式方案 | SCSS + 手绘主题 | 不均匀圆角 + 粗边框 + 投影 |
| 原生插件 | yk-native-alarm (UTS) | Android AlarmManager 精确闹钟 |
| 本地存储 | uni.getStorageSync / setStorageSync | 完全离线数据持久化 |
| 构建工具 | Vite + @dcloudio/vite-plugin-uni | HBuilderX 管理 |
| 图标方案 | 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 原生开发