撸个应用学Android——空灵音乐本地音乐版

前言

第一次写技术博客,首发安卓巴士。使用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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171229G035C800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券