Skip to content

lithStudy/vocabulary

Repository files navigation

Wear OS 词汇记忆应用

这是一个基于 Wear OS 的智能词汇记忆应用程序,利用 Jetpack Compose 构建界面,旨在帮助用户高效记忆单词。

主要功能

  • 批次学习系统:
    • 将单词分为多个批次进行学习和复习。
    • 智能混合需要复习的单词和新的未学习单词组成记忆批次(目标最多 40 个:20 复习 + 20 新词)。
  • 艾宾浩斯复习计划:
    • 基于简化的艾宾浩斯遗忘曲线,自动计算并安排单词的复习时间。
    • 优先复习到期的单词。
  • 批次内记忆度:
    • 跟踪每个单词在当前学习批次中的记忆熟练度(0 到 4 级)。
    • 通过交互(点击按钮或滑动)动态更新记忆度。
  • 动态 UI 反馈:
    • 当单词记忆度达到 3 级时,自动隐藏中文释义,鼓励用户主动回忆。
    • 界面上显示清晰的记忆等级指示器(圆点)。
  • 微光模式支持:
    • 当手表进入微光模式时,显示简化的低功耗界面,仅保留单词和音标。
    • 黑底灰字设计,最大程度减少OLED屏幕的电量消耗。
    • 自动禁用音频播放和复杂交互,延长电池续航。
  • 多维信息展示:
    • 下滑: 查看单词相关例句 (支持左右滑动切换多条例句)。
    • 上滑: 查看单词的词根词缀信息。
    • 词根页左滑: 查看包含该单词的常见词组及其释义。
  • 直观交互:
    • 主界面左右滑动:
      • 左滑 (下一个):当前单词记忆度 +1,然后导航到下一个未完成的单词。
      • 右滑 (上一个): 导航到列表中的前一个单词(不跳过已完成的),然后将这个到达的单词记忆度 -1(如果大于 0)。
    • 例句界面左右滑动: 切换上一句/下一句。
    • 词根界面左滑: 导航到词组界面。
    • 词组界面右滑: 导航回词根界面。
    • 词根/词组/例句界面上下滑动: 返回单词主界面。
    • 按钮操作: 提供明确的"记住了"和"忘记了"按钮。
      • 点击"记住了" (✓): 将当前单词记忆度 +1,然后导航到下一个未完成的单词 (效果类似左滑)。
      • 点击"忘记了" (✗): 将当前单词记忆度清零,并停留在当前单词
    • 单词在本批次记忆度达到 4 后将不再出现在学习流中(左滑和"记住了"按钮会跳过),直到下一个复习周期。
  • 单词发音: 点击单词旁边的发音图标可播放对应的 MP3 音频。
  • 批次完成提示: 当前批次所有单词都记忆完成后,会显示提示并提供按钮开始下一批。

技术栈

  • 语言: Kotlin
  • UI: Jetpack Compose for Wear OS
  • 架构: MVVM (Model-View-ViewModel)
    • ViewModel: 使用 androidx.lifecycle.ViewModel 管理 UI 状态和业务逻辑。
    • StateFlow: 用于从 ViewModel 向 UI 公开状态。
  • 数据管理:
    • WordRepository: 提供单词数据(当前为内存模拟,未来可扩展至数据库)。
    • Word Data Class: 包含单词信息及记忆状态字段 (isLearned, nextReviewDate, phrases 等)。
  • 音频: Android MediaPlayer
  • 省电优化:
    • 完整支持 Wear OS 微光模式,使用 AmbientLifecycleObserver 实现。
    • 智能资源管理,在微光模式下禁用不必要的元素和操作。
  • 构建: Gradle with Kotlin DSL (build.gradle.kts)

设置与运行

  1. 克隆仓库:
    git clone <repository-url>
    cd vocabulary
  2. 打开项目: 使用 Android Studio 打开项目根目录 (vocabulary)。
  3. 同步 Gradle: 等待 Android Studio 完成 Gradle 同步。
  4. 准备音频文件:
    • 确保 app/src/main/res/raw/ 目录下有对应的 MP3 音频文件。
    • 文件名必须符合 Android 资源命名规范(小写字母、数字、下划线),且不能是 Java/Kotlin 关键字(例如 break 不行)。
    • 脚本 ttt.ps1 (或类似名称的脚本) 可用于批量重命名文件并添加 word_ 前缀。
    • app/src/main/java/com/example/vocabulary/data/WordRepository.kt 中将单词与正确的 R.raw.word_... ID 关联起来。
  5. 运行应用:
    • 选择一个 Wear OS 模拟器或连接一个 Wear OS 设备。
    • 点击 Android Studio 工具栏中的运行按钮 (▶)。

使用说明

  1. 应用启动后会加载第一个学习批次,显示单词主界面。
  2. 界面中央显示当前单词、音标、记忆等级指示器和释义(可能隐藏)。
  3. 操作:
    • 主界面左滑:当前单词记忆度 +1,然后导航到下一个未完成的单词。
    • 主界面右滑: 导航到列表中的前一个单词(不跳过已完成的),然后将这个刚显示的单词记忆度 -1(如果大于 0)。
    • 主界面上滑: 查看当前单词的词根词缀信息。
    • 主界面下滑: 查看当前单词的例句。
    • 例句界面左右滑动: 切换不同的例句。
    • 词根界面左滑: 查看当前单词的常见词组及释义。
    • 词组界面右滑: 返回词根界面。
    • 从例句/词根/词组界面上滑或下滑: 返回单词主界面。
    • 点击绿色对勾按钮 (✓): 将当前单词记忆度 +1,然后导航到下一个未完成的单词。
    • 点击红色叉号按钮 (✗): 将当前单词记忆度清零,并停留在当前单词
    • 点击音量图标: 播放单词发音(如果提供了音频文件)。
  4. 当批次内所有单词记忆度都达到 4 时,会显示"批次完成"信息。
  5. 点击"开始下一批"按钮,应用将加载包含复习词和新词的新批次。
  6. 微光模式:
    • 当手表进入微光模式(屏幕变暗)时,应用将自动切换到省电界面。
    • 此模式下只显示当前学习的单词和音标,使用灰色文字和黑色背景。
    • 微光模式下禁用交互和音频播放,以最大限度节省电量。
    • 当手表恢复活跃状态时,应用将自动返回全功能界面。

项目结构 (简要)

.
├── app/                      # 主应用模块
│   ├── build.gradle.kts      # 应用模块 Gradle 构建脚本
│   ├── src/main/
│   │   ├── java/com/example/vocabulary/
│   │   │   ├── data/         # 数据层 (例如 WordRepository)
│   │   │   ├── domain/       # 领域层 (例如 Word 模型)
│   │   │   └── presentation/ # 表示层 (Activity, Composables, ViewModel, Theme)
│   │   └── res/              # 资源文件 (音频、图标等)
│   └── ...
├── gradle/                   # Gradle Wrapper 和版本目录
│   └── libs.versions.toml    # 依赖库版本管理
├── build.gradle.kts          # 项目级 Gradle 构建脚本
├── settings.gradle.kts       # 项目设置和模块包含
└── README.md                 # 本文件

性能优化

  • 微光模式优化:
    • 使用黑色背景和灰色文本,降低OLED屏幕能耗。
    • 自动禁用动画、交互和音频播放。
    • 简化界面,只保留最必要的信息。
  • Composable重组优化:
    • 使用key参数避免不必要的重组。
    • 在微光模式切换时智能管理资源释放。
    • 仅在必要时播放音频和更新UI。

贡献

欢迎提出问题 (Issues) 或提交合并请求 (Pull Requests)。

许可证

(可以根据需要添加许可证信息,例如 MIT License)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages