chenshuais / chenshuais.github.io

0 stars 0 forks source link

音乐播放器思路 #33

Open IAn2018cs opened 4 months ago

IAn2018cs commented 4 months ago

开发背景

为了放松心情,让听歌更加方便快捷,没有广告等其他干扰使用,于是便有了自己写一个音乐播放器的想法。

开发环境搭建

使用Android studio 2.2 进行开发,Java使用的是1.7,最低支持Android4.0.3,api版本15 ; 编译版本Android5.1,api版本22

开发步骤:

1.设计UI界面。

共三个界面(Activity),分别是启动页面,歌曲列表界面和播放界面。

其中歌曲界面包含三个选项,分别是默认列表,我喜欢的,和我的歌单。他们通过viewpager和fragment关联起来,使他们之间可以左右滑动切换。fragment里是一个listview,用来展示歌曲列表。并且给listview设置了点击事件和长按事件,分别用来播放歌曲和添加到其他列表。

2.数据

歌曲是通过Android提供的四大组件之一ContentProvide内容提供者,然后获取内容解析器,就可以查询手机中的歌曲。

3.核心代码是音乐播放的工具类

这里面封装了音乐播放用到的各种方法,有播放,暂停,上一首,下一首,监听音乐进度,获取当前音乐的信息,将音乐的时间格式化,等等。

首先获取了Android提供的音乐播放类MediaPlayer,然后调用它的api,实现播放,暂停等功能,然后封装成各种方法,方便后期调用。其中难度有点大的是监听音乐的进度,采用的方法是开启一个子线程,每隔一秒获取一下当前音乐播放的位置,然后通过接口回调,返回给调用者。

4.如何将默认列表中的歌曲添加到其他列表

采用了在本地建数据库的方法,在数据库中建了两张表,分别是我喜欢表和我的歌单表,表结构为歌曲id,歌曲地址,歌名,作者和时长。方法是当选择添加歌曲时,将歌的信息插入到数据库中对应的表中,执行插入SQL语句,然后通知其他列表去数据库取数据,执行查询SQL语句,然后刷新列表,将歌曲展示到listview上。

5.歌词

暂时使用的是本地的歌词,先在本地搜索歌词文件,.lrc结尾的。然后自定义了一个控件,用来显示歌词。原理是解析本地歌词文件,根据歌词里的时间和对应歌词信息,然后根据歌曲的进度,去绘制对应的歌词文字。

加油