content: package com.wm.remusic.lrc;
  
  import android.text.TextUtils;
  import android.util.Log;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * 每行歌词的实体类，实现了Comparable接口，方便List<LrcRow>的sort排序
   *
   * @author Ligang  2014/8/19
   */
  public class LrcRow implements Comparable<LrcRow> {
  
      /**
       * 开始时间 为00:10:00
       ***/
      private String timeStr;
      /**
       * 开始时间 毫米数  00:10:00  为10000
       **/
      private int time;
      /**
       * 歌词内容
       **/
      private String content;
      /**
       * 该行歌词显示的总时间
       **/
      private int totalTime;
  
      public long getTotalTime() {
          return totalTime;
      }
  
      public void setTotalTime(int totalTime) {
          this.totalTime = totalTime;
      }
  
      public String getTimeStr() {
          return timeStr;
      }
  
      public void setTimeStr(String timeStr) {
          this.timeStr = timeStr;
      }
  
      public int getTime() {
          return time;
      }
  
      public void setTime(int time) {
          this.time = time;
      }
  
      public String getContent() {
          return content;
      }
  
      public void setContent(String content) {
          this.content = content;
      }
  
      public LrcRow() {
          super();
      }
  
      public LrcRow(String timeStr, int time, String content) {
          super();
          this.timeStr = timeStr;
          this.time = time;
          this.content = content;
      }
  
      /**
       * 将歌词文件中的某一行 解析成一个List<LrcRow>
       * 因为一行中可能包含了多个LrcRow对象
       * 比如  [03:33.02][00:36.37]当鸽子不再象征和平  ，就包含了2个对象
       *
       * @param lrcLine
       * @return
       */
      public static final List<LrcRow> createRows(String lrcLine) {
          if (!lrcLine.startsWith("[") || lrcLine.indexOf("]") != 9) {
              return null;
          }
          //最后一个"]"
          int lastIndexOfRightBracket = lrcLine.lastIndexOf("]");
          //歌词内容
          String content = lrcLine.substring(lastIndexOfRightBracket + 1, lrcLine.length());
          //截取出歌词时间，并将"[" 和"]" 替换为"-"   [offset:0]
          System.out.println("lrcLine=" + lrcLine);
          // -03:33.02--00:36.37-
          String times = lrcLine.substring(0, lastIndexOfRightBracket + 1).replace("[", "-").replace("]", "-");
          String[] timesArray = times.split("-");
          List<LrcRow> lrcRows = new ArrayList<LrcRow>();
          for (String tem : timesArray) {
              if (TextUtils.isEmpty(tem.trim())) {
                  continue;
              }
              //
              try {
                  LrcRow lrcRow = new LrcRow(tem, formatTime(tem), content);
                  lrcRows.add(lrcRow);
              } catch (Exception e) {
                  Log.w("LrcRow", e.getMessage());
              }
          }
          return lrcRows;
      }
  
      /****
       * 把歌词时间转换为毫秒值  如 将00:10.00  转为10000
       *
       * @param tem
       * @return
       */
      private static int formatTime(String timeStr) {
          timeStr = timeStr.replace('.', ':');
          String[] times = timeStr.split(":");
  
          return Integer.parseInt(times[0]) * 60 * 1000
                  + Integer.parseInt(times[1]) * 1000
                  + Integer.parseInt(times[2]);
      }
  
      @Override
      public int compareTo(LrcRow anotherLrcRow) {
          return (int) (this.time - anotherLrcRow.time);
      }
  
      @Override
      public String toString() {
          return "LrcRow [timeStr=" + timeStr + ", time=" + time + ", content="
                  + content + "]";
      }
  
  
  }
  