package com.wm.remusic.lrc;
import android.text.TextUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 默认的歌词解析器
*
* @author Ligang 2014/8/19
*/
public class DefaultLrcParser implements ILrcParser {
private static final DefaultLrcParser istance = new DefaultLrcParser();
public static final DefaultLrcParser getIstance() {
return istance;
}
private DefaultLrcParser() {
}
/***
* 将歌词文件里面的字符串 解析成一个List<LrcRow>
*/
@Override
public List<LrcRow> getLrcRows(String str) {
if (TextUtils.isEmpty(str)) {
return null;
}
BufferedReader br = new BufferedReader(new StringReader(str));
List<LrcRow> lrcRows = new ArrayList<LrcRow>();
String lrcLine;
try {
while ((lrcLine = br.readLine()) != null) {
List<LrcRow> rows = LrcRow.createRows(lrcLine);
if (rows != null && rows.size() > 0) {
lrcRows.addAll(rows);
}
}
Collections.sort(lrcRows);
int len = lrcRows.size();
for (int i = 0; i < len - 1; i++) {
lrcRows.get(i).setTotalTime(lrcRows.get(i + 1).getTime() - lrcRows.get(i).getTime());
}
lrcRows.get(len - 1).setTotalTime(5000);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lrcRows;
}
}