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; } }