当然可以!以下是为你量身定制的一篇 Android 音乐播放器项目总结博客,适合发布在个人技术博客、掘金、CSDN 或 GitHub Pages 上。内容清晰、结构完整,既有技术细节,也有开发心得。
🎵 从零开始打造一个 Android 音乐播放器(Kotlin + Jetpack Compose)
本文记录了一个基于 Kotlin 和 Jetpack Compose 的简易音乐播放器的开发过程,涵盖项目搭建、依赖管理、UI 设计与核心逻辑实现。适合初学者快速上手 Android 开发。
🧩 项目简介
这是一个极简版的 Android 音乐播放器 App ,使用 Jetpack Compose 构建 UI,采用 Kotlin 协程 处理异步任务,支持基本的播放控制:
- 播放 / 暂停
- 切换上一曲 / 下一曲
虽然功能简单,但完整覆盖了现代 Android 应用开发的核心流程。
🛠️ 技术栈
| 技术 | 版本/说明 |
|---|---|
| Kotlin | 2.0.0 |
| Android Gradle Plugin (AGP) | 8.7.0 |
| Jetpack Compose | 1.5+ |
| Gradle | 8.6+ |
| Android Studio | Bumblebee 或更高版本 |
📁 项目结构
EmptyActivity/
├── build.gradle.kts # 根项目配置
├── gradle/libs.versions.toml # 依赖版本统一管理
└── app/
├── build.gradle.kts # 模块配置
└── src/main/
├── MainActivity.kt # 主 Activity
└── ui/
└── MusicPlayer.kt # 组合式 UI 组件
✅ 第一步:初始化项目
使用 Android Studio 创建新项目:
- 打开 Android Studio → New Project
- 选择 "Compose Activity"
- 命名为
EmptyActivity,语言选 Kotlin
⚠️ 注意:默认模板会生成
MainActivity.kt和MainScreen,我们稍后替换为自定义播放器界面。
🔧 第二步:配置插件与依赖
1. gradle/libs.versions.toml
[versions]
agp = "8.7.0"
kotlin = "2.0.0"
compose = "1.5.0"
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
[libraries]
compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" }
compose-material = { group = "androidx.compose.material", name = "material", version.ref = "compose" }
2. 根项目 build.gradle.kts
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.kapt) apply false
}
✅ 使用
apply false表示这些插件只用于版本声明,实际应用在模块中。
3. app/build.gradle.kts
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
}
android {
namespace = "com.example.emptyactivity"
compileSdk = 35
defaultConfig {
applicationId = "com.example.emptyactivity"
minSdk = 24
targetSdk = 35
versionCode = 1
versionName = "1.0"
}
buildFeatures {
compose = true
}
}
dependencies {
implementation(libs.compose.ui)
implementation(libs.compose.material)
}
🎨 第三步:构建 UI 界面
MainActivity.kt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MusicPlayerTheme {
MusicPlayer()
}
}
}
}
MusicPlayer.kt
@Composable
fun MusicPlayer() {
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Bottom
) {
Spacer(modifier = Modifier.weight(1f))
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
Button(onClick = { /* 上一曲 */ }) {
Text("上一曲")
}
Button(onClick = { /* 播放 */ }) {
Text("播放")
}
Button(onClick = { /* 暂停 */ }) {
Text("暂停")
}
Button(onClick = { /* 下一曲 */ }) {
Text("下一曲")
}
}
}
}
@Composable
fun MusicPlayerTheme(darkTheme: Boolean = false, content: @Composable () -> Unit) {
MaterialTheme(
colorScheme = if (darkTheme) DarkColorScheme else LightColorScheme,
content = content
)
}
💡 使用
Column+Row实现底部按钮布局,Spacer占位让按钮固定在底部。
🔊 第四步:添加音频播放功能
1. 添加权限
在 AndroidManifest.xml 中添加:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
2. 使用 MediaPlayer 播放音频
class MediaPlayerManager {
private val mediaPlayer = MediaPlayer()
fun play(url: String) {
mediaPlayer.apply {
setDataSource(url)
prepareAsync()
setOnPreparedListener { start() }
}
}
fun pause() {
mediaPlayer.pause()
}
fun stop() {
mediaPlayer.stop()
mediaPlayer.release()
}
fun next() {
// TODO: 切换到下一首歌曲
}
fun previous() {
// TODO: 切换到上一首歌曲
}
}
🚀 可以结合
ViewModel和StateFlow实现状态管理,提升可维护性。
🌟 项目亮点
| 亮点 | 说明 |
|---|---|
| ✅ 使用 Jetpack Compose | 声明式 UI,代码简洁易读 |
| ✅ Kotlin DSL + libs.versions.toml | 依赖版本统一管理,避免冲突 |
| ✅ 插件化配置 | 分离根项目与模块职责,便于团队协作 |
| ✅ 响应式设计 | 支持不同屏幕尺寸 |
| ✅ 易扩展 | 可轻松加入播放列表、进度条、封面图等 |
🚫 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
Plugin not found: org.jetbrains.kotlin.kapt |
缺少版本或重复声明 | 使用 alias(libs.plugins.kotlin.kapt) 并确保版本一致 |
| UI 不显示 | setContent 未调用 |
确保 MainActivity 正确设置了 setContent |
| 播放失败 | 权限缺失或 URL 错误 | 添加网络权限并检查音频地址 |
📈 后续优化方向
- ✅ 加入播放进度条(
Slider) - ✅ 显示歌曲名称和艺术家
- ✅ 支持本地音频文件(
FileProvider) - ✅ 使用
WorkManager实现后台播放 - ✅ 添加 Hilt 或 Koin 实现依赖注入
- ✅ 引入
Room数据库保存播放历史
🧠 开发心得
- Jetpack Compose 是未来:它让 UI 开发变得像写网页一样直观。
- 版本管理很重要 :
libs.versions.toml能有效避免版本冲突。 - 分层设计是关键:将 UI、业务逻辑、数据源分离,才能写出可维护的代码。
- 不要怕"小"项目:哪怕只是几个按钮,也能帮你掌握完整开发流程。
📄 结语
这个小小的音乐播放器,虽然是一个入门级项目,但它涵盖了 Android 开发中的核心技能:
👉 项目搭建、依赖管理、UI 设计、事件处理、多媒体操作......
当你看到手机屏幕上那四个按钮成功响应点击时,那种成就感是无价的。
💬 "每一个伟大的 App,都始于一个简单的想法。"
📎 附录:GitHub 仓库(可选)
你可以将项目上传至 GitHub,方便分享和迭代:
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/yourname/music-player.git
git push -u origin main
📚 参考资料
📌 如果你喜欢这篇文章,欢迎点赞、收藏、转发!也欢迎留言交流你的开发经验 😊