一款完全由AI构建的Android行为追踪应用,支持布尔值(打卡)和数值型记录,提供统计图表、提醒和数据导出/导入功能。

- 行为管理:创建、编辑、归档自定义行为,支持8种颜色选择
- 两种记录类型:
- 布尔型:打卡式记录(是/否),支持选择日期时间
- 数值型:带单位的数值记录(如"ml"、"km"),支持备注
- 统计与图表:
- 布尔型:连续打卡天数、最长连续、总次数
- 数值型:日均值、总次数、总和
- 动态图表(柱状图/折线图),支持7/30/90天时间范围
- 提醒功能:
- 固定时间提醒:每日指定时间
- 间隔提醒:在时间窗口内按间隔重复
- 开机自动恢复提醒
- 数据导出/导入:通过JSON格式完整备份和恢复数据(使用SAF,无需存储权限)
- 主题设置:系统/浅色/深色模式切换,支持Material You动态配色
| 类别 |
技术 |
| 语言 |
Java 21 |
| 最低SDK |
33 (Android 13) |
| 目标SDK |
36 |
| 架构 |
MVVM (Activity + ViewModel + Repository) |
| 数据库 |
Room 2.8.4 |
| UI框架 |
Material Design 3, ViewBinding |
| 图表 |
MPAndroidChart v3.1.0 |
| 序列化 |
Gson 2.13.2 |
| 后台任务 |
WorkManager 2.11.1 |
| 构建工具 |
Gradle 9.1.0 |
app/src/main/java/com/github/timeaissr/behaviortracker/
├── data/ # 数据层
│ ├── entity/ # Room实体
│ │ ├── Behavior.java # 行为实体
│ │ ├── Record.java # 记录实体
│ │ ├── Reminder.java # 提醒实体
│ │ ├── RecordType.java # 记录类型枚举
│ │ └── ReminderType.java # 提醒类型枚举
│ ├── dao/ # 数据访问对象
│ │ ├── BehaviorDao.java
│ │ ├── RecordDao.java
│ │ └── ReminderDao.java
│ ├── converter/
│ │ └── Converters.java # Room类型转换器
│ ├── repository/
│ │ └── BehaviorRepository.java # 统一数据仓库
│ └── AppDatabase.java # Room数据库单例
├── ui/ # 界面层
│ ├── main/ # 主页
│ │ ├── MainActivity.java
│ │ ├── MainViewModel.java
│ │ └── BehaviorAdapter.java
│ ├── add/ # 添加/编辑行为
│ │ ├── AddBehaviorActivity.java
│ │ ├── AddBehaviorViewModel.java
│ │ └── ColorPickerAdapter.java
│ ├── detail/ # 行为详情与统计
│ │ ├── BehaviorDetailActivity.java
│ │ ├── DetailViewModel.java
│ │ └── RecordAdapter.java
│ └── settings/ # 设置
│ └── SettingsActivity.java
├── notification/ # 提醒通知
│ ├── BootReceiver.java # 开机广播接收器
│ ├── ReminderReceiver.java # 提醒广播接收器
│ └── ReminderScheduler.java # 提醒调度器
├── export/ # 数据导出/导入
│ ├── DataManager.java
│ └── ExportData.java
├── util/
│ └── DateUtils.java # 日期工具类
└── BehaviorTrackerApp.java # Application类
# 构建调试版本
./gradlew assembleDebug
# 构建发布版本(含ProGuard混淆)
./gradlew assembleRelease
# 运行单元测试
./gradlew test
# 运行仪器测试(需要设备/模拟器)
./gradlew connectedAndroidTest
# 运行单个测试类
./gradlew test --tests "com.github.timeaissr.behaviortracker.ExampleUnitTest"
# 清理并构建
./gradlew clean assembleDebug
# 安装到设备
./gradlew installDebug
| 字段 |
类型 |
说明 |
| id |
long (自增主键) |
唯一标识 |
| name |
String |
行为名称 |
| recordType |
RecordType |
BOOLEAN 或 NUMERIC |
| unit |
String (可空) |
数值型单位 |
| color |
String |
卡片颜色(十六进制) |
| createdAt |
long |
创建时间戳 |
| archived |
boolean |
软删除标记 |
| 字段 |
类型 |
说明 |
| id |
long (自增主键) |
唯一标识 |
| behaviorId |
long (外键) |
关联行为 |
| timestamp |
long |
记录时间戳 |
| value |
double |
数值(布尔型固定为1.0) |
| note |
String (可空) |
备注 |
| 字段 |
类型 |
说明 |
| id |
long (自增主键) |
唯一标识 |
| behaviorId |
long (外键) |
关联行为 |
| active |
boolean |
是否启用 |
| type |
ReminderType |
FIXED_TIME 或 INTERVAL |
| timeOfDayMinutes |
int |
固定时间(距午夜分钟数) |
| startTimeMinutes |
int |
间隔窗口开始 |
| endTimeMinutes |
int |
间隔窗口结束 |
| intervalMinutes |
int |
间隔分钟数 |