android解析歌词

时间:2024-12-23 16:41:12 来源:语文学习网 作者:管理员

Android

作词:H.U.B.作曲:Emil Carlin

演唱:东方神起

君は谁?心を抜かれ

右にならえ思考停止の果て

监视続け何の为追い诘め

苦労かさんで不実の底へと

If wanna goIf wanna show

If wanna goIf wanna go

for your mind

爱からも梦からも

敌からも自分にも

Let's break it through

we can do

决して恐れず挑む自由光求めて

make it true make it soul

照らしだせ Oh Oh Oh Oh Oh Oh Oh Oh

never give up for my life

命がけのlove

伤も毒も受けてたつのさ

followもsparrowもはねつけろ

Oh Oh Oh Oh Oh Oh Oh Oh

emptyに痩せた

支配された世界に情热なんか

もうどこにもない

Androidは嫌胜利しても孤独

それでいいの?まだ间に合うのなら

If wanna goIf wanna show

If wanna goIf wanna go

for your mind

壊れても无谋でも

どうしても何度でも前にchance

Let's break it through we can do

决して恐れず挑む自由热い身体で

make it true make it soul

照らしだせ Oh Oh Oh Oh Oh Oh Oh Oh

never give up for my life

命がけのlove

伤も毒も受けてたつのさ

followもsparrowもはねつけろ

Oh Oh Oh Oh Oh Oh Oh Oh

ただ自分を信じればいい

屈せずに忘れずに

そこに道はできる

get down down down down

目指している

次の场所に辿り着くためには

覚悟なら决めた

get down down down down

ANDROID

Let's break it through

we can do

决して恐れず挑む自由光求めて

make it true make it soul

照らしだせ Oh Oh…

never give up for my life

命がけのlove

伤も毒も受けてたつのさ

followもsparrowもはねつけろ

Oh Oh Oh Oh Oh Oh Oh Oh

Let's break it through

we can do

决して恐れず挑む自由热い身体で

make it true make it soul

照らしだせ Oh Oh Oh Oh Oh Oh Oh Oh

Oh Oh Oh Oh Oh Oh Oh Oh

先从最基本的读取歌词文件开始:

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,

str.length()- 1)));

}

}

}

一般歌词文件的格式大概如下:

[ar:艺人名]

[ti:曲名]

[al:专辑名]

[by:编者(指编辑LRC歌词的人)]

[offset:时间补偿值]其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。

但也不一定,有时候并没有前面那些ar:等标识符,所以我们这里也提供了另一种解析方式。

歌词文件中的时间格式则比较统一:[00:00.50]等等,00:表示分钟,00.表示秒数,.50表示毫秒数,当然,我们最后是要将它们转化为毫秒数处理才比较方便。


热门排行: 好一点的原唱歌词