{"id":27619518,"url":"https://github.com/lithstudy/vocabulary","last_synced_at":"2025-06-21T12:39:23.686Z","repository":{"id":289306422,"uuid":"970519825","full_name":"lithStudy/vocabulary","owner":"lithStudy","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-23T13:32:53.000Z","size":4631,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T16:10:16.176Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lithStudy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-22T06:20:36.000Z","updated_at":"2025-04-23T13:32:56.000Z","dependencies_parsed_at":"2025-06-21T12:38:56.070Z","dependency_job_id":null,"html_url":"https://github.com/lithStudy/vocabulary","commit_stats":null,"previous_names":["lithstudy/vocabulary"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lithStudy/vocabulary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lithStudy%2Fvocabulary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lithStudy%2Fvocabulary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lithStudy%2Fvocabulary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lithStudy%2Fvocabulary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lithStudy","download_url":"https://codeload.github.com/lithStudy/vocabulary/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lithStudy%2Fvocabulary/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261126206,"owners_count":23113290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-23T05:20:47.099Z","updated_at":"2025-06-21T12:39:18.672Z","avatar_url":"https://github.com/lithStudy.png","language":"Kotlin","readme":"# Wear OS 词汇记忆应用\n\n这是一个基于 Wear OS 的智能词汇记忆应用程序，利用 Jetpack Compose 构建界面，旨在帮助用户高效记忆单词。\n\n## 主要功能\n\n*   **批次学习系统:**\n    *   将单词分为多个批次进行学习和复习。\n    *   智能混合需要复习的单词和新的未学习单词组成记忆批次（目标最多 40 个：20 复习 + 20 新词）。\n*   **艾宾浩斯复习计划:**\n    *   基于简化的艾宾浩斯遗忘曲线，自动计算并安排单词的复习时间。\n    *   优先复习到期的单词。\n*   **批次内记忆度:**\n    *   跟踪每个单词在当前学习批次中的记忆熟练度（0 到 4 级）。\n    *   通过交互（点击按钮或滑动）动态更新记忆度。\n*   **动态 UI 反馈:**\n    *   当单词记忆度达到 3 级时，自动隐藏中文释义，鼓励用户主动回忆。\n    *   界面上显示清晰的记忆等级指示器（圆点）。\n*   **多维信息展示:**\n    *   **下滑:** 查看单词相关例句 (支持左右滑动切换多条例句)。\n    *   **上滑:** 查看单词的词根词缀信息。\n    *   **词根页左滑:** 查看包含该单词的常见词组及其释义。\n*   **直观交互:**\n    *   **主界面左右滑动:**\n        *   **左滑 (下一个):** 将**当前单词**记忆度 +1，然后导航到下一个**未完成**的单词。\n        *   **右滑 (上一个):** 导航到列表中的**前一个单词**（不跳过已完成的），然后将**这个到达的单词**记忆度 -1（如果大于 0）。\n    *   **例句界面左右滑动:** 切换上一句/下一句。\n    *   **词根界面左滑:** 导航到词组界面。\n    *   **词组界面右滑:** 导航回词根界面。\n    *   **词根/词组/例句界面上下滑动:** 返回单词主界面。\n    *   **按钮操作:** 提供明确的\"记住了\"和\"忘记了\"按钮。\n        *   点击\"记住了\" (✓): 将当前单词记忆度 +1，然后导航到下一个**未完成**的单词 (效果类似左滑)。\n        *   点击\"忘记了\" (✗): 将当前单词记忆度清零，并**停留在当前单词**。\n    *   单词在本批次记忆度达到 4 后将不再出现在学习流中（左滑和\"记住了\"按钮会跳过），直到下一个复习周期。\n*   **单词发音:** 点击单词旁边的发音图标可播放对应的 MP3 音频。\n*   **批次完成提示:** 当前批次所有单词都记忆完成后，会显示提示并提供按钮开始下一批。\n\n## 技术栈\n\n*   **语言:** Kotlin\n*   **UI:** Jetpack Compose for Wear OS\n*   **架构:** MVVM (Model-View-ViewModel)\n    *   `ViewModel`: 使用 `androidx.lifecycle.ViewModel` 管理 UI 状态和业务逻辑。\n    *   `StateFlow`: 用于从 ViewModel 向 UI 公开状态。\n*   **数据管理:**\n    *   `WordRepository`: 提供单词数据（当前为内存模拟，未来可扩展至数据库）。\n    *   `Word` Data Class: 包含单词信息及记忆状态字段 (`isLearned`, `nextReviewDate`, `phrases` 等)。\n*   **音频:** Android `MediaPlayer`\n*   **构建:** Gradle with Kotlin DSL (`build.gradle.kts`)\n\n## 设置与运行\n\n1.  **克隆仓库:**\n    ```bash\n    git clone \u003crepository-url\u003e\n    cd vocabulary\n    ```\n2.  **打开项目:** 使用 Android Studio 打开项目根目录 (`vocabulary`)。\n3.  **同步 Gradle:** 等待 Android Studio 完成 Gradle 同步。\n4.  **准备音频文件:**\n    *   确保 `app/src/main/res/raw/` 目录下有对应的 MP3 音频文件。\n    *   文件名必须符合 Android 资源命名规范（小写字母、数字、下划线），且不能是 Java/Kotlin 关键字（例如 `break` 不行）。\n    *   脚本 `ttt.ps1` (或类似名称的脚本) 可用于批量重命名文件并添加 `word_` 前缀。\n    *   在 `app/src/main/java/com/example/vocabulary/data/WordRepository.kt` 中将单词与正确的 `R.raw.word_...` ID 关联起来。\n5.  **运行应用:**\n    *   选择一个 Wear OS 模拟器或连接一个 Wear OS 设备。\n    *   点击 Android Studio 工具栏中的运行按钮 (▶)。\n\n## 使用说明\n\n1.  应用启动后会加载第一个学习批次，显示单词主界面。\n2.  界面中央显示当前单词、音标、记忆等级指示器和释义（可能隐藏）。\n3.  **操作：**\n    *   **主界面左滑:** 将**当前单词**记忆度 +1，然后导航到下一个**未完成**的单词。\n    *   **主界面右滑:** 导航到列表中的**前一个单词**（不跳过已完成的），然后将**这个刚显示的单词**记忆度 -1（如果大于 0）。\n    *   **主界面上滑:** 查看当前单词的词根词缀信息。\n    *   **主界面下滑:** 查看当前单词的例句。\n    *   **例句界面左右滑动:** 切换不同的例句。\n    *   **词根界面左滑:** 查看当前单词的常见词组及释义。\n    *   **词组界面右滑:** 返回词根界面。\n    *   **从例句/词根/词组界面上滑或下滑:** 返回单词主界面。\n    *   **点击绿色对勾按钮 (✓):** 将当前单词记忆度 +1，然后导航到下一个**未完成**的单词。\n    *   **点击红色叉号按钮 (✗):** 将当前单词记忆度清零，并**停留在当前单词**。\n    *   **点击音量图标:** 播放单词发音（如果提供了音频文件）。\n4.  当批次内所有单词记忆度都达到 4 时，会显示\"批次完成\"信息。\n5.  点击\"开始下一批\"按钮，应用将加载包含复习词和新词的新批次。\n\n## 项目结构 (简要)\n\n```\n.\n├── app/                      # 主应用模块\n│   ├── build.gradle.kts      # 应用模块 Gradle 构建脚本\n│   ├── src/main/\n│   │   ├── java/com/example/vocabulary/\n│   │   │   ├── data/         # 数据层 (例如 WordRepository)\n│   │   │   ├── domain/       # 领域层 (例如 Word 模型)\n│   │   │   └── presentation/ # 表示层 (Activity, Composables, ViewModel, Theme)\n│   │   └── res/              # 资源文件 (音频、图标等)\n│   └── ...\n├── gradle/                   # Gradle Wrapper 和版本目录\n│   └── libs.versions.toml    # 依赖库版本管理\n├── build.gradle.kts          # 项目级 Gradle 构建脚本\n├── settings.gradle.kts       # 项目设置和模块包含\n└── README.md                 # 本文件\n```\n\n## 贡献\n\n欢迎提出问题 (Issues) 或提交合并请求 (Pull Requests)。\n\n## 许可证\n\n*(可以根据需要添加许可证信息，例如 MIT License)* ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flithstudy%2Fvocabulary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flithstudy%2Fvocabulary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flithstudy%2Fvocabulary/lists"}