在做了歌詞同步顯示以后,還必須得做歌詞搜索的動作,搜索分兩種,一種是在搜索本地的特定目錄,當(dāng)然這些目錄是可以設(shè)置的,還有一種是當(dāng)本地搜索不到的時候,再到網(wǎng)絡(luò)上去進(jìn)行進(jìn)一步的搜索,當(dāng)然這些搜索都是起了一個新的線程在做的,否則就會卡到主線程播不出音樂來了.
說到歌詞的搜索,就得說說什么樣的歌詞才叫匹配了呢,這個時候,就得提起前面寫的標(biāo)簽讀取器了,第一步是從音頻文件里面讀取標(biāo)簽,根據(jù)標(biāo)簽里的歌手名和歌曲名去本地搜索完全匹配的歌詞文件,如果沒有,則第二步,根據(jù)標(biāo)簽里面的歌曲名去本地搜索匹配的歌詞文件,如果這一步還沒有找到,就可能是確實沒有這首歌的歌詞,也可能是這首歌的標(biāo)簽是不合法的或者標(biāo)簽是錯的,第三步就取歌曲的文件名做為歌曲名再去搜索一遍,如果還沒有搜到,則說明本地沒有了,這個時候再去網(wǎng)絡(luò)上重復(fù)以上三個步驟,如果還沒有搜索,那就直接顯示歌詞名在歌詞面板了.
當(dāng)然現(xiàn)在已經(jīng)實現(xiàn)了當(dāng)搜索到了歌詞以后,會自動和歌曲文件相關(guān)聯(lián),也就是說以后再播到這首歌的時候就不會在本地到處搜索匹配的歌詞了,而是直接關(guān)聯(lián)的歌詞文件里面讀取歌詞.這個一來可以提高效率,二來也可以人工指定匹配的歌詞文件,人工要指定其實很簡單,只要把你想關(guān)聯(lián)的歌詞文件拖放到歌詞顯示窗口就可以了,這個時候就自動關(guān)聯(lián)到當(dāng)前正在播放的歌曲了.當(dāng)然你也可以點擊”在線搜索”自己指定歌手名和歌曲名,然后雙擊要下載的歌詞進(jìn)行關(guān)聯(lián).所有的關(guān)聯(lián)都是為了在播放歌曲的時候提高效率.
在網(wǎng)上搜索的過程中,使用了httpClient3.0做為網(wǎng)絡(luò)連接的工具,因為它封裝性非常好,并且方便易用,可以在很大的程度上摸擬瀏覽器的行為.在搜到了歌詞以后,用正則表達(dá)式把里面的地址取出來,這一切就差不多了.
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.
posted on 2008-01-15 13:22
千里冰封 閱讀(3083)
評論(3) 編輯 收藏 所屬分類:
JAVASE