一、本项目完成的功能
1.实现音乐播放器的基本功能:播放音乐,暂停音乐,停止音乐,切换到上一首或者下一首音乐
2.实现一些进阶功能:显示专辑封面、歌曲名称、歌手姓名和进度条
3.调整不同控件的位置、大小,使得整个软件界面看起来大方美观
二、项目的具体步骤
1.基本代码:在MainActivity中,首先初始化一些必要的值,比如音乐播放状态和歌曲名称列表。然后在onCReceiverate函数中,获取页面中各种控件,添加监听器。最后在onClick函数中,对于不同按钮的点击实现不同操作。
在MainActivity中,也是先初始化一些必要的值。然后在prepareAndPlay函数中实现播放音乐的代码。
这些基本代码在以前的课中都学习过,没有难度。
2.这里的难点在于在这两个类Activity和Service中分别实现两个广播。我们需要明确的是MainActivity只负责与页面有关的功能,比如页面显示,监测页面点击等。MusicService只负责与音乐播放有关的功能,比如音乐的暂停和切换等。这两部分功能在两个函数中,但是它们又需要互通消息,因此这里我们采用广播机制实现消息的发送和接受。
第一个需求是MusicService在切换歌曲的时候,需要向MainActivity发送消息,告诉MainActivity需要修改页面的文本框信息了。具体步骤是在MusicService中的onCreate函数中,编写歌曲播放代码,并实现一首音乐播放完毕就向MainActivity发送一个intent。MainActivity需要接收广播,那么就在MainActivity中定义一个ActivityReceiver子类,用来获取MusicService正在播放的歌曲信息。具体步骤还有定义过滤器,注册Receiver,启动intent服务。
第二个需求是MainActivity监测到的用户对页面按钮的点击请求,自己不能实现,需要发送给MusicService让其实现。第二个广播在Activity中的onClick函数中定义intent,对接受到的不同的按钮控制信息向MusicService发送控制信息。然后在MusicService中定义Receiver。
这里需要注意的是,要接收广播,在Activity中用ActivityReceiver类,在Service用BroadcastReceiver类。
三、效果展示
四、代码实现
代码仓库地址:https://gitee.com/lookevin/music-player