来源:AI开发日志公众号专辑「Build Your Own X With AI」
原文链接:https://mp.weixin.qq.com/s?__biz=MzUxMjg3MjE2OA==&mid=2247485994&idx=1&sn=220de837e0f1e4d8ff7f6af5d0489206&chksm=f95c91adce2b18bb7ecf593d6c5477ebaa4de1fbc2c721ad4fdd7c34912906a4444920aa5903#rd

英语音频学习 (English Audio Player)

📱 一款专为小学生设计的英语音频学习 Android 应用

📖 项目简介

英语音频学习是一款专为中国小学生(1-6年级)设计的英语听力学习应用。应用提供课本和单词两种学习模式,帮助孩子通过音频学习提高英语听力和发音能力。

截图

安装

链接: https://pan.baidu.com/s/1hjvHDnAHsCuQhaC5K1LMeQ 提取码:3kxq

✨ 核心特性

🎯 年级选择 - 支持一至六年级,精准匹配学习内容

📚 双模式学习 - 课本朗读和单词发音两种学习方式

🎵 音频播放 - 流畅的音频播放体验,支持播放/暂停/进度控制

🎨 儿童友好界面 - 大按钮、清晰文字、简洁导航

📱 Material Design 3 - 现代化的 UI 设计

♿ 无障碍支持 - 完整的 TalkBack 和语义标签支持

🏗️ 技术架构

架构模式

采用 Clean Architecture 分层架构:

Presentation Layer (UI)

  • Jetpack Compose

  • ViewModels

  • Navigation

Domain Layer (Business Logic)

  • Use Cases

  • Domain Models

Data Layer

  • Repository

  • Data Sources

  • Data Models

技术栈

UI Framework

Jetpack Compose

架构组件

ViewModel, StateFlow, Navigation

音频播放

Android MediaPlayer

依赖注入

手动 DI (ViewModelFactory)

测试

JUnit, MockK, Coroutines Test

语言

Kotlin 2.0.21

最低 SDK

Android 7.0 (API 24)

目标 SDK

Android 14 (API 36)

📁 项目结构

EnglishAudio_Android/

├── app/

│   └── src/

│       ├── main/

│       │   ├── java/com/iosdevlog/englishaudio/

│       │   │   ├── data/              # 数据层

│       │   │   ├── domain/            # 领域层

│       │   │   ├── presentation/      # 表现层

│       │   │   ├── service/           # 服务层

│       │   │   ├── ui/theme/          # UI 主题

│       │   │   └── util/              # 工具类

│       │   ├── res/                   # 资源文件

│       │   └── assets/                # 音频文件

│       └── test/                      # 单元测试

└── .kiro/specs/                       # 项目规格文档

� y快速开始

环境要求

Android Studio Hedgehog (2023.1.1) 或更高版本

JDK 11 或更高版本

Android SDK API 24+

Gradle 8.13.0

安装步骤

克隆项目

git clone https://github.com/build-your-own-x-with-ai/EnglishAudio.git

cd EnglishAudio/EnglishAudio_Android

准备音频文件

将音频文件放置在 app/src/main/assets/ 目录下,按以下结构组织:

assets/

├── 一年级上册课本/

│   ├── 一上英课本unit 1.mp3

│   └── …

├── 一年级上册单词/

│   ├── 【单词】一年级上册Unit 1.mp3

│   └── …

└── …

构建项目

./gradlew assembleDebug

运行测试

./gradlew test

安装到设备

./gradlew installDebug

🎮 使用说明

基本流程

选择年级

  • 在首页选择学生所在年级(一至六年级)

选择类型

  • 选择”课本”或”单词”学习模式

选择单元

  • 从单元列表中选择要学习的单元

播放音频

  • 点击单元卡片开始播放音频

控制播放

  • 使用底部播放栏控制播放/暂停/进度

音频文件命名规范

课本音频

: {年级}上英课本unit {单元号}.mp3

单词音频

: 【单词】{年级}年级上册Unit {单元号}.mp3

示例:

一上英课本unit 1.mp3

【单词】三年级上册Unit 5.mp3

🧪 测试

项目包含完整的单元测试覆盖:

运行所有测试

./gradlew test

运行特定测试

./gradlew test –tests ”LocalAudioDataSourceTest”

查看测试报告

open app/build/reports/tests/testDebugUnitTest/index.html

测试覆盖

✅ LocalAudioDataSource - 文件名解析和加载逻辑

✅ AudioRepository - 数据过滤、缓存和错误处理

✅ ViewModels - 状态管理和业务逻辑

📐 架构设计

数据流

User Action → ViewModel → Use Case → Repository → Data Source

StateFlow

UI (Compose)

核心组件

  1. 数据层 (Data Layer)

LocalAudioDataSource: 从 assets 加载音频文件

AudioRepository: 管理音频数据,提供缓存机制

  1. 领域层 (Domain Layer)

Use Cases: GetGradesUseCase, GetCategoriesUseCase, GetUnitsUseCase

PlaybackState: 播放状态管理

  1. 表现层 (Presentation Layer)

Screens: GradeSelectionScreen, CategorySelectionScreen, UnitGridScreen

ViewModels: 管理 UI 状态和业务逻辑

  1. 服务层 (Service Layer)

AudioPlayerService: 音频播放控制和状态管理

🎨 UI/UX 设计

设计原则

简洁直观

  • 大按钮、清晰文字、简单导航

儿童友好

  • 明亮色彩、友好图标、易于理解

无障碍

  • 完整的语义标签和 TalkBack 支持

响应式

  • 适配不同屏幕尺寸

主题配色

Primary

蓝色系 (#4A90E2)

Secondary

紫色系 (#7B68EE)

Accent

金色 (#FFD700)

🔧 配置说明

Gradle 配置

android {

compileSdk = 36

defaultConfig {

minSdk = 24

targetSdk = 36

}

}

依赖版本

Kotlin: 2.0.21

Compose BOM: 2024.09.00

Coroutines: 1.9.0

Navigation: 2.8.5

Lifecycle: 2.9.4

📝 开发规范

代码风格

遵循 Kotlin 官方编码规范

使用有意义的变量和函数命名

添加必要的注释和文档

Git 提交规范

feat: 新功能

fix: 修复 bug

docs: 文档更新

style: 代码格式调整

refactor: 重构

test: 测试相关

chore: 构建/工具相关

🗺️ 路线图

[ ] 添加收藏功能

[ ] 支持播放列表

[ ] 添加学习进度跟踪

[ ] 支持离线下载

[ ] 添加学习统计

🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

Fork 本项目

创建特性分支 (git checkout -b feature/AmazingFeature)

提交更改 (git commit -m ‘Add some AmazingFeature’)

推送到分支 (git push origin feature/AmazingFeature)

开启 Pull Request

📄 许可证

本项目采用 MIT 许可证

👥 作者

iOSDevLog - GitHub

🙏 致谢

感谢所有贡献者

感谢 Android 和 Jetpack Compose 团队

感谢开源社区

Made with ❤️ for Chinese elementary students learning English

image-1

image-2

image-3

image-4