单元三 音乐播放与播放控制功能开发
本单元实现歌曲播放和播放控制。MusicService 管理 MediaPlayer 和播放状态;MusicListFragment 接收歌曲点击,PlayerFragment 显示底部播放栏,提供歌曲信息、播放按钮和进度条。
一、学习目标
素质目标
| 序号 | 目标内容 |
|---|---|
| 1 | 建立按职责划分分析页面、服务和播放器之间数据流的意识。 |
| 2 | 形成在每个播放阶段检查按钮、歌曲信息、时间文本和进度条是否同步的习惯。 |
| 3 | 建立生命周期意识,在页面退出和服务销毁时检查绑定关系、协程任务和播放器资源。 |
能力目标
| 序号 | 目标内容 |
|---|---|
| 1 | 能够启动、绑定和解除绑定 MusicService,由服务统一管理音频播放。 |
| 2 | 能够使用 MediaPlayer 完成歌曲准备、播放、暂停、上一首和下一首操作。 |
| 3 | 能够使用 StateFlow 和协程同步播放状态、歌曲信息和播放进度。 |
| 4 | 能够实现 SeekBar 拖动跳转,并在合适的生命周期回调中取消任务和释放资源。 |
二、本单元工作内容
本单元完成以下工作:
- 创建
MusicService,由MainActivity启动,两个 Fragment 分别绑定服务。 - 在
MusicService中保存歌曲列表,使用 MediaPlayer 准备和播放在线音频。 - 将歌曲列表的点击操作交给
MusicService,点击歌曲后即可听到声音。 - 定义
PlaybackState,通过 StateFlow 更新播放栏的歌曲信息和播放图标。 - 接入暂停、继续、上一首和下一首按钮,定时更新播放进度,并支持拖动 SeekBar 跳转。