diff --git a/开发进度.md b/开发进度.md deleted file mode 100644 index d99f239..0000000 --- a/开发进度.md +++ /dev/null @@ -1,211 +0,0 @@ -# AutoTime Tracker 开发进度 - -## 📊 总体进度 - -**当前阶段:** Phase 1 - MVP 开发 -**完成度:** 98% - ---- - -## ✅ 已完成功能 - -### Week 1-2: 项目搭建 ✅ -- [x] Flutter 项目初始化 -- [x] 数据库设计 -- [x] UI/UX 设计 -- [x] 基础架构搭建 - -### Week 5-6: 统计与可视化 ✅ -- [x] 数据统计模块 -- [x] 图表组件 -- [x] 主界面开发 - -### Week 3-4: 核心功能开发 ✅ -- [x] 数据存储模块(SQLite) - - [x] 数据库初始化 - - [x] 表结构创建 - - [x] 索引优化 -- [x] 数据访问层(DAO) - - [x] AppUsageDao - 应用使用记录 - - [x] DailyStatsDao - 每日统计 -- [x] 分类服务(CategoryService) - - [x] 预设分类规则 - - [x] 自定义分类管理 - - [x] 分类查询 -- [x] 统计服务(StatisticsService) - - [x] 今日统计计算 - - [x] 效率评分算法 - - [x] 专注度评分算法 - - [x] 周/月统计 -- [x] 状态管理(Riverpod) - - [x] StatisticsProvider - - [x] TodayStatsProvider - - [x] WeekStatsProvider - - [x] TopAppsProvider -- [x] 界面集成真实数据 - - [x] TodayScreen 使用数据库数据 - - [x] 加载状态处理 - - [x] 错误处理 -- [x] 时间追踪服务(Platform Channel)✅ - - [x] Flutter 侧接口实现 - - [x] iOS Screen Time API 集成 - - [x] Android Usage Stats API 集成 - - [x] 权限管理 - - [x] 数据同步逻辑 - - [x] 后台同步服务 - - [x] 权限引导界面 - ---- - -## 🚧 进行中功能 - -无 - ---- - -## 📋 待开发功能 - -### 优先级高 -- [ ] **原生 API 实际实现** - - [ ] iOS Screen Time API 完整实现(需要真实设备测试) - - [ ] Android Usage Stats API 完整实现(需要真实设备测试) - -### 优先级中 -- [ ] **测试与优化** - - [ ] 单元测试 - - [ ] 性能优化 - - [ ] Bug 修复 - -- [ ] **上架准备** - - [ ] 应用图标和启动画面 - - [ ] 应用商店资料 - - [ ] 隐私政策文档 - -### 优先级低(Phase 2) -- [ ] Widget 小组件 -- [ ] 高级统计分析 -- [ ] 机器学习分类 - ---- - -## 📁 已创建文件 - -### 数据库层 -- ✅ `lib/database/database_helper.dart` - 数据库初始化 -- ✅ `lib/database/app_usage_dao.dart` - 应用使用记录 DAO -- ✅ `lib/database/daily_stats_dao.dart` - 每日统计 DAO -- ✅ `lib/database/time_goal_dao.dart` - 时间目标 DAO - -### 服务层 -- ✅ `lib/services/category_service.dart` - 分类服务 -- ✅ `lib/services/statistics_service.dart` - 统计服务 -- ✅ `lib/services/time_tracking_service.dart` - 时间追踪服务 -- ✅ `lib/services/background_sync_service.dart` - 后台同步服务 -- ✅ `lib/services/export_service.dart` - 数据导出服务 - -### 状态管理 -- ✅ `lib/providers/statistics_provider.dart` - 统计相关 Provider -- ✅ `lib/providers/time_tracking_provider.dart` - 时间追踪 Provider -- ✅ `lib/providers/background_sync_provider.dart` - 后台同步 Provider - -### 界面层 -- ✅ `lib/screens/today_screen.dart` - 已集成真实数据 -- ✅ `lib/screens/permission_screen.dart` - 权限引导界面 -- ✅ `lib/screens/category_management_screen.dart` - 分类管理界面 -- ✅ `lib/screens/goal_setting_screen.dart` - 目标设定界面 -- ✅ `lib/screens/export_data_screen.dart` - 数据导出界面 -- ✅ `lib/screens/data_privacy_screen.dart` - 数据与隐私页面 -- ✅ `lib/screens/about_screen.dart` - 关于页面 - -### 原生层 -- ✅ `ios/Runner/TimeTrackingPlugin.swift` - iOS Platform Channel -- ✅ `ios/Runner/AppDelegate.swift` - iOS 插件注册 -- ✅ `android/app/src/main/kotlin/com/autotime/tracker/TimeTrackingPlugin.kt` - Android Platform Channel -- ✅ `android/app/src/main/AndroidManifest.xml` - Android 权限配置 - ---- - -## 🔧 技术实现详情 - -### 数据库结构 - -**app_usage 表:** -- 应用使用记录 -- 索引:start_time, category, package_name - -**daily_stats 表:** -- 每日统计数据 -- 索引:date - -**app_category 表:** -- 应用分类规则 -- 索引:package_name - -**time_goal 表:** -- 时间目标设定 - -### 核心算法 - -**效率评分算法:** -- 工作时间占比:40% -- 学习时间占比:30% -- 娱乐时间占比(越低越好):30% - -**专注度评分算法:** -- 基于应用切换频率 -- 每小时切换 < 10 次 = 100分 -- 每小时切换 > 50 次 = 0分 - ---- - -## 🐛 已知问题 - -1. **iOS Screen Time API 实现** - - 当前提供了基本框架 - - 实际 API 使用方式可能需要根据 Apple 文档调整 - - 某些系统应用可能无法追踪 - -2. **Android 权限授予** - - 需要用户手动在系统设置中授予权限 - - 应用无法直接请求权限 - - 需要引导用户到设置页面 - -3. **后台同步限制** - - iOS 和 Android 都对后台运行有严格限制 - - 后台同步可能被系统终止 - - 建议使用系统提供的后台任务机制 - ---- - -## 📝 下一步计划 - -### 立即任务 -1. **完善时间追踪服务** - - 优化 iOS Screen Time API 实现 - - 完善错误处理 - - 添加重试机制 - -2. **完善界面功能** - - 分类管理页面 - - 目标设定页面 - - 数据导出功能 - -3. **测试和优化** - - 添加单元测试 - - 性能测试 - - 用户体验优化 - - 后台同步优化(WorkManager/Background Tasks) - ---- - -## 📈 进度统计 - -- **总任务数:** 36 -- **已完成:** 35 (97%) -- **进行中:** 0 (0%) -- **待开始:** 1 (3%) - ---- - -**最后更新:** 2024-11-13 - diff --git a/快速启动指南.md b/快速启动指南.md deleted file mode 100644 index 5879401..0000000 --- a/快速启动指南.md +++ /dev/null @@ -1,116 +0,0 @@ -# AutoTime Tracker - 快速启动指南 - -## 🚀 立即运行 - -### 1. 安装依赖 - -```bash -flutter pub get -``` - -### 2. 运行项目 - -#### Windows 用户(推荐) - -**方式 1:使用运行脚本(最简单)** -```bash -# 双击运行 运行.bat 或在 PowerShell 中运行 -.\运行.ps1 -``` - -**方式 2:直接运行命令** -```bash -# Windows 桌面应用 -flutter run -d windows - -# Web 服务器模式(推荐,兼容性最好) -flutter run -d web-server -# 运行后会显示 URL,在浏览器中打开即可 - -# Edge 浏览器 -flutter run -d edge -``` - -#### Mac/Linux 用户 - -```bash -# iOS 模拟器 -flutter run -d ios - -# Android 模拟器/设备 -flutter run -d android - -# 或指定设备 -flutter devices # 查看可用设备 -flutter run -d -``` - -#### 启动 Android 模拟器(无需 Android Studio) - -```bash -# 1. 查看可用模拟器 -flutter emulators - -# 2. 启动模拟器 -flutter emulators --launch - -# 3. 运行应用 -flutter run -``` - -**提示:** 如果还没有模拟器,可以使用 Android Studio 创建,或者使用物理设备(启用 USB 调试后直接 `flutter run`)。 - -## 📱 界面说明 - -### 主界面(Today) -- **总时长显示**:大字体显示今日总使用时长 -- **效率评分**:基于时间分配的效率评分(0-100%) -- **分类饼图**:可视化展示各分类时间分布 -- **Top 应用**:显示今日使用时间最长的 5 个应用 - -### 统计界面(Stats) -- **时间趋势图**:折线图展示每日总时长趋势 -- **分类对比图**:堆叠柱状图对比各分类时间 -- **应用详情**:查看每个应用的详细使用数据 - -### 设置界面(Settings) -- **应用分类管理**:管理应用分类规则 -- **时间目标设定**:设置每日时间目标 -- **数据与隐私**:数据管理、导出、删除 -- **升级到 Pro**:查看高级功能 - - -## 🐛 常见问题 - -### Q: 运行报错 "No devices found" -**A:** 确保已启动模拟器或连接设备 -```bash -# iOS -open -a Simulator - -# Android -flutter emulators --launch -``` - -### Q: 依赖安装失败 -**A:** 检查网络连接,或使用国内镜像 -```bash -export PUB_HOSTED_URL=https://pub.flutter-io.cn -export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn -flutter pub get -``` - -### Q: 图表不显示 -**A:** 确保已安装 fl_chart 依赖 -```bash -flutter pub get -flutter clean -flutter pub get -``` - -## 📚 相关文档 - -- [README.md](./README.md) - 项目概览 -- [开发进度.md](./开发进度.md) - 开发进度和待办事项 -- [真实数据测试指南.md](./真实数据测试指南.md) - 真实设备测试说明 - diff --git a/真实数据测试指南.md b/真实数据测试指南.md deleted file mode 100644 index 3683d54..0000000 --- a/真实数据测试指南.md +++ /dev/null @@ -1,357 +0,0 @@ -# 真实数据测试指南 - -## 📱 测试真实数据需要什么? - -### ✅ 必须条件 - -1. **真实手机设备**(Android 或 iOS) - - 模拟器无法获取真实的系统使用数据 - - Web 平台不支持系统 API - -2. **安装应用到手机** - - 需要将应用安装到真实设备上 - - 通过 USB 连接或构建 APK/IPA 安装 - -3. **授予系统权限** - - Android: "使用情况访问权限" (Usage Access) - - iOS: Screen Time API 权限 - ---- - -## 🚀 测试步骤 - -### 方式 1:USB 连接调试(推荐,最简单) - -#### Android 设备 - -```bash -# 1. 在手机上启用开发者选项和 USB 调试 -# 设置 → 关于手机 → 连续点击"版本号"7次 -# 设置 → 系统 → 开发者选项 → 启用"USB 调试" - -# 2. 用 USB 连接手机到电脑 - -# 3. 检查设备连接 -flutter devices - -# 4. 运行应用到手机 -flutter run -d - -# 或者直接运行(会自动选择设备) -flutter run -``` - -#### iOS 设备(Mac 用户) - -```bash -# 1. 在 iPhone 上:设置 → 通用 → VPN与设备管理 → 信任电脑 - -# 2. 连接 iPhone 到 Mac - -# 3. 运行应用 -flutter run -d -``` - -**优点:** -- ✅ 实时调试 -- ✅ 支持热重载 -- ✅ 可以看到日志输出 -- ✅ 无需手动安装 - ---- - -### 方式 2:构建安装包(适合分享测试) - -#### Android APK - -```bash -# 1. 构建 APK -flutter build apk - -# 2. APK 文件位置 -# build/app/outputs/flutter-apk/app-release.apk - -# 3. 传输到手机并安装 -# - 通过 USB 传输 -# - 通过云盘/邮件发送 -# - 通过 ADB 安装:adb install build/app/outputs/flutter-apk/app-release.apk -``` - -#### Android App Bundle(用于 Google Play) - -```bash -flutter build appbundle -# 输出:build/app/outputs/bundle/release/app-release.aab -``` - -#### iOS(需要 Apple 开发者账号) - -```bash -# 开发版本 -flutter build ios - -# 或者使用 Xcode 构建和签名 -``` - -**优点:** -- ✅ 可以分享给他人测试 -- ✅ 不需要连接电脑 -- ✅ 可以测试真实使用场景 - ---- - -## 🔐 权限设置 - -### Android 权限设置 - -应用首次运行时,需要引导用户授予权限: - -1. **应用内权限请求** - - 应用会自动显示权限引导界面 - - 点击"去设置"按钮 - -2. **系统设置页面** - - 自动跳转到"使用情况访问权限"设置 - - 找到 "AutoTime Tracker" - - 开启"允许使用情况访问" - -3. **验证权限** - - 返回应用 - - 应用会自动检测权限状态 - - 如果已授予,进入主界面 - -**手动设置路径:** -``` -设置 → 应用 → 特殊应用访问 → 使用情况访问权限 → AutoTime Tracker → 开启 -``` - -### iOS 权限设置 - -1. **应用内权限请求** - - 应用会自动请求 Screen Time API 权限 - - 用户需要明确授权 - -2. **系统设置** - - 设置 → 屏幕使用时间 → 应用限制 - - 确保应用有访问权限 - ---- - -## 📊 测试真实数据 - -### 1. 安装并运行应用 - -```bash -# 连接设备后 -flutter run -``` - -### 2. 授予权限 - -- 按照应用内的引导完成权限设置 - -### 3. 使用手机一段时间 - -- 正常使用手机上的各种应用 -- 系统会自动记录使用数据 - -### 4. 查看数据 - -- 打开应用 -- 查看"Today"页面,应该能看到真实的使用数据 -- 查看"Stats"页面,查看历史统计 - -### 5. 验证功能 - -- ✅ 应用使用时间是否正确 -- ✅ 分类是否正确 -- ✅ 统计数据是否准确 -- ✅ 图表是否正常显示 - ---- - -## 🧪 测试场景 - -### 场景 1:基础功能测试 - -1. 安装应用 -2. 授予权限 -3. 使用手机 1-2 小时 -4. 打开应用查看数据 - -### 场景 2:分类测试 - -1. 使用不同类型的应用(工作、娱乐、社交等) -2. 检查分类是否正确 -3. 手动调整分类(设置 → 应用分类) -4. 验证分类是否生效 - -### 场景 3:目标测试 - -1. 设置每日总时长目标 -2. 设置分类时间限制 -3. 使用手机一段时间 -4. 检查目标完成情况 - -### 场景 4:数据导出测试 - -1. 使用应用一段时间,积累数据 -2. 进入设置 → 数据导出 -3. 导出 CSV 和统计报告 -4. 验证导出文件内容 - ---- - -## ⚠️ 注意事项 - -### 数据延迟 - -- **Android**: 使用情况数据可能有几分钟延迟 -- **iOS**: Screen Time 数据更新较慢 -- **建议**: 使用手机一段时间后再查看数据 - -### 权限限制 - -- **Android**: 某些系统应用可能无法追踪 -- **iOS**: Screen Time API 有严格限制 -- **建议**: 测试时使用常见的第三方应用 - -### 后台限制 - -- 应用需要在后台运行才能持续追踪 -- 某些手机系统会限制后台运行 -- **建议**: 将应用添加到"白名单"或"不受限制" - -### 电池优化 - -- 某些手机会自动优化电池,可能影响后台追踪 -- **建议**: 在电池设置中,将应用设置为"不受限制" - ---- - -## 🔧 调试技巧 - -### 查看日志 - -```bash -# 运行应用时查看日志 -flutter run - -# 或者单独查看日志 -flutter logs -``` - -### 检查权限状态 - -在应用中: -- 设置 → 权限设置 -- 查看权限是否已授予 - -### 验证数据同步 - -1. 使用手机一段时间 -2. 打开应用 -3. 点击刷新按钮 -4. 查看数据是否更新 - ---- - -## 📝 测试清单 - -### 安装测试 -- [ ] 应用可以正常安装 -- [ ] 应用可以正常启动 -- [ ] 没有崩溃或错误 - -### 权限测试 -- [ ] 权限引导界面正常显示 -- [ ] 可以跳转到系统设置 -- [ ] 权限授予后应用可以正常使用 - -### 数据追踪测试 -- [ ] 可以获取应用使用数据 -- [ ] 数据时间戳正确 -- [ ] 应用名称显示正确 -- [ ] 使用时长计算准确 - -### 分类测试 -- [ ] 自动分类正确 -- [ ] 可以手动修改分类 -- [ ] 分类修改后生效 - -### 统计测试 -- [ ] 今日统计正确 -- [ ] 周统计正确 -- [ ] 图表显示正常 -- [ ] 效率评分计算正确 - -### 功能测试 -- [ ] 目标设置功能正常 -- [ ] 数据导出功能正常 -- [ ] 设置保存正常 - ---- - -## 🎯 快速测试流程 - -```bash -# 1. 连接手机 -flutter devices - -# 2. 运行应用 -flutter run - -# 3. 在手机上: -# - 授予权限 -# - 使用手机 10-15 分钟 -# - 打开应用查看数据 - -# 4. 验证数据是否正确显示 -``` - ---- - -## 💡 提示 - -1. **首次测试建议使用物理设备**,模拟器无法获取真实系统数据 -2. **测试前确保手机有足够的电量**,避免测试中断 -3. **建议测试多种应用类型**,验证分类功能 -4. **测试时间建议 1-2 小时**,积累足够的数据 -5. **可以导出数据验证准确性**,检查 CSV 文件内容 - ---- - -## 🐛 常见问题 - -### Q: 应用显示"无数据" - -**A:** -- 检查权限是否已授予 -- 等待几分钟,数据可能有延迟 -- 使用一些应用,确保有使用记录 - -### Q: 某些应用无法追踪 - -**A:** -- 系统应用可能无法追踪(这是系统限制) -- 某些受保护的应用可能无法追踪 -- 这是正常现象 - -### Q: 数据不准确 - -**A:** -- 检查时间同步是否正确 -- 验证应用分类是否正确 -- 检查是否有重复记录 - -### Q: 应用在后台被杀死 - -**A:** -- 将应用添加到电池优化白名单 -- 允许应用后台运行 -- 检查系统后台限制设置 - ---- - -**总结:测试真实数据需要安装到真实手机设备上,通过 USB 连接运行是最简单的方式。** 📱 -