解析记歌词的类。这是解析.lrc文件里的歌词。
解析歌词使用的是输入流,然后吧歌词和歌词时间放在JavaBean的列表里。具体代码如下:
package com.zzm.android.Handler;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.zzm.android.Entity.LyricContent;/*** 解析lrc文件中的歌词* @author nm* 2014-9-26*/
public class LrcRead {private List<LyricContent> LyricList;// 歌词内容列表 (包括歌词和时间)private LyricContent mLyricContent;// 歌词内容 (包括歌词和时间)public LrcRead() {mLyricContent = new LyricContent();//歌词内容和时间的实体类对象LyricList = new ArrayList<LyricContent>();//歌词内容和时间是实体类对象列表}/*** 解析lrc文件* * @param file* @throws FileNotFoundException* @throws IOException*/public void Read(String file) throws FileNotFoundException, IOException {String Lrc_data = "";File mFile = new File(file);// /mnt/sdcard/我不知道爱是什么.lrcFileInputStream mFileInputStream = new FileInputStream(mFile);InputStreamReader mInputStreamReader = new InputStreamReader(mFileInputStream, "GB2312");BufferedReader mBufferedReader = new BufferedReader(mInputStreamReader);while ((Lrc_data = mBufferedReader.readLine()) != null) {//[ti:我不知道爱是什么] ar:艾怡良]Lrc_data = Lrc_data.replace("[", "");// ti:我不知道爱是什么]Lrc_data = Lrc_data.replace("]", "@");// ti:我不知道爱是什么@String splitLrc_data[] = Lrc_data.split("@");// [00:00.00, 我爱歌词网 www.5ilrc.com]split是去掉@并在此处用逗号分隔成两个字符串。最后放到一个数组里。if (splitLrc_data.length > 1) {mLyricContent.setLyric(splitLrc_data[1]);// [00:00.00, 我爱歌词网 www.5ilrc.com],取数组里面的第2个数据作为歌词。int LyricTime = TimeStr(splitLrc_data[0]);// 取数组里面的第1个数据,放到TimeStr里都转成秒为单位后出来作为歌词时间。0 400 9490 12490 15860 15860 35560mLyricContent.setLyricTime(LyricTime);LyricList.add(mLyricContent);mLyricContent = new LyricContent();}}mBufferedReader.close();mInputStreamReader.close();}public int TimeStr(String timeStr) {// 00:40.57timeStr = timeStr.replace(":", ".");//00.40.57timeStr = timeStr.replace(".", "@");//00@40@57String timeData[] = timeStr.split("@");//[00, 40, 57]int minute = Integer.parseInt(timeData[0]);//数组里的第1个数据是分0int second = Integer.parseInt(timeData[1]);//数组里的第2个数据是秒40int millisecond = Integer.parseInt(timeData[2]);//数组里的第3个数据是秒57int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;//40000+570=40570return currentTime;}public List<LyricContent> GetLyricContent() {return LyricList;}
}
.lrc里的歌词是这样的:
[ti:我不知道爱是什么]
[ar:艾怡良]
[al:电视剧《16个夏天》插曲]
[by:珍妮]
[00:00.00]我爱歌词网 www.5ilrc.com
[00:00.40]我不知道爱是什么 - 艾怡良
[00:09.49]电视剧《16个夏天》插曲
[00:12.49]词:艾怡良
[00:15.86]曲:金贵晟
[00:18.96]
[00:32.85]坦白来说
[00:35.56]我不知道爱是什么
[00:40.57]爱不爱你 多爱你
[00:47.71]诸如此类的这些话
[00:52.11]我都不知道是什么
[00:55.72]所以不要与我交谈
[00:59.28]不要揣测过头
[01:03.63]如果这些都模糊了
[01:06.81]你的基本认知
[01:11.10]如果对你来说不够隽永
[01:18.08]那么欢迎来到我的脑中
[01:23.38]这里对爱没有解释
[01:26.75]只有一些细微的撩动
[01:32.70]
[01:33.62]例如 我直视你的眼神
[01:37.77]与她不同
[01:41.17]我走过你身边的角度
[01:45.76]与她不同
[01:48.89]我开口跟你说话的时机
[01:53.46]与她不同
[01:56.45]我用的词汇艰涩
[02:01.01]与她不同
[02:04.15]
[02:21.18]坦白来说
[02:24.07]我不知道爱是什么
[02:28.91]爱不爱你 多爱你
[02:36.40]诸如此类的这些话
[02:40.50]我都不知道是什么
[02:44.08]所以不要与我交谈
[02:47.70]不要揣测过头
[02:51.67]如果这些都模糊了
[02:55.25]你的基本认知
[02:59.55]如果对你来说不够隽永
[03:06.46]那么欢迎来到我的脑中
[03:11.74]这里对爱没有解释
[03:14.84]只有一些细微的撩动
[03:20.65]
[03:25.49]例如 我直视你的眼神
[03:30.16]与她不同
[03:33.31]我走过你身边的角度
[03:37.84]与她不同
[03:41.41]我开口跟你说话的时机
[03:45.75]与她不同
[03:49.02]我用的词汇艰涩
[03:53.29]与她不同
[03:56.87]例如 我真的在乎
[04:00.13]否则不会沉默
[04:04.38]一如以往面无表情
[04:08.73]却更汹涌
[04:12.19]还期待或许是坏了规则
[04:16.54]要的太多
[04:20.40]或许爱是这样吧
[04:24.42]那我不懂
[04:27.70]
[04:29.15]我是独一无二的
[04:32.02]你懂不懂
[04:35.80]我的爱是什么
[04:39.04]你得自己感受
[04:45.38]Lrc By:珍妮 QQ:929964514