学习完“计算器” “视频播放器” “蓝牙聊天”以后,对安卓利用的开发我们基本上就入门70%了。
现在,我们将在之前学习的基础上,进1步完善我们要掌握的安卓开发技术,开发1个“音乐播放器”。
当完成这个“音乐播放器”利用后,我们对安卓的利用开发就完全的入门,能和大部份安卓开发者侃侃而谈了,固然更重要的是能够开发更多功能全面、复杂的利用程序了。
本文针对的读者是:
在开始之前,假定各位已做好了以下准备:
本文的代码,可以从安豆网的示例代码中下载。
音乐是我们平常必备的精神食粮,每一个人的手机里面1定会有1个音乐播放器。在座公交时,它会陪伴着我们;在运动的时候,它会陪伴着我们;睡觉前,它一样会陪伴着我们。
与之前计划产品的思路1样,我们先要做加法,尽量的把音乐播放器可以具有的功能发掘出来;然后再做减法,把不实用、或投入性价比不高的功能放1放;最后,再根据用户的反馈、加上上1版产品留下的遗憾,进行产品的升级。
让我们把有限的精力集中到最为重要的功能上面去。
音乐播放器我们已见过很多了,它们的功能愈来愈高级,最早只能播放本地装备上存储的音乐,现在进化的还能够播放网络端端音乐了。
我们就先来为自己的音乐播放器来做个头脑风暴吧,看看它可以具有哪些功能:
可以添加的功能实在是太多了,这个清单实在是不能包括其万1。
从上面列出的明细可以看出,能够赋予这个聊天利用的功能实在是太多了,因此我们必须根据我们的能力和精力来进行挑选,做功能的减法。
大体上看,上面的功能清单将功能分成了两块,
加入网络方面的功能是1个很好的想法,不过就目前来讲,我们啥也没有,还是先把更加基础简单的功能实现了吧。因此,我们决定先做好本地播放器的功能,其它的以后再说。
在实现本地音乐播放器的进程中,我们也选择避繁就简的原则,对那些不是原则上重要的功能能省就省,做到尽可能简单。
根据上面设计的原则,我们来肯定音乐播放器的具体功能:
这里我们再增加1个福利,为音乐播放器增加1个桌面小工具。当它放到桌面上以后,用户能很方便的控制音乐的播放。
在桌面小工具上,可以显示音乐的封面,歌曲的名字,和控制它的播放、暂停、上1首、下1首。
因此,对视频播放器的界面进行了以下的设计:
全部音乐播放的流程应当是,
MusicListActivity
通太长按,开始选择多首音乐,组成1个播放列表;MusicService
,MusicService
操作PlayListContentProvider
清空原本的播放列表,然后将这份新的列表存储到PlayListContentProvider
当中;MusicListActivity
上的播放按钮时,MusicService
开始从播放列表获得第1首曲子开始播放;MusicService
将当前播放的进度实时更新到PlayListContentProvider
中;MusicService
都将通知给MusicListActivity
,让其能够同步的改变界面显示;MusicListActivity
能通过调用MusicService
提供的接口控制音乐的暂停、继续、播放上1首、下1首;关于播放的规则是我们自己定义的,如果你有自己的想法,可以在完成音乐播放器的开发后,依照自己的想法修改,做到融会贯通。
我们肯定了音乐播放器应当具有的功能,还需要给出实现这些功能的1些基本假定。
装备上可被播放的音频文件很多很多,多是通话录音,多是语音记事本,为了简便操作,我们将认为音乐文件都放在包括了music
关键字的路径当中;
装备上已准备好自带封面的音乐。比如说1首MP3格式的音乐,它所包括的内容其实不只是音乐本省,还包括了很多元信息,例如歌曲的作者,歌曲的所属专辑,乃至歌曲的专辑封面图片等很多丰富的信息。只不过我们通常只注意到了MP3格式的音乐本身的音乐内容和文件名字,没有直观的看到其它这些信息。元信息是可选的内容,所以有的音乐文件也没有把对应的信息填充到里面去。不过正版版权到音乐供应商都会注意到这些细节,把与这首音乐更多的信息都提供给大家。
我们这里使用的测试音乐都是通过网易云音乐
下载的正版歌曲(你也能够去别的渠道下载正版歌曲,作为调试程序时使用的素材),所以基本上会看到歌曲的封面图片。如果没有封面图片,我们会让利用显示默许的封面图片。
对那些没有在这个阶段加入的功能,期待以后加入吧。
对那些为了简化开发难度、减少开发时间而采取的简单设计,期待在下1版程序中优化和完善吧。
/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
*另外,我们还推出了Arduino智能硬件相干的教程,您可以在我们的网店安豆的杂货铺中购买相干硬件。同时也感谢大家对我们这些码农的支持。
*最后再次感谢各位读者对安豆
的支持,谢谢:)
/*******************************************************************/