解析记歌词的类。这是解析.lrc文件里的歌词。

解析歌词使用的是输入流,然后吧歌词和歌词时间放在JavaBean的列表里。具体代码如下:

 

package com.zzm.android.Handler;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import com.zzm.android.Entity.LyricContent;/** * 解析lrc文件中的歌词 * @author nm * 2014-9-26 */public class LrcRead {private List LyricList;// 歌词内容列表 (包括歌词和时间)private LyricContent mLyricContent;// 歌词内容  (包括歌词和时间)public LrcRead() {mLyricContent = new LyricContent();//歌词内容和时间的实体类对象LyricList = new ArrayList();//歌词内容和时间是实体类对象列表}/** * 解析lrc文件 *  * @param file * @throws FileNotFoundException * @throws IOException */public void Read(String file) throws FileNotFoundException, IOException {String Lrc_data = "";File mFile = new File(file);// /mnt/sdcard/我不知道爱是什么.lrcFileInputStream mFileInputStream = new FileInputStream(mFile);InputStreamReader mInputStreamReader = new InputStreamReader(mFileInputStream, "GB2312");BufferedReader mBufferedReader = new BufferedReader(mInputStreamReader);while ((Lrc_data = mBufferedReader.readLine()) != null) {//[ti:我不知道爱是什么] ar:艾怡良]Lrc_data = Lrc_data.replace("[", "");// ti:我不知道爱是什么]Lrc_data = Lrc_data.replace("]", "@");// ti:我不知道爱是什么@String splitLrc_data[] = Lrc_data.split("@");// [00:00.00, 我爱歌词网 www.5ilrc.com]split是去掉@并在此处用逗号分隔成两个字符串。最后放到一个数组里。if (splitLrc_data.length > 1) {mLyricContent.setLyric(splitLrc_data[1]);// [00:00.00, 我爱歌词网 www.5ilrc.com],取数组里面的第2个数据作为歌词。int LyricTime = TimeStr(splitLrc_data[0]);// 取数组里面的第1个数据,放到TimeStr里都转成秒为单位后出来作为歌词时间。0 400 9490 12490 15860 15860 35560mLyricContent.setLyricTime(LyricTime);LyricList.add(mLyricContent);mLyricContent = new LyricContent();}}mBufferedReader.close();mInputStreamReader.close();}public int TimeStr(String timeStr) {// 00:40.57timeStr = timeStr.replace(":", ".");//00.40.57timeStr = timeStr.replace(".", "@");//00@40@57String timeData[] = timeStr.split("@");//[00, 40, 57]int minute = Integer.parseInt(timeData[0]);//数组里的第1个数据是分0int second = Integer.parseInt(timeData[1]);//数组里的第2个数据是秒40int millisecond = Integer.parseInt(timeData[2]);//数组里的第3个数据是秒57int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;//40000+570=40570return currentTime;}public List GetLyricContent() {return LyricList;}}

.lrc里的歌词是这样的:

 

 

 

[ti:我不知道爱是什么][ar:艾怡良][al:电视剧《16个夏天》插曲][by:珍妮][00:00.00]我爱歌词网 www.5ilrc.com[00:00.40]我不知道爱是什么 - 艾怡良[00:09.49]电视剧《16个夏天》插曲[00:12.49]词:艾怡良[00:15.86]曲:金贵晟[00:18.96][00:32.85]坦白来说[00:35.56]我不知道爱是什么[00:40.57]爱不爱你 多爱你[00:47.71]诸如此类的这些话[00:52.11]我都不知道是什么[00:55.72]所以不要与我交谈[00:59.28]不要揣测过头[01:03.63]如果这些都模糊了[01:06.81]你的基本认知[01:11.10]如果对你来说不够隽永[01:18.08]那么欢迎来到我的脑中[01:23.38]这里对爱没有解释[01:26.75]只有一些细微的撩动[01:32.70][01:33.62]例如 我直视你的眼神[01:37.77]与她不同[01:41.17]我走过你身边的角度[01:45.76]与她不同[01:48.89]我开口跟你说话的时机[01:53.46]与她不同[01:56.45]我用的词汇艰涩[02:01.01]与她不同[02:04.15][02:21.18]坦白来说[02:24.07]我不知道爱是什么[02:28.91]爱不爱你 多爱你[02:36.40]诸如此类的这些话[02:40.50]我都不知道是什么[02:44.08]所以不要与我交谈[02:47.70]不要揣测过头[02:51.67]如果这些都模糊了[02:55.25]你的基本认知[02:59.55]如果对你来说不够隽永[03:06.46]那么欢迎来到我的脑中[03:11.74]这里对爱没有解释[03:14.84]只有一些细微的撩动[03:20.65][03:25.49]例如 我直视你的眼神[03:30.16]与她不同[03:33.31]我走过你身边的角度[03:37.84]与她不同[03:41.41]我开口跟你说话的时机[03:45.75]与她不同[03:49.02]我用的词汇艰涩[03:53.29]与她不同[03:56.87]例如 我真的在乎[04:00.13]否则不会沉默[04:04.38]一如以往面无表情[04:08.73]却更汹涌[04:12.19]还期待或许是坏了规则[04:16.54]要的太多[04:20.40]或许爱是这样吧[04:24.42]那我不懂[04:27.70][04:29.15]我是独一无二的[04:32.02]你懂不懂[04:35.80]我的爱是什么[04:39.04]你得自己感受[04:45.38]Lrc By:珍妮 QQ:929964514

 

 

 

 

 

更多相关文章

  1. Android使用MediaRecorder的stop方法报"stop failed"错误的解决
  2. Android自定义Toast样式和时间
  3. android 利用SimpleDateFormat格式化时间不准确的问题
  4. Android中的SystemClock类
  5. android闹钟实现原理
  6. cocos3.4 lua 工程打包为apk后运行一段时间闪退的问题
  7. Android设置默认时间
  8. Android开发Android(安卓)studio之gradle打包apk重命名的方法
  9. Android(安卓)- 视频提取图片方法

随机推荐

  1. 怎么画人物的眼睛?画漫画人物的眼睛画法
  2. 探索 .NET Core的依赖注入
  3. Diem协会高管:Novi钱包如何修复全球支离破
  4. 完整版Java零基础自学教程+笔记+源码分享
  5. 2021年腾讯面试总结(已拿offer)
  6. 商城列表页和商品详情页
  7. 淘宝 NPM 镜像站切换新域名啦(转载)
  8. 模仿拼多多小程序自动登录思想
  9. 简单理解vuex
  10. 强大的Python图像处理