一个简单的 Android 音乐播放器示例项目:
项目以“主流程跑通”为目标,代码尽量直观,适合新手阅读与二次开发。
app./gradlew assembleDebug
http://food1.api.sziit.top/music/list,因此在 AndroidManifest.xml 中开启了 android:usesCleartextTraffic="true"。PlayerView + texture_view 来尽量提高兼容性;更推荐在真机上验证播放效果。dl.google.com 出现 TLS 握手失败时的兜底。mm:ss/mm:ssapp/src/main/ AndroidManifest.xml java/com/sziit/musicplayer/ ui/ activity/ # Activity:MainActivity、VideoActivity fragment/ # Fragment:列表页、底部播放器 adapter/ # RecyclerView 适配器 service/ # MusicService:后台播放、列表加载、进度通知 model/ # Song/SongResponse:数据模型 utils/ # HttpUtils、TimeUtils 等工具 listener/ # OnMusicPlayerListener:播放回调接口 res/layout/ # activity/fragment/item 布局 res/drawable/ # 矢量图标等资源
startService(MusicService),让音乐服务常驻。MusicService 使用系统 MediaPlayer 实现音乐播放,负责:
play/pause/resume/seekTo/playNext/playPre 等控制方法Timer 定时回调进度(每秒一次)到 OnMusicPlayerListenerFragment 通过 bindService 拿到 MusicService 实例来调用这些方法。
MusicService 后,设置 OnMusicListLoadListener,接收列表数据并交给 MusicListAdapter 渲染。musicService.play(song) 播放音乐。mv/song/singer 参数。MusicService 并设置 OnMusicPlayerListenermv 地址,播放器界面为 PlayerView(关闭默认控制器,使用自定义播放按钮与 SeekBar)Handler 定时刷新 SeekBar 与 tv_duration 显示