package com.konka.music.lrc; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.io.IOUtils; import android.text.TextUtils; import com.konka.music.util.DetectEncoding; public class ParserLrc { public static List<LyricObject> parserFile(String path) throws IOException { if (TextUtils.isEmpty(path)) { return null; } return parserFile(new File(path)); } public static List<LyricObject> parserFile( File file) throws IOException { if (!file.exists()) { return null; } ArrayList<LyricObject> mLyricObjects = new ArrayList<LyricObject>(); FileInputStream stream = new FileInputStream(file);// context.openFileInput(file); DetectEncoding de = new DetectEncoding(); String decodeMode = de.detectEncoding(file); final String plurl = IOUtils.toString(stream, decodeMode); String regEx = "\\[(\\d{2}):(\\d{2})\\.(\\d{2})\\]([^\\[]+)"; Pattern pattern = Pattern.compile(regEx); Matcher m = pattern.matcher(plurl); while (m.find()) { try { String lrc=m.group(4).trim(); if(TextUtils.isEmpty(lrc)){ continue; } int minute = Integer.parseInt(m.group(1)); int second = Integer.parseInt(m.group(2)); int millisecond = Integer.parseInt(m.group(3)); int time = minute * 60 * 1000 + second * 1000 + millisecond*10; LyricObject lyricObject = new LyricObject(); lyricObject.setBegintime(time); lyricObject.setLrc(lrc); mLyricObjects.add(lyricObject); } catch (Exception e) { e.printStackTrace(); continue; } } return mLyricObjects; } }