跟着Mars老师
一起写android中的Mp3播放器
真是受益匪浅
再次感谢老师的无私奉献
不过其中问题也确实不少
感觉老师的代码重构做的不够
其中对LRC文件的解析也弄的比较马虎
今天特意花了一天的时间
好好研究了正则表达式
也仔细思索了LRC文件到底应该怎么来解析
以下先分析思路
再给出实现代码
首先
我们应该明白LRC文件的组成
LRC文件本质就是个符合一定格式规范的文本文件
这一点对照XML文件就很好理解了
一个LRC文件的组成
通常由以下几个部分组成
[ti:约定]-------标题
[ar:周惠]------演唱者
[al:周蕙-精选]-------专辑
[00:26.00]远处的钟声回荡在雨里--------每句内容由一个时间点和内容组成
同时应该注意到
[02:23.00][00:49.00]一路从泥泞走到了美景---------在每个内容可能出现多个时间点
然后
我们 用一个实体类
LrcInfo
来封装每个Lrc文件的具体内容
Java代码
packagejavamzd.mp3player.Info;
importjava.util.HashMap;
/**
* 用来封装歌词信息的类
* @author Administrator
*
*/
publicclassLrcInfo {
privateString title;//歌曲名
privateString singer;//演唱者
privateString album;//专辑
privateHashMap infos;//保存歌词信息和时间点一一对应的Map
//以下为getter() setter()
}
3.读入Lrc文件,开始逐行解析
解析步骤:
1.读入文件
2.封装为BufferedReader对象
3.调用readline()方法逐行读取数据,得到String str
4.用parser()方法解析每一条具体的String语句
5.每句解析完后,将得到的内容在LrcInfo对象中进行设置
Java代码
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;<