DriverTest 驾考知识卡片学习助手 ------ 一款基于 Jetpack Compose 的现代 Android 学习工具
项目简介
DriverTest 是一款专为驾照理论考试打造的 Android 知识卡片学习应用。它采用间隔复习法 ,通过碎片化时间帮助用户高效记忆驾考知识点。应用支持手动输入、拍照 OCR 识别、AI 智能生成三种创建卡片的方式,结合现代化的 Material 3 设计,带来流畅的学习体验。


为什么做这个项目?
考驾照是很多人都会经历的一步,而科目一、科目四的理论考试往往需要记忆大量交通法规、交通标志、安全驾驶等知识点。传统的刷题 App 虽然题库庞大,但缺乏个性化、可定制的复习体验。
DriverTest 的核心理念是:
- 📝 主动构建知识体系 ------ 自己创建卡片的过程本身就是一次深度记忆
- 🤖 AI 辅助内容生成 ------ 接入 DeepSeek 大模型,输入关键词即可自动生成结构化知识点
- 📷 OCR 文字识别 ------ 拍照教材、截图驾考宝典,自动提取文字转为卡片
- 🔁 间隔复习算法 ------ 基于掌握程度动态调整复习计划,让遗忘曲线为你所用
核心功能一览
1. 三种卡片创建方式
| 方式 | 说明 |
|---|---|
| ✍️ 手动输入 | 传统方式,填入标题+内容,适合已有笔记 |
| 📷 拍照 OCR | 利用 Google ML Kit 中文识别,拍教材/截图自动提取文字 |
| 🤖 AI 搜索 | 输入关键词(如"高速公路限速规定"),DeepSeek AI 自动生成结构化卡片 |
2. 智能学习系统
- 翻转卡片交互设计 ------ 点击卡片查看答案,模拟真实记忆检索
- 三档掌握度标记:不熟悉 🔴 / 模糊 🟡 / 掌握 🟢
- 基于掌握程度的间隔复习算法,不熟悉的卡片高频出现,已掌握的卡片逐渐拉长间隔
- 每日自动汇总需要复习的卡片数量
3. 学习统计仪表盘
- 📊 总卡片数、掌握率、今日复习量、连续学习天数 ------ 四个核心指标一目了然
- 📈 每日学习进度柱状图,直观追踪复习趋势
- 📋 每张卡片的详细复习历史记录
4. 个性化设置
- 🔑 自定义 DeepSeek API Key(支持自备 Key)
- 🔔 复习提醒通知(可选)
- 🗑️ 数据导入导出与清空管理
技术架构
本项目采用 MVVM + Repository 架构,结合 Jetpack Compose 声明式 UI,整体技术栈如下:
| 类别 | 技术选型 | 说明 |
|---|---|---|
| 语言 | Kotlin | 100% Kotlin |
| UI | Jetpack Compose + Material 3 | 声明式 UI,Material You 设计 |
| 架构 | MVVM + Repository Pattern | 清晰的分层架构 |
| 依赖注入 | Hilt | Google 推荐的 DI 方案 |
| 本地存储 | Room | SQLite 抽象层,支持 Flow 响应式查询 |
| 网络 | Retrofit + OkHttp | 调用 DeepSeek API |
| OCR | Google ML Kit | 中文文字识别,离线可用 |
| 摄像头 | CameraX | 拍照 OCR 功能 |
| 图片加载 | Coil | Kotlin 协程友好的图片加载库 |
| 导航 | Navigation Compose | 类型安全的声明式导航 |
| JSON | Gson | 序列化/反序列化 |
项目结构
app/src/main/java/com/drivertest/app/
├── data/
│ ├── local/ # Room 数据库、DAO、实体
│ ├── remote/ # DeepSeek API 服务、DTO、拦截器
│ └── repository/ # 数据仓库层(CardRepository、StatsRepository)
├── di/ # Hilt 依赖注入模块(AppModule、DatabaseModule、NetworkModule)
├── domain/model/ # 领域模型(CardSource、ReviewStatus、StatsSummary 等)
├── ocr/ # ML Kit OCR 处理器(中文识别)
├── ui/
│ ├── add/ # 添加卡片页(文本/OCR/AI 三合一)
│ ├── components/ # 通用 UI 组件(EmptyStateView、ErrorDialog 等)
│ ├── learn/ # 学习/复习页(翻转卡片 + 动画)
│ ├── navigation/ # Compose Navigation 导航图
│ ├── settings/ # 设置页(API Key、通知、数据管理)
│ ├── stats/ # 统计页(概览卡片 + 柱状图)
│ └── theme/ # Material 3 主题(动态取色支持)
└── util/ # 工具类
项目共约 50 个 Kotlin 源文件 ,总代码量约 3800 行,结构清晰,非常适合学习 Compose 多页面应用的架构设计。
技术亮点
1. DeepSeek AI 集成
通过 Retrofit 调用 DeepSeek Chat API,发送精心设计的 System Prompt,让 AI 以结构化 JSON 格式返回驾考知识点:
kotlin
interface DeepSeekApiService {
@POST("chat/completions")
suspend fun chatCompletion(@Body request: DeepSeekRequest): DeepSeekResponse
}
使用 API Key 拦截器自动为每个请求附加认证信息,支持用户在设置页面动态配置 Key。
2. Google ML Kit 中文 OCR
利用 Google ML Kit 的 ChineseTextRecognizerOptions,实现离线中文文字识别:
kotlin
private val recognizer = TextRecognition.getClient(
ChineseTextRecognizerOptions.Builder().build()
)
拍照后自动调用 OCR 引擎提取文字,结合协程在 IO 线程异步处理,UI 层通过 StateFlow 响应式更新结果。
3. 间隔复习算法
复习系统核心逻辑:每张卡片复习后标记掌握度,系统根据掌握度计算下次复习时间:
- 不熟悉 → 当天再次出现
- 模糊 → 间隔 1-3 天
- 掌握 → 间隔 3-7 天或更长
每日自动筛选到期卡片,形成当天的复习任务队列。
4. Compose 声明式 UI + Material 3
全量使用 Compose 构建 UI,包括:
LazyColumn实现卡片列表高性能滚动AnimatedVisibility实现卡片翻转动画Canvas绘制每日学习进度柱状图- Material 3 动态取色(Dynamic Color),自适应系统壁纸色调
快速上手
环境要求
- Android Studio Hedgehog (2023.1.1) 或更高
- JDK 17
- Gradle 8.5+
- Android SDK 34
构建步骤
bash
# 1. 克隆仓库
git clone https://github.com/cwh1234/driver_app.git
cd driver_app
# 2. 构建 Debug APK
./gradlew assembleDebug
# 3. 安装到设备
./gradlew installDebug
也可直接用 Android Studio 打开项目,点击 Run ▶️ 一键运行。
配置 DeepSeek API Key
进入应用内「设置」页面,输入你的 DeepSeek API Key 即可启用 AI 搜索功能。不配置 Key 也不影响手动输入和 OCR 功能的使用。
下载体验
📦 最新 APK 请到 GitHub Releases 页面下载
app-release.apk,直接在 Android 设备安装体验。
系统要求:Android 8.0 (API 26) 及以上。
后续规划
- 科目一/四题库导入,一键生成复习卡片
- 交通标志图示识别练习
- 错题本自动汇总
- 桌面小组件(Widget),桌面一键复习
- 多设备数据同步
- 模拟考试模式
开源与贡献
本项目采用 MIT License 开源,代码完全开放,欢迎大家:
- ⭐ Star 支持项目
- 🐛 提交 Issue 反馈问题或建议
- 🔧 提交 Pull Request 贡献代码
- 📢 分享给正在备考驾照的朋友
写在最后
DriverTest 是一个小而美的驾考学习工具,它既是一个实用的备考助手,也是一个不错的 Android 现代开发参考项目。如果你正在学习 Jetpack Compose、Room、Hilt、ML Kit 等技术,这个项目的源码应该能给你一些启发。
当然,它也还有不少可以完善的地方,欢迎大家一起参与,让这个项目变得更好!🚗💨
如果你觉得这个项目对你有帮助,别忘了去 GitHub 点个 Star ⭐!