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);
}
(未完待續。。。)