1. 程式人生 > >android 音樂播放器-------歌詞同步 lrc

android 音樂播放器-------歌詞同步 lrc

lrc格式

[al:這首歌所在的唱片集 ]
[ar:歌詞作者 ]
[by:本LRC檔案的建立者 ]
[offset:+/- 以毫秒為單位整體時間戳調整,+增加,-減小 ]
[re:建立此LRC檔案的播放器或編輯器 ]
[ti:歌詞(歌曲)的標題 ]
[ve:程式的版本 ]

時間標記的格式為[mm:ss.xx] 其中mm 為分鐘數,ss 為秒數並且xx 為百分之一秒

例子:

[ti:愛]

[ar:小虎隊]

[al:華納國語情濃13首]

[by:愛上你了音樂網]

百度百科關於lrc的解釋:

http://baike.baidu.com/view/80650.htm

[ti:青花瓷]
[ar:周杰倫]
[al:我很忙]
[by:張琪]
[00:00.00]傳送簡訊18到291199下載該歌曲到手機
[00:01.11]青花瓷
[03:36.49]
[00:21.39]素眉勾勒鞦韆話北風龍轉丹 
[00:26.08]屏層鳥繪的牡丹一如你梳妝
[00:30.46]黯然騰香透過窗心事我瞭然 
[00:34.93]宣紙上皺邊直尺各一半
[00:39.49]油色渲染侍女圖因為被失藏 
[00:43.83]而你嫣然的一笑如含苞待放
[00:48.30]你的美一縷飄散 
[00:50.77]去到我去不了的地方
[02:23.97][00:55.77]
[03:01.92][02:25.63][00:56.90]天正在等煙雨 
[03:03.57][02:27.91][00:58.99]而我在等你 
[03:05.92][02:30.44][01:00.93]炊煙裊裊升起 
[03:07.76][02:32.25][01:03.49]隔江千萬裡
[03:10.36][02:34.85][01:05.84]在平地書刻你房間上的飄影 
[03:14.67][02:38.73][01:09.87]就當我為遇見你伏筆
[03:18.83][02:43.35][01:14.34]天正在等煙雨 
[03:21.20][02:45.60][01:16.68]而我在等你 
[03:23.71][02:48.01][01:18.99]月色被打撈起 
[03:25.74][02:50.10][01:21.18]掩蓋了結局
[03:28.33][02:52.54][01:23.72]如傳世的青花瓷在獨自美麗 
[03:32.30][02:56.67][01:27.65]你眼的笑意
[01:50.25]色白花青的景已躍然於碗底 
[01:54.69]臨摹宋體落款時卻惦記著你
[01:59.22]你隱藏在藥效裡一千年的祕密 
[02:03.75]急溪裡猶如羞花沾落地
[02:08.32]林外芭蕉 惹咒語 
[02:10.57]夢幻的銅綠
[02:12.84]而我路過那江南小鎮的等你
[02:17.19]在潑墨山水畫裡 
[02:19.75]你從墨色深處被隱去

前面“[ ]”中的數字表示其後歌詞的開始時間。例如,“[01:50.25]色白花青的景已躍然於碗底”表示在1分50.25秒時,歌詞內容是“色白花青的景已躍 然於碗底”。
    還有一種形式是“[03:01.92][02:25.63][00:56.90]天正在等煙雨”這種形式常用於賦格部分(俗稱:歌曲的高潮部分),它表示 在 03:01.92, 02:25.63, 00:56.90 時的歌詞都是“天正在等煙雨”。

程式碼實現,歌詞類

實現思路:

定義一個類,timelrc,用來存放每一句歌詞的內容和時間,每當播放的歌曲的時間改變時,即顯示播放的seekbar改變時,重新整理歌詞RefreshLRC(int),並將取得的歌詞的getLrcString()顯示到應用程式中。

使用方法:

在音樂播放的activity介面,獲取當前播放歌曲的path,歌詞路徑。

通過該函式的呼叫,如上類會將歌詞儲存起來。

當播放時間改變時,呼叫lrcService.RefreshLRC(current);  重新整理

在播放介面顯示正在播放的歌詞內容

public void setLRCText(String lrcString,boolean changeLine) {
        if(changeLine){
            flipperLrc.showNext();
        }
        playlrcText.setText(lrcString);
       
    }

(未完待續。。。)