1. 项目背景与核心价值
居家养老管理系统是近年来智慧养老领域的热门方向。随着我国老龄化程度不断加深,传统的养老院集中照护模式已无法满足多样化需求。根据最新统计,超过90%的老年人更倾向于居家养老,这使得基于移动互联网的居家养老服务平台成为刚需。
这个毕设项目选择Android平台开发,主要考虑三个因素:
- 安卓设备在老年群体中的普及率高达78%(2023年Q3数据)
- 微信小程序的跨平台特性可覆盖子女端使用场景
- 系统级API调用能力优于纯Web方案
整套系统包含三个核心模块:
- 老人终端:安装在老人安卓设备上的主应用,实现紧急呼叫、健康监测、服务预约等功能
- 家属小程序:基于微信的轻量级管理端,支持远程查看老人状态
- 管理后台:SpringBoot构建的服务端,处理业务逻辑和数据存储
提示:选择Android+小程序的混合架构,既保证了核心功能的系统级权限访问,又降低了用户使用门槛,这是当前养老类项目的优选方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计与技术选型
2.1 整体技术栈
采用分层架构设计,各层技术选型如下:
| 层级 | 技术组件 | 选型理由 |
|---|---|---|
| 客户端 | Android(Kotlin) | 原生性能+完整硬件访问权限 |
| 小程序 | Taro+React | 跨平台开发效率高 |
| 服务端 | SpringBoot+MyBatis | 快速构建RESTful API |
| 数据库 | MySQL+Redis | 事务支持+缓存加速 |
| 消息推送 | 极光推送 | 国内到达率98%+ |
2.2 关键通信机制
系统涉及多端实时交互,核心通信方案包括:
- WebSocket长连接:用于紧急告警等实时场景
- HTTP轮询:常规数据同步(间隔15秒)
- MQTT协议:物联网设备数据上报
kotlin复制// Android端WebSocket实现示例
val client = OkHttpClient()
val request = Request.Builder()
.url("wss://yourserver.com/ws")
.build()
val listener = object : WebSocketListener() {
override fun onMessage(webSocket: WebSocket, text: String) {
// 处理推送消息
}
}
client.newWebSocket(request, listener)
2.3 数据安全方案
针对养老系统的敏感性,采用:
- 双Token认证机制(AccessToken+RefreshToken)
- 敏感字段AES-256加密存储
- 关键操作短信二次验证
- 所有API请求签名校验
3. 核心功能实现细节
3.1 老人跌倒检测
通过加速度传感器+机器学习实现:
- 数据采集:获取三轴加速度值(采样率50Hz)
- 特征提取:计算SVN(信号向量幅值)
$$ SVN = \sqrt{x^2 + y^2 + z^2} $$ - 模型判断:使用预训练的SVM分类器识别跌倒模式
python复制# 跌倒检测算法伪代码
def detect_fall(accel_data):
svn = np.sqrt(np.sum(accel_data**2, axis=1))
if (svn.max() - svn.min()) > THRESHOLD:
return True
return False
3.2 用药提醒系统
实现要点:
- 采用WorkManager实现精准定时
- 本地数据库存储用药计划
- 多种提醒方式组合(通知+铃声+震动)
xml复制<!-- AndroidManifest.xml 配置 -->
<service
android:name=".MedicationService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"/>
3.3 远程视频协助
基于WebRTC的实现流程:
- 信令服务器建立连接
- 交换SDP和ICE候选
- 建立P2P连接
- 视频流传输(H.264编码)
- 自适应码率控制
4. 开发中的典型问题与解决方案
4.1 安卓权限管理
常见坑点及应对:
- 动态权限申请遗漏(如后台定位)
- 不同厂商的权限策略差异
- 安卓10+的文件访问限制
解决方案:
kotlin复制// 完善的权限请求流程
val permissions = arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_EXTERNAL_STORAGE
)
ActivityResultContracts.RequestMultiplePermissions().run {
registerForActivityResult(this) { results ->
if (results.all { it.value }) {
// 权限获取成功
}
}.launch(permissions)
}
4.2 小程序兼容性问题
典型问题:
- iOS端webview缓存策略不同
- 安卓端键盘遮挡输入框
- 各微信版本API支持差异
调试技巧:
- 使用vConsole输出日志
- 真机远程调试(iOS需配置合法域名)
- 版本灰度发布验证
4.3 服务端性能优化
针对养老系统突发流量的处理:
- 接口响应时间监控(Prometheus+Grafana)
- 数据库读写分离配置
- 热点数据Redis缓存
- 弹性扩容方案(K8s HPA)
5. 项目部署与远程调试
5.1 安卓应用发布
关键步骤:
- 生成签名密钥(建议使用256位RSA)
- 配置Gradle签名信息
- 生成APK/AAB包
- 上传至应用市场或私有分发平台
注意:养老类应用需特别注意隐私政策合规,建议参考《移动互联网应用程序个人信息保护管理规定》完善用户协议。
5.2 小程序上线流程
特殊要求:
- 医疗健康类目需资质审核
- 必须配置服务器域名白名单
- 用户隐私协议强制弹窗
5.3 远程调试方案
推荐三种方式:
- ADB远程连接(需设备开启调试模式)
bash复制
adb connect device_ip:5555 - 微信小程序真机调试(扫码即可)
- 浏览器远程调试(Chrome DevTools)
6. 项目扩展与定制建议
6.1 功能扩展方向
- 智能硬件对接(血压仪、手环等)
- 语音交互优化(方言支持)
- 大数据分析(异常行为预警)
6.2 界面定制方案
可采用:
- 换肤框架(如Android的Theme)
- 动态布局配置(JSON描述UI)
- 小程序端使用TDesign组件库
6.3 商业化落地建议
- 政府补贴申请(智慧养老试点)
- 保险机构合作(健康数据变现)
- 社区服务接入(O2O模式)
实际开发中发现,老年用户对界面字体大小特别敏感。我们在测试中收集到:当字体小于18sp时,60岁以上用户的误操作率会上升300%。因此最终将所有关键文本设置为可动态调整(18sp-24sp范围),这个细节在需求文档中往往被忽视,但对用户体验影响巨大
