国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

andr-oid手機音樂播放器實現歌詞同步

2019-11-02 15:17:00
字體:
來源:轉載
供稿:網友

   最近在做一款android手機上的音樂播放器,學習到了很多東西,像是Fragment,ActionBar的使用等等,這里就先介紹一下歌詞同步的實現問題。

  歌詞同步的實現思路很簡單:獲取歌詞文件LRC中的時間和歌詞內容,然后在指定的時間內播放相應的內容。獲取不難,難就在于如何在手機屏幕上實現歌詞的滾動。

  先上效果圖:

 

  先從最基本的讀取歌詞文件開始:

  Public class LrcHandle {

  private List mWords = new ArrayList();

  private List mTimeList = new ArrayList();

  //處理歌詞文件

  public void readLRC(String path) {

  File file = new File(path);

  try {

  FileInputStream fileInputStream = new FileInputStream(file);

  InputStreamReader inputStreamReader = new InputStreamReader(

  fileInputStream, "utf-8");

  BufferedReader bufferedReader = new BufferedReader(

  inputStreamReader);

  String s = "";

  while ((s = bufferedReader.readLine()) != null) {

  addTimeToList(s);

  if ((s.indexOf("[ar:") != -1) || (s.indexOf("[ti:") != -1)

  || (s.indexOf("[by:") != -1)) {

  s = s.substring(s.indexOf(":") + 1, s.indexOf("]"));

  } else {

  String ss = s.substring(s.indexOf("["), s.indexOf("]") + 1);

  s = s.replace(ss, "");

  }

  mWords.add(s);

  }

  bufferedReader.close();

  inputStreamReader.close();

  fileInputStream.close();

  } catch (FileNotFoundException e) {

  e.printStackTrace();

  mWords.add("沒有歌詞文件,趕緊去下載");

  } catch (IOException e) {

  e.printStackTrace();

  mWords.add("沒有讀取到歌詞");

  }

  }

  public List getWords() {

  return mWords;

  }

  public List getTime() {

  return mTimeList;

  }

  // 分離出時間

  private int timeHandler(String string) {

  string = string.replace(".", ":");

  String timeData[] = string.split(":");

  // 分離出分、秒并轉換為整型

  int minute = Integer.parseInt(timeData[0]);

  int second = Integer.parseInt(timeData[1]);

  int millisecond = Integer.parseInt(timeData[2]);

  // 計算上一行與下一行的時間轉換為毫秒數

  int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;

  return currentTime;

  }

  private void addTimeToList(String string) {

  Matcher matcher = Pattern.compile(

  "[d{1,2}:d{1,2}([.:]d{1,2})?]").matcher(string);

  if (matcher.find()) {

  String str = matcher.group();

  mTimeList.add(new LrcHandle().timeHandler(str.substring(1,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上思县| 吉林省| 额尔古纳市| 娱乐| 康乐县| 岳普湖县| 乐山市| 莱州市| 都江堰市| 微博| 定西市| 乐业县| 攀枝花市| 鹤壁市| 辉县市| 和林格尔县| 泾川县| 兰西县| 渭源县| 乌拉特前旗| 葵青区| 黎城县| 岳阳市| 屏东市| 甘谷县| 清河县| 昆山市| 蒙阴县| 泸西县| 屏东市| 宣汉县| 四会市| 钟祥市| 太仓市| 甘德县| 兰坪| 成武县| 封丘县| 临颍县| 繁昌县| 庄河市|