一、项目概述
活着吗 (Demumu) 是一个复刻Demumu(”死了么”)核心功能的Android应用,用于每日签到和紧急联系人告警。它通过简单的每日签到功能,记录用户的安全状态,当用户连续2天未签到时,会自动发送邮件通知紧急联系人,确保用户的安全。
二、功能特性
- 每日签到:简单的每日签到功能,记录用户的安全状态
- 紧急联系人告警:连续2天未签到,自动发送邮件通知紧急联系人
- 后台监控:使用WorkManager实现可靠的后台状态检查
- 简洁界面:采用Jetpack Compose构建的现代化UI
- 本地存储:使用Room数据库安全存储用户数据
三、技术栈选择
- 语言:Kotlin
- UI框架:Jetpack Compose
- 架构模式:MVVM
- 数据库:Room
- 后台任务:WorkManager
- 网络请求:Retrofit + OkHttp
- 依赖注入:手动依赖注入
四、项目结构
应用采用清晰的分层架构,符合MVVM设计模式,代码结构如下:
app/src/main/java/com/bugmuxi/demumu/
├── data/
│ ├── dao/ # Room DAO接口
│ ├── database/ # Room数据库配置
│ ├── entity/ # 数据库实体类
│ └── repository/ # 数据仓库层
├── network/ # 网络请求相关
├── ui/
│ ├── screen/ # Compose界面
│ ├── theme/ # 主题配置
│ └── viewmodel/ # ViewModel层
└── work/ # WorkManager后台任务
五、核心功能实现
- 用户设置流程
首次启动应用时,用户需要完成以下设置:
- 输入姓名
- 添加1-3个紧急联系人邮箱
设置界面由SetupScreen.kt实现,使用Jetpack Compose构建,包含表单验证和错误处理逻辑。
- 每日签到功能
主界面中央有一个大型签到按钮,点击即可完成当日签到。签到状态会实时更新,并显示连续签到天数。
主要实现逻辑在MainViewModel.kt和MainScreen.kt中:
- 点击签到按钮调用checkIn()方法
- 检查当天是否已签到
- 如果未签到,创建签到记录并保存到数据库
- 更新UI显示最新的签到状态
- 签到状态显示
主界面会显示:
- 当前签到状态(已签到/未签到)
- 连续签到天数
- 最后签到日期
- 紧急联系人列表
当连续2天未签到时,会显示警告信息,提醒用户系统将在次日发送告警邮件。
六、数据库设计
应用使用Room数据库存储用户信息和签到记录,主要包含以下实体:
- UserInfo:用户信息实体
- id:主键
- name:用户姓名
- emergencyContacts:紧急联系人邮箱列表
- CheckInRecord:签到记录实体
- id:主键
- timestamp:签到时间戳
- date:签到日期(格式:yyyy-MM-dd)
数据访问层通过DAO接口实现,包含以下主要操作:
- 查询和保存用户信息
- 插入签到记录
- 查询今日签到状态
- 获取连续签到天数
- 计算最后一次签到距今的天数
七、后台任务实现
应用使用WorkManager实现可靠的后台状态检查,主要功能包括:
- 每日自动检查签到状态
WorkManagerHelper.kt负责调度后台任务,每天定期执行CheckInWorker。
- 紧急联系人告警逻辑
CheckInWorker.kt实现了核心告警逻辑:
- 检查用户最后一次签到距今的天数
- 如果连续2天未签到,调用邮件发送API
- 发送成功后,显示本地通知提醒用户
- 邮件发送功能
使用Retrofit构建邮件发送API客户端,当需要发送告警时,向配置的API端点发送请求,包含以下信息:
- 用户姓名
- 紧急联系人邮箱列表
- 未签到天数
八、构建和运行步骤
- 克隆项目到本地
- 使用Android Studio打开项目
- 配置邮件发送API地址
在app/src/main/java/com/bugmuxi/demumu/network/RetrofitClient.kt中配置您的邮件发送API地址:
private const val BASE_URL = “https://your-email-api.com/api/”
- 同步Gradle依赖
- 运行应用
九、注意事项
- 后台权限:Android系统对后台任务有严格限制,WorkManager在不同厂商设备上的表现可能不同
- 邮件送达率:邮件可能被识别为垃圾邮件,建议使用专业的邮件发送服务
- 隐私安全:应用仅存储姓名和邮箱,不收集其他个人信息
- 设备时间:应用依赖设备本地时间,如果设备时间被篡改可能影响签到判断
十、后续迭代方向
- 支持短信通知(需付费服务)
- 添加PIN码或手势验证,防止误触签到
- 与智能穿戴设备联动
- 社交功能:好友相互关注签到状态
- 数据统计:查看签到历史记录
十一、总结
活着吗 (Demumu) 安卓版是一个功能简洁但实用的安全监控应用,通过现代的Android技术栈实现了可靠的签到和告警功能。它采用了MVVM架构模式,结合Jetpack Compose、Room数据库和WorkManager等技术,确保了应用的性能和可靠性。
该应用的核心价值在于为用户提供了一种简单但有效的安全保障机制,通过自动化的后台监控和告警功能,让用户和紧急联系人都能及时了解用户的安全状态。







