Android解析lrc里的歌词

解析记歌词的类。这是解析.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/我不知道爱是什么.lrc
		FileInputStream 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 35560
				mLyricContent.setLyricTime(LyricTime);
				LyricList.add(mLyricContent);
				mLyricContent = new LyricContent();
			}
		}
		mBufferedReader.close();
		mInputStreamReader.close();
	}

	public int TimeStr(String timeStr) {// 00:40.57
		timeStr = timeStr.replace(":", ".");//00.40.57
		timeStr = timeStr.replace(".", "@");//00@40@57
		String timeData[] = timeStr.split("@");//[00, 40, 57]
		int minute = Integer.parseInt(timeData[0]);//数组里的第1个数据是分0
		int second = Integer.parseInt(timeData[1]);//数组里的第2个数据是秒40
		int millisecond = Integer.parseInt(timeData[2]);//数组里的第3个数据是秒57
		int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;//40000+570=40570
		return 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

 

 

 

 

 

Android解析lrc里的歌词_第1张图片

你可能感兴趣的:(android)