以下为旧版代码,新版lrc解析代码已经写完,全面修复兼容性,请直接参考:http://www.qylk.blog.163.com/blog/static/134687356201162023117621/
先定义一个存放每句歌词的类,它定义了每句歌词的起始时间,持续时间,及每句歌词正文,相当于C语言的结构体。
public class LRCbean {
private int beginTime=0;
public int getBeginTime() {
return beginTime;
private int lineTime=0;
private String lrcBody = null;
}
public void setBeginTime(int beginTime) {
this.beginTime = beginTime;
}
public int getLineTime() {
return lineTime;
}
public void setLineTime(int lineTime) {
this.lineTime = lineTime;
}
public String getLrcBody() {
return lrcBody;
}
public void setLrcBody(String lrcBody) {
this.lrcBody = lrcBody;
}
}
歌词解析类如下:
public class LrcUtils {
private TreeMap<Integer, LRCbean> read(File path){//读取歌词
TreeMap<Integer, LRCbean> lrc_read = new TreeMap<Integer, LRCbean>();//临时表
String data =null;
BufferedReader br = null;
FileInputStream stream = null;
try {
stream = new FileInputStream(path);//读入歌词文件流
br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));//向内存写入
} catch (Exception e) {}
try {
while((data=br.readLine())!=null){//逐行读取
if (data.length()>6){//此行有歌词
if (data.charAt(3)==':'&&data.charAt(6)=='.'){//从歌词正文开始
data = data.replace("[", "");
data = data.replace("]", "@");
data = data.replace(".", ":");
String lrc[] = data.split("@");//将时间与歌词分开
String lrcContent= null;