前言
第一次写技术博客,首发安卓巴士。使用Kotlin实现一个简易的本地音乐客户端,部分代码为Java语言,Kotlin可以完美调用Java,Enjoy it!
三方库
Glide
Anko
BaseRecyclerViewAdapterHelper
Greendao
环境准备
项目使用的是最新的 Android Studio3.0 版本,新版的Studio只需要在项目新建时勾选“Include Kotlin support”即可导入Kotlin的支持,无需配置复杂环境。
效果图
项目目录
歌词显示
歌词显示主要实现逻辑件位于view文件夹下的ILrcBuilder、ILrcView、LrcRow、LrcView四个文件。在需要实现歌词显示的Activity中添加如下布局文件即可:
其中LrcRow文件下可以设置歌词的相关属性参数,例如歌词文字的大小、行间距、正在播放歌词的颜色等等。
注:后续扩展在线歌词,歌词路径暂时写死在手机根目录,文件名为“林中鸟.lrc”。
扫描音乐扫描音乐工具类
扫描音乐的实现逻辑如下,DISPLAY_NAME、TITLE、ARTIST、DATA、SIZE、DURATION分别对应了扫描音乐的外部可重命名的文件名、内部音乐文件名、歌手名称、文件所在路径、歌曲的大小、歌曲的时长信息。获取后可用于后续自定义扫描码、歌曲播放设置等处。isAudioControlPanelAvailable()方法是用来设置音效用的,后续会说到。
扫描音乐动画
点击扫描音乐可实现雷达动画,音乐扫描完毕动画结束,实现扫描代码:
动画效果代码如下:
实现音效设置
效果图:
上文提到的isAudioControlPanelAvailable()方法在设置中的音效处调用。AudioSessionId获取当前播放的音乐sessionid,如果将AudioSessionId设为0,则所有在播放的音频都会被影响到。
调用代码:
定时停止播放
音乐播放器一般会实现定时停止播放功能,向TimeStop()方法中输入需要定时的参数。
代码如下:
歌曲控制
暂停播放等不在此赘述,具体可看源码,控制上一首下一首使用了Greendao数据库,扫码歌曲时,数据填入数据库中,下面是返回上一首的实现代码,下一首实现功能类似,使用Greendao主要是用来练练手,没有什么特别的原因。
搜索后音乐列表显示,音乐进度条拖拽快进,扫描音乐条件控制等不多赘述。功能实现并不复杂,为后续添加网络音乐功能做准备,部分功能暂未实现,后续会更新完善。
大家都在看
好文章来之不易,分享至朋友圈让更多朋友受益
欢迎巴友留言,一起探讨成长
安卓巴士作为中国最大的安卓开发者社区,每月前往互联网重点城市举办线下技术沙龙,并长期招募嘉宾讲师及礼品赞助。
有合作意向请直接联系QQ
领取专属 10元无门槛券
私享最新 技术干货