版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于JAVA的Mp3播放器JMPlayer作 者 姓 名 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師姓名 專(zhuān)業(yè)技術(shù)職務(wù) 講 師 山東輕工業(yè)學(xué)院本科畢業(yè)設(shè)計(jì)論文原創(chuàng)性聲明本人鄭重聲明:所呈交的畢業(yè)論文,是本人在指導(dǎo)教師的指導(dǎo)下獨(dú)立研究、撰寫(xiě)的成果。論文中引用他人的文獻(xiàn)、數(shù)據(jù)、圖件、資料,均已在論文中加以說(shuō)明,除此之外,本論文不含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。對(duì)本文研究做出重要奉獻(xiàn)的個(gè)人和集體,均已在文中作了明確說(shuō)明并表示了謝意。本聲明的法律結(jié)果由本人承當(dāng)。畢業(yè)論文作者簽名: 年 月 日山東輕工業(yè)學(xué)院關(guān)于畢業(yè)設(shè)計(jì)論文使用授權(quán)的說(shuō)明本畢業(yè)論文作者完全了解學(xué)校有關(guān)保存、使用畢業(yè)論文的規(guī)定,即:學(xué)
2、校有權(quán)保存、送交論文的復(fù)印件,允許論文被查閱和借閱,學(xué)??梢怨荚O(shè)計(jì)論文的全部或局部?jī)?nèi)容,可以采用影印、掃描等復(fù)制手段保存本論文。指導(dǎo)教師簽名: 畢業(yè)設(shè)計(jì)論文作者簽名: 年 月 日 年 月 日 目 錄 TOC o 1-3 h z u HYPERLINK l _Toc265409224 摘 要 PAGEREF _Toc265409224 h III HYPERLINK l _Toc265409225 ABSTRACT PAGEREF _Toc265409225 h IV HYPERLINK l _Toc265409226 第一章 引言 PAGEREF _Toc265409226 h 1 HYPE
3、RLINK l _Toc265409227 1.1 課題研究背景及意義 PAGEREF _Toc265409227 h 1 HYPERLINK l _Toc265409228 1.2 音樂(lè)播發(fā)器的開(kāi)展及歷史 PAGEREF _Toc265409228 h 1 HYPERLINK l _Toc265409229 1.3 系統(tǒng)開(kāi)發(fā)目標(biāo) PAGEREF _Toc265409229 h 2 HYPERLINK l _Toc265409230 1.4 本文的主要內(nèi)容和結(jié)構(gòu) PAGEREF _Toc265409230 h 2 HYPERLINK l _Toc265409226 第二章 相關(guān)工具及技術(shù)介紹
4、PAGEREF _Toc265409226 h 1 HYPERLINK l _Toc265409232 2.1 Eclipse簡(jiǎn)介 PAGEREF _Toc265409232 h 3 HYPERLINK l _Toc265409233 2.2 Java Thread簡(jiǎn)介 PAGEREF _Toc265409233 h 4 HYPERLINK l _Toc265409234 2.3 JavaSound簡(jiǎn)介 PAGEREF _Toc265409234 h 5 HYPERLINK l _Toc265409235 2.4 Java Swing簡(jiǎn)介 PAGEREF _Toc265409235 h 6 H
5、YPERLINK l _Toc265409236 2.5 Java Properties簡(jiǎn)介 PAGEREF _Toc265409236 h 7 HYPERLINK l _Toc265409237 第三章 需求分析 PAGEREF _Toc265409237 h 9 HYPERLINK l _Toc265409238 3.1 工作流程分析 PAGEREF _Toc265409238 h 9 HYPERLINK l _Toc265409239 3.2 評(píng)價(jià)具體需求分析 PAGEREF _Toc265409239 h 9 HYPERLINK l _Toc265409240 3.3 系統(tǒng)功能結(jié)構(gòu)圖
6、PAGEREF _Toc265409240 h 9 HYPERLINK l _Toc265409241 3.4 功能詳細(xì)描述 PAGEREF _Toc265409241 h 10 HYPERLINK l _Toc265409242 Mp3播放 PAGEREF _Toc265409242 h 10 HYPERLINK l _Toc265409243 3.4.2 播放控制 PAGEREF _Toc265409243 h 10 HYPERLINK l _Toc265409244 3.4.3 播放信息控制 PAGEREF _Toc265409244 h 10 HYPERLINK l _Toc26540
7、9245 3.4.4 Mp3列表管理 PAGEREF _Toc265409245 h 11 HYPERLINK l _Toc265409246 3.4.5 歌詞 PAGEREF _Toc265409246 h 11 HYPERLINK l _Toc265409247 3.4.6 其他 PAGEREF _Toc265409247 h 11 HYPERLINK l _Toc265409248 第四章 總體設(shè)計(jì) PAGEREF _Toc265409248 h 12 HYPERLINK l _Toc265409249 4.1 系統(tǒng)要求 PAGEREF _Toc265409249 h 12 HYPERL
8、INK l _Toc265409250 4.2 系統(tǒng)功能描述 PAGEREF _Toc265409250 h 12 HYPERLINK l _Toc265409251 4.3 系統(tǒng)運(yùn)行環(huán)境 PAGEREF _Toc265409251 h 13 HYPERLINK l _Toc265409252 4.4 系統(tǒng)設(shè)計(jì)思想 PAGEREF _Toc265409252 h 13 HYPERLINK l _Toc265409253 4.4.1 總體流程設(shè)計(jì) PAGEREF _Toc265409253 h 13 HYPERLINK l _Toc265409254 4.4.2 Mp3播放設(shè)計(jì) PAGEREF
9、_Toc265409254 h 14 HYPERLINK l _Toc265409255 4.4.3 播放模式設(shè)計(jì) PAGEREF _Toc265409255 h 15 HYPERLINK l _Toc265409256 4.4.4 Mp3文件列表管理設(shè)計(jì) PAGEREF _Toc265409256 h 15 HYPERLINK l _Toc265409257 4.4.5 歌詞設(shè)計(jì) PAGEREF _Toc265409257 h 16 HYPERLINK l _Toc265409258 4.4.6 皮膚切換設(shè)計(jì) PAGEREF _Toc265409258 h 17 HYPERLINK l _T
10、oc265409259 4.4.7 顯示模式設(shè)計(jì) PAGEREF _Toc265409259 h 18 HYPERLINK l _Toc265409260 第五章 詳細(xì)設(shè)計(jì) PAGEREF _Toc265409260 h 19 HYPERLINK l _Toc265409261 5.1 界面設(shè)計(jì) PAGEREF _Toc265409261 h 19 HYPERLINK l _Toc265409262 5.2 系統(tǒng)關(guān)鍵類(lèi)設(shè)計(jì) PAGEREF _Toc265409262 h 20 HYPERLINK l _Toc265409263 5.3 系統(tǒng)類(lèi)結(jié)構(gòu) PAGEREF _Toc265409263 h
11、 22 HYPERLINK l _Toc265409264 第六章 軟件功能實(shí)現(xiàn) PAGEREF _Toc265409264 h 23 HYPERLINK l _Toc265409265 6.1 播放Mp3實(shí)現(xiàn) PAGEREF _Toc265409265 h 23 HYPERLINK l _Toc265409266 6.2 Mp3文件解析實(shí)現(xiàn) PAGEREF _Toc265409266 h 23 HYPERLINK l _Toc265409267 6.3 Mp3列表控制類(lèi)實(shí)現(xiàn) PAGEREF _Toc265409267 h 23 HYPERLINK l _Toc265409268 6.4 Mp
12、3歌詞解析及顯示控制實(shí)現(xiàn) PAGEREF _Toc265409268 h 24結(jié)束語(yǔ) HYPERLINK l _Toc265409269 PAGEREF _Toc265409269 h 25 HYPERLINK l _Toc265409270 參考文獻(xiàn) PAGEREF _Toc265409270 h 26 HYPERLINK l _Toc265409271 致 謝 PAGEREF _Toc265409271 h 27摘 要隨著java 語(yǔ)言的出現(xiàn),軟件的跨平臺(tái)性已經(jīng)能被更進(jìn)一步的解決和處理,隨著Internet的開(kāi)展,軟件的跨平臺(tái)性又被提高到另一個(gè)新的要求。音樂(lè)播放器是一種用于播放各種音樂(lè)文件
13、的多媒體播放軟件。它涵蓋了各種音樂(lè)格式的播放工具,比方:MP3播放器,WMA播放器,MP4播放器等。它們不僅界面美觀,而且操作簡(jiǎn)單,帶你進(jìn)入一個(gè)完美的音樂(lè)空間。本系統(tǒng)是一個(gè)簡(jiǎn)單的Mp3音樂(lè)播放器實(shí)現(xiàn),旨在借助于java語(yǔ)言的強(qiáng)大的跨平臺(tái)特性來(lái)實(shí)現(xiàn)本播放器的跨平臺(tái)的通用。但由于設(shè)計(jì)時(shí)間有限目前僅支持mp3和wav格式音樂(lè)文件的播放。本系統(tǒng)的主要使用了Java中的多線程編程,系統(tǒng)中的mp3播放、歌詞解析及顯示、播放時(shí)間的顯示控制、播放器的主界面等都是單獨(dú)采用一個(gè)獨(dú)立的線程來(lái)進(jìn)行管理控制的。本系統(tǒng)在結(jié)構(gòu)上的核心設(shè)計(jì)模式采用了GOF的中介者模式,以此來(lái)使各個(gè)模塊的相互耦合度降到最低,以便更容易的進(jìn)行各
14、個(gè)模塊的獨(dú)立的開(kāi)發(fā)從而使整個(gè)系統(tǒng)的靈活性和可擴(kuò)展性都得到提高。開(kāi)發(fā)時(shí)采用TDD。關(guān)鍵詞 Java MusicPlayer multi-threadABSTRACTWith the development of java language, cross-platform natures of the software have been resolved and processed can be further, as the Internets development, cross-platform of software has been raised to another of the n
15、ew requirements.Music player is a multimedia playback software which can be played variety of music files. It covers player tools that can be played a variety of music formats, such as, MP3 player, WMA player, MP4 player. It not only has the beautiful interface but also operate simply. It will take
16、you into a perfect music world.This system is a simple Mp3 music player .With the help of java language features thats a powerful cross-platform, player is to be achieved this common cross-platform. As the time is limited , the Mp3 Player only can support mp3 and wav music files.The main use of this
17、 system is multi-thread in the Java program .In the system the mp3 playing, lyrics analysed and displayed, the control of play time, and the players main interface are all used of an individual thread.The structure of the systems core design is using an Mediator Pattern which is called GOF pattern,
18、in order to enable each module to minimize the coupling. In order to more easily carry out the independently developed of each module .So the system flexibility and scalability can be improved. The project was developed in TDD REF _Ref202118323 r h * MERGEFORMAT 4.Key WordsJava;MusicPlayer;multi-thr
19、ead第一章 引言1.1 課題研究背景及意義當(dāng)今時(shí)下, 隨著信息技術(shù)的不斷開(kāi)展,軟件技術(shù)的開(kāi)展也是日新月異,人們對(duì)于音樂(lè)的享受方式也是不斷的發(fā)生變化,各種音樂(lè)播放軟件讓人們享受變的更加的舒適,愉快和方便?;诰幊陶Z(yǔ)言的不同以及Internet 的開(kāi)展,現(xiàn)在比擬流行的音樂(lè)播放的形式有軟件播放像千千靜定,酷我音樂(lè)盒等,在線軟件播放像百度的在線音樂(lè)盒,以及各大門(mén)戶(hù)網(wǎng)站根本上都提供了在線收聽(tīng)音樂(lè)的效勞。在線收聽(tīng)的形式可以不依賴(lài)于操作系統(tǒng)的軟件環(huán)境但凡能與Internet連接的計(jì)算機(jī)都可以進(jìn)行在線收聽(tīng)。但在收聽(tīng)也有它的局限性,像無(wú)法與Internet連接時(shí)。這時(shí)候本地的音樂(lè)播放軟件就顯示出它的優(yōu)勢(shì)來(lái)了,
20、但由于操作系統(tǒng)的本身軟件環(huán)境及生產(chǎn)廠家的限制,使用非可夸平臺(tái)語(yǔ)言編寫(xiě)的音樂(lè)播放軟件無(wú)法做到在操作系統(tǒng)上的共用,此題目的意義在于使用java這種跨平臺(tái)的語(yǔ)言,編寫(xiě)一個(gè)通用的音樂(lè)播放軟件。1.2 音樂(lè)播發(fā)器的開(kāi)展及歷史時(shí)下,音樂(lè)播放器已經(jīng)成為人們生活中不可或缺的必備品。它的誕生,讓動(dòng)聽(tīng)的聲音有了存儲(chǔ)的載體,得以廣泛的傳播和分享。接下來(lái),筆者就針對(duì)它的開(kāi)展史做個(gè)簡(jiǎn)單的回憶。1877年12月,愛(ài)迪生公開(kāi)表演了留聲機(jī),“會(huì)說(shuō)話的機(jī)器誕生的消息,立刻轟動(dòng)了全世界。外界輿論馬上把他譽(yù)為科學(xué)界之拿破侖,留聲機(jī)也成為19世紀(jì)最引人振奮的三大創(chuàng)造之一。1898年,丹麥的V.波爾森創(chuàng)造了鋼絲錄音機(jī),從此,以硬磁性材
21、料為載體,利用磁性材料的剩磁特性將聲音信號(hào)記錄在載體,具有重放、錄音功能的磁帶錄音機(jī)開(kāi)始在家庭普及。隨著社會(huì)的開(kāi)展和科技的進(jìn)步,人們對(duì)音色品質(zhì)的追求越來(lái)越高。老式錄音機(jī)音色簡(jiǎn)單、蒼白的特性,使其逐漸被社會(huì)淘汰。代表著更清晰、立體聲、更渾厚音質(zhì)的播放器CD正式登上舞臺(tái)。1982年,世界上第一臺(tái)CD播放器、同時(shí)也是索尼生產(chǎn)的第一臺(tái)CD播放器誕生了Sonys CDP-101。CD的出現(xiàn),依靠完美的音質(zhì)表現(xiàn)、快捷搜歌、方便攜帶等功能,風(fēng)行了播放器市場(chǎng)10多年之久。直到 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank
22、 p?sclassid=126 t _blank MP3的出現(xiàn)。盡管1995年9月9日發(fā)布的第一款實(shí)時(shí) HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=164 t _blank 軟件 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank .pc165 /product_Sclass.asp?sclassid=126 t _blank MP3播放器Winplay3,已經(jīng)讓許多人能夠在自己的個(gè)人 HYPERLINK :/product.pc165 /pro
23、duct_Sclass.asp?sclassid=38 t _blank 電腦上編碼和回放 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3文件,音樂(lè)播放器的智能時(shí)代正式來(lái)臨,但是由于PC和互聯(lián)網(wǎng)的開(kāi)展所限, HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank class.asp?sc
24、lassid=126 t _blank MP3并沒(méi)有獲得廣泛的普及。直到2001年10月,蘋(píng)果公司推出了第一代IPOD,將 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3播放器演繹到藝術(shù)與文化的境界。它不僅容量巨大,操作智能,而且外形時(shí)尚,一經(jīng)推出,即刻獲到全球范圍內(nèi)的熱捧!蘋(píng)果公司之所以強(qiáng)大,除了自身強(qiáng)大的研發(fā)能力和創(chuàng)新意識(shí)以外,善于利用外設(shè)廠商資源,也是其成功的
25、重要一環(huán)。在蘋(píng)果的研發(fā)基地,來(lái)自全球70多家頂尖配件廠商共同參與蘋(píng)果每一款新品的研發(fā)過(guò)程。世界頂級(jí)音響制造品牌JBL、哈曼卡頓、全球最知名的三大耳機(jī)品牌UE、ETY、WESTONE都量身為IPOD打造完美的聲音輸出設(shè)備,讓IPOD完美的音質(zhì)得以淋漓盡致的展現(xiàn)。 1.3 系統(tǒng)開(kāi)發(fā)目標(biāo)本系統(tǒng)的開(kāi)發(fā)目標(biāo)為: 開(kāi)發(fā)出一個(gè)不受操作系統(tǒng)(此操作系統(tǒng)必須支持JAVASE)限制的mp3音樂(lè)播放器。此播放器要實(shí)現(xiàn)一般常見(jiàn)播放器的一些通用的功能。要求系統(tǒng)的各個(gè)模塊之間盡可能的到達(dá)高內(nèi)聚,低耦合,要求系統(tǒng)具有較高的可維護(hù)性和可擴(kuò)展性。1.4 本文的主要內(nèi)容和結(jié)構(gòu)本論文由五章構(gòu)成,其中第四、五章為核心局部,講述了系統(tǒng)
26、的實(shí)現(xiàn)。具體的每個(gè)章節(jié)的主要內(nèi)容如下:第一章 引言。主要介紹了課題的研究背景及意義以及系統(tǒng)的開(kāi)發(fā)目標(biāo)以及mp3播放器的開(kāi)展歷史。第二章 相關(guān)工具及技術(shù)介紹。主要介紹了Java線程、Java多線程編程,java音樂(lè)播放的主要APIJavaSound、播放器所使用的界面APISwing、Eclipse開(kāi)發(fā)工具。第三章 需求分析。主要從需求的角度介紹了mp3音樂(lè)播放器的功能等。第四章 總體設(shè)計(jì)。本章為本文的核心局部,主要介紹了mp3播放器的各個(gè)設(shè)計(jì)點(diǎn)的設(shè)計(jì)思想。第五章 詳細(xì)設(shè)計(jì)。本章也是系統(tǒng)的核心章節(jié)之一,主要介紹了播放器的界面設(shè)計(jì)、系統(tǒng)的關(guān)鍵類(lèi)的設(shè)計(jì)以及系統(tǒng)的類(lèi)結(jié)構(gòu)。第五章 軟件功能實(shí)現(xiàn)。本章主要
27、從代碼的角度介紹了整個(gè)播放器的設(shè)計(jì)。第二章 相關(guān)工具及技術(shù)介紹2.1 Eclipse簡(jiǎn)介Eclipse是一個(gè)非常優(yōu)秀的集成開(kāi)發(fā)環(huán)境。IBM花了多年的時(shí)間來(lái)開(kāi)發(fā)基于Java的公開(kāi)源代碼的軟件Eclipse,這個(gè)在IBM支持下的開(kāi)發(fā)源碼工程經(jīng)過(guò)一段時(shí)期的開(kāi)展完善,已經(jīng)為廣闊Java開(kāi)發(fā)者所熟悉。Eclipse是一個(gè)用于構(gòu)建集成Web和應(yīng)用程序開(kāi)發(fā)工具的平臺(tái),它本身并不會(huì)提供大量的最終用戶(hù)功能,而是通過(guò)插件來(lái)快速開(kāi)發(fā)集成功能的部件。Eclipse是一款非常優(yōu)秀的開(kāi)源IDE,非常適合Java開(kāi)發(fā),由于支持插件技術(shù),受到了越來(lái)越多的開(kāi)發(fā)者的歡送。最新的不但界面作了很大的增強(qiáng),而且增加了代碼折疊等眾多優(yōu)秀
28、功能,速度也有明顯的提升。配合眾多令人眼花繚亂的插件,完全可以滿(mǎn)足從企業(yè)級(jí)Java應(yīng)用到 終端Java游戲的開(kāi)發(fā)。Eclipse提供了公共用戶(hù)界面模型來(lái)使用工具。Eclipse軟件旨在簡(jiǎn)化用于多操作系統(tǒng)軟件工具的開(kāi)放過(guò)程,他被設(shè)計(jì)成可以在多個(gè)操作系統(tǒng)上運(yùn)行,基于Eclipse的軟件在Linux和微軟Windows系統(tǒng)上都可以運(yùn)行,因此可以省去開(kāi)發(fā)者有時(shí)要把Windows應(yīng)用程序切換到Linux的操作,進(jìn)而簡(jiǎn)化了整個(gè)開(kāi)發(fā)過(guò)程。同時(shí)Eclipse還提供了于每個(gè)底層操作系統(tǒng)強(qiáng)大集成。Eclipse的核心是動(dòng)態(tài)發(fā)現(xiàn)插件的體系結(jié)構(gòu)。平臺(tái)負(fù)責(zé)處理根本環(huán)境的后臺(tái)工作,并提供標(biāo)準(zhǔn)的用戶(hù)導(dǎo)航模型,于是每個(gè)插件可
29、以專(zhuān)注于執(zhí)行少量的任務(wù),Eclipse的出現(xiàn),不僅為Java開(kāi)發(fā)者提供了免費(fèi)使用強(qiáng)大的Java IDE的時(shí)機(jī),而且也為C+的開(kāi)發(fā)者提供了CDT。通過(guò)集成大量的插件,Eclipse的功能可以不斷擴(kuò)展,以支持各種不同的應(yīng)用。Eclipse軟件可以用于管理多種開(kāi)發(fā)任務(wù),其中包括測(cè)試、性能調(diào)整以及程序調(diào)試等,而且還可以繼承來(lái)自多個(gè)供貨商的第三方應(yīng)用程序開(kāi)發(fā)工具。此外,Eclipse軟件非常適合開(kāi)發(fā)電子商務(wù)應(yīng)用程序,例如IBM公司自己的面向Web效勞的WebSpbere應(yīng)用程序開(kāi)發(fā)工具就是建立在Eclipse根底之上。除此之外,Eclipse平臺(tái)是一個(gè)成熟的、精心設(shè)計(jì)的、可擴(kuò)展的體系結(jié)構(gòu)。Eclipse
30、的價(jià)值在于他為創(chuàng)立可擴(kuò)展的集成開(kāi)發(fā)環(huán)境提供了一個(gè)開(kāi)放源碼平臺(tái)。這平臺(tái)允許任何人構(gòu)建與環(huán)境和其他工具無(wú)縫集成的工具,而工具與Eclipse無(wú)縫集成的關(guān)鍵便是插件。2.2 Java Thread簡(jiǎn)介 線程是程序運(yùn)行的根本執(zhí)行單元。當(dāng)操作系統(tǒng)(不包括單線程的操作系統(tǒng),如微軟早期的DOS)在執(zhí)行一個(gè)程序時(shí),會(huì)在系統(tǒng)中建立一個(gè)進(jìn)程,而在這個(gè)進(jìn)程中,必須至少建立一個(gè)線程這個(gè)線程被稱(chēng)為主線程來(lái)作為這個(gè)程序運(yùn)行的入口點(diǎn)。因此,在操作系統(tǒng)中運(yùn)行的任何程序都至少有一個(gè)主線程。進(jìn)程和線程是現(xiàn)代操作系統(tǒng)中兩個(gè)必不可少的運(yùn)行模型。在操作系統(tǒng)中可以有多個(gè)進(jìn)程,這些進(jìn)程包括系統(tǒng)進(jìn)程由操作系統(tǒng)內(nèi)部建立的進(jìn)程和用戶(hù)進(jìn)程由用戶(hù)程
31、序建立的進(jìn)程;一個(gè)進(jìn)程中可以有一個(gè)或多個(gè)線程。進(jìn)程和進(jìn)程之間不共享內(nèi)存,也就是說(shuō)系統(tǒng)中的進(jìn)程是在各自獨(dú)立的內(nèi)存空間中運(yùn)行的。而一個(gè)進(jìn)程中的線可以共享系統(tǒng)分派給這個(gè)進(jìn)程的內(nèi)存空間。線程不僅可以共享進(jìn)程的內(nèi)存,而且還擁有一個(gè)屬于自己的內(nèi)存空間,這段內(nèi)存空間也叫做線程棧, 是在建立線程時(shí)由系統(tǒng)分配的,主要用來(lái)保存線程內(nèi)部所使用的數(shù)據(jù),如線程執(zhí)行函數(shù)中所定義的變量。Java編寫(xiě)程序都運(yùn)行在在Java虛擬機(jī)JVM中,在JVM的內(nèi)部,程序的多任務(wù)是通過(guò)線程來(lái)實(shí)現(xiàn)的。每用java命令啟動(dòng)一個(gè)java 應(yīng)用程序,就會(huì)啟動(dòng)一個(gè)JVM進(jìn)程。在同一個(gè)JVM進(jìn)程中,有且只有一個(gè)進(jìn)程,就是它自己。在這個(gè)JVM環(huán)境中,所
32、有程序代碼的運(yùn)行都是以線程來(lái)運(yùn)行。一般常見(jiàn)的Java應(yīng)用程序都是單線程的。比方,用java命令運(yùn)行一個(gè)最簡(jiǎn)單的HelloWorld的Java應(yīng)用程序時(shí),就啟動(dòng)了一個(gè) JVM進(jìn)程,JVM找到程序程序的入口點(diǎn)main(),然后運(yùn)行main()方法,這樣就產(chǎn)生了一個(gè)線程,這個(gè)線程稱(chēng)之為主線程。當(dāng)main方法結(jié)束后, 主線程運(yùn)行完成。JVM進(jìn)程也隨即退出 。對(duì)于一個(gè)進(jìn)程中的多個(gè)線程來(lái)說(shuō),多個(gè)線程共享進(jìn)程的內(nèi)存塊,當(dāng)有新的線程產(chǎn)生的時(shí)候,操作系統(tǒng)不分配新的內(nèi)存,而是讓新線程共享原有的進(jìn)程塊的內(nèi)存。因此,線程間的通信很容易,速度也很快。不同的進(jìn)程因?yàn)樘幱诓煌膬?nèi)存塊,因此進(jìn)程之間的通信相對(duì)困難。實(shí)際上,操
33、作的系統(tǒng)的多進(jìn)程實(shí)現(xiàn)了多任務(wù)并發(fā)執(zhí)行,程序的多線程實(shí)現(xiàn)了進(jìn)程的并發(fā)執(zhí)行。多任務(wù)、多進(jìn)程、多線程的前提都是要求操作系統(tǒng)提供多任務(wù)、多進(jìn)程、多線程的支持。在Java程序中,JVM負(fù)責(zé)線程的調(diào)度。線程調(diào)度是值按照特定的機(jī)制為多個(gè)線程分配CPU的使用權(quán)。調(diào)度的模式有兩種:分時(shí)調(diào)度和搶占式調(diào)度。分時(shí)調(diào)度是所有線程輪流獲得CPU使用權(quán),并平均分配每個(gè)線程占用CPU的時(shí)間;搶占式調(diào)度是根據(jù)線程的優(yōu)先級(jí)別來(lái)獲取CPU的使用權(quán)。JVM的線程調(diào)度模式采用了搶占式模式。所謂的“并發(fā)執(zhí)行 、“同時(shí)其實(shí)都不是真正意義上的“同時(shí) 。眾所周知,CPU都有個(gè)時(shí)鐘頻率,表示每秒中能執(zhí)行cpu指令的次數(shù)。在每個(gè)時(shí)鐘周期內(nèi),CPU
34、實(shí)際上只能去執(zhí)行一條也有可能多條指令。操作系統(tǒng)將進(jìn)程線程進(jìn)行管理,輪流沒(méi)有固定的順序分配每個(gè)進(jìn)程很短的一段是時(shí)間不一定是均分,然后在每個(gè)線程內(nèi)部,程序代碼自己處理該進(jìn)程內(nèi)部線程的時(shí)間分配,多個(gè)線程之間相互的切換去執(zhí)行,這個(gè)切換時(shí)間也是非常短的。因此多任務(wù)、多進(jìn)程、多線程都是操作系統(tǒng)給人的一種宏觀感受,從微觀角度看,程序的運(yùn)行是異步執(zhí)行的。Java語(yǔ)言的多線程需要操作系統(tǒng)的支持。Java 虛擬機(jī)允許應(yīng)用程序并發(fā)地運(yùn)行多個(gè)執(zhí)行線程。Java語(yǔ)言提供了多線程編程的擴(kuò)展點(diǎn),并給出了功能強(qiáng)大的線程控制API。在Java中,多線程的實(shí)現(xiàn)有兩種方式: 1. 擴(kuò)展d類(lèi)2. 實(shí)現(xiàn)接口 每個(gè)線程都有一個(gè)優(yōu)先級(jí),高
35、優(yōu)先級(jí)線程的執(zhí)行優(yōu)先于低優(yōu)先級(jí)線程。每個(gè)線程都可以或不可以標(biāo)記為一個(gè)守護(hù)程序。當(dāng)某個(gè)線程中運(yùn)行的代碼創(chuàng)立一個(gè) 新 Thread 對(duì)象時(shí),該新線程的初始優(yōu)先級(jí)被設(shè)定為創(chuàng)立線程的優(yōu)先級(jí),并且當(dāng)且僅當(dāng)創(chuàng)立線程是守護(hù)線程時(shí),新線程才是守護(hù)程序。 當(dāng) Java 虛擬機(jī)啟動(dòng)時(shí),通常都會(huì)有單個(gè)非守護(hù)線程它通常會(huì)調(diào)用某個(gè)指定類(lèi)的 main 方法。Java 虛擬時(shí)機(jī)繼續(xù)執(zhí)行線程,直到以下任一情況出現(xiàn)時(shí)為止: 1. 調(diào)用了 Runtime 類(lèi)的 exit 方法,并且平安管理器允許退出操作發(fā)生。2. 非守護(hù)線程的所有線程都已停止運(yùn)行,無(wú)論是通過(guò)從對(duì) run 方法的調(diào)用中返回,還是通過(guò)拋出一個(gè)傳播到 run 方法之外
36、的異常。2.3 JavaSound簡(jiǎn)介JavaSound是一個(gè)小巧的低層API,支持?jǐn)?shù)字音頻和MIDI數(shù)據(jù)的記錄/回放。在JDK 之前,JavaSound是一個(gè)標(biāo)準(zhǔn)的Java擴(kuò)展API,但從Java 2的版開(kāi)始,JavaSound就被包含到JDK之中。由于Java有著跨平臺(tái)操作系統(tǒng)、硬件平臺(tái)的特點(diǎn),基于JavaSound的音頻處理程序包括本文的程序能夠在任何實(shí)現(xiàn)了Java 1.3+的系統(tǒng)上運(yùn)行,無(wú)需加裝任何支持軟件。使用JavaSound API,可以實(shí)現(xiàn)各種基于聲音的應(yīng)用,例如聲音錄制、音樂(lè)播放、網(wǎng)絡(luò) 、音樂(lè)編輯等。JavaSound API又以各種解碼和合成器SPI效勞提供者接口, Ser
37、vice Provider Interface為根底,實(shí)現(xiàn)各種音樂(lè)格式的解碼與轉(zhuǎn)碼。在處理輸入音頻時(shí),對(duì)于來(lái)自各種音頻輸入端口的信號(hào),例如麥克風(fēng)、CD播放器、磁帶播放器等,可以在它們到達(dá)TargetDataLine之前,利用混頻器控制輸入混頻,最后在程序中通過(guò)TargetDataLine獲得數(shù)字化的音頻輸入流。類(lèi)似地,在處理輸出音頻時(shí),混頻器用來(lái)對(duì)一系列來(lái)自SourceDataLine的數(shù)據(jù)進(jìn)行混頻處理,經(jīng)處理后的信號(hào)可輸出到各種輸出端口,例如揚(yáng)聲器、耳機(jī)等。SourceDataLine是一個(gè)可寫(xiě)入音頻信號(hào)數(shù)字流的設(shè)備,例如,我們可以從一個(gè)WAV文件讀取內(nèi)容寫(xiě)入到SourceDataLine,
38、然后再通過(guò)揚(yáng)聲器輸出。2.4 Java Swing簡(jiǎn)介Swing是一個(gè)為Java設(shè)計(jì)的GUI工具包。 Swing 是 Java API 的一局部。 Swing 包括了圖形用戶(hù)界面 (GUI) 器件 如:文本框,按鈕,分隔窗格和表。 Swing提供許多比HYPERLINK :/ hudong /wiki/AWTAWT更 好的屏幕顯示元素。它們用純Java寫(xiě)成,所以同Java本身一樣可以跨平臺(tái)運(yùn)行,這一點(diǎn)不像AWT。 它們是JFC的一局部。 它們支持可更換的觀感和主題各種操作系統(tǒng)默認(rèn)的特有主題,然而不是真的使用原生平臺(tái)提供的設(shè)備,而是僅僅在外表上模仿它們。這意味著你可以在任意平臺(tái) 上使用Java支
39、持的任意觀感。 輕量級(jí)元件的缺點(diǎn)那么是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺(tái)上采用統(tǒng)一的行為。SUN把Swing定義為一組用戶(hù)自定義化的圖形組件,這些組件的外觀樣式可以在運(yùn)行時(shí)改變。實(shí)際上,Swing含義遠(yuǎn)不只此。它是Sun創(chuàng)立的用于java企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的下一代GUI工具集。這就意味著程序員可以使用Swing和一組功能強(qiáng)大的組件來(lái)創(chuàng)立大型java應(yīng)用程序。還可以方便地?cái)U(kuò)展或者修改這些組件來(lái)控制它們的外觀和行為。 根本類(lèi)庫(kù)是用來(lái)幫助程序員使用java創(chuàng)立企業(yè)級(jí)應(yīng)用的一組庫(kù)。JFC除了包括Swing外,還包括AWT,Accessibility API, 2D API,并加強(qiáng)了對(duì)拖放功能的支持。 S
40、wing是建立在核心AWT庫(kù)之上。Swing并不包括任何平臺(tái)相關(guān)本地代碼,你可以在任何實(shí)現(xiàn)jdk以上的平臺(tái)或虛擬機(jī)上發(fā)布Swing。 Swing引進(jìn)了一個(gè)Action類(lèi),這使得協(xié)調(diào)GUI組件和它們的功能簡(jiǎn)單化。盡管本身沒(méi)有定義大量事件,Swing卻極其依賴(lài)于的事件處理機(jī)制。每一個(gè)Swing組件還包括一些外在屬性。這是因?yàn)镾wing組件和JavaBeans標(biāo)準(zhǔn)有聯(lián)系。這就意味著可以把Swing組件引進(jìn)到各種GUI構(gòu)建工具中,這對(duì)可視化編程來(lái)說(shuō)很有用處。Swing的特性有:1可插拔的外觀樣式。Swing允許用戶(hù)在運(yùn)行時(shí)改變外觀樣式而不需要關(guān)閉應(yīng)用程序。2輕量級(jí)組件 這是指組件不依賴(lài)于本地的對(duì)等組件
41、來(lái)渲染它們。而是它們使用簡(jiǎn)單的圖形元素來(lái)繪制自身甚至允許局部透明。而AWT組件是“重型組件。輕型組件使用Graphics對(duì)象的繪圖元素象drawLine(),fillRect()等來(lái)渲染自身。一般在包含它們的頂層重型組件外表渲染自身。絕把局部Swing組件是輕型組件,只有一些頂層容器不是。這種設(shè)計(jì)使得程序員可以在運(yùn)行時(shí)繪制應(yīng)用程序的外觀。而且,Swing組件支持組件行為的簡(jiǎn)單修改。Swing包含250多個(gè)類(lèi),是組件和支持類(lèi)的集合。Swing提供了40多個(gè)組件,是AWT組件的四倍。除提供替代AWT重量組件的輕量組件外,Swing還提供了大量有助于開(kāi)發(fā)圖形用戶(hù)界面的附加組件。1. AWT的替代組件
42、用于替代AWT重量組件的Swing輕量組件中許多組件與它們所替代的AWT組件幾乎是源代碼兼容的。這使得替換AWT組件的工作相當(dāng)簡(jiǎn)單。除模仿AWT組件所提供的功能外,幾乎所有的Swing替代組件都有其他一些特性。例如,Swing按鈕和標(biāo)簽可顯示圖標(biāo)和文本,而AWT按鈕和標(biāo)簽只能顯示文本。該類(lèi)組件均使用Windows的界面樣式。2. Swing增加的組件除提供AWT重量組件的替代組件外,Swing還提供了許多其他組件,如表格、樹(shù)、定制對(duì)話框等。2.5 Java Properties簡(jiǎn)介擴(kuò)展名為.properties的文件經(jīng)常作為配置文件出現(xiàn)在我們的應(yīng)用中,如Hibernate、log4j等就曾經(jīng)或
43、正在使用.properties作為核心配置文件。掌握此類(lèi)文件的讀寫(xiě)對(duì)我們理解配置文件的好處是顯而易見(jiàn)的。Properties 類(lèi)表示了一個(gè)持久的屬性集 REF _Ref202118323 r h * MERGEFORMAT 。Properties 可保存在流中或從流中加載。屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串。 一個(gè)屬性列表可包含另一個(gè)屬性列表作為它的“默認(rèn)值;如果未能在原有的屬性列表中搜索到屬性鍵,那么搜索第二個(gè)屬性列表。 因?yàn)?Properties 繼承于 Hashtable,所以可對(duì) Properties 對(duì)象應(yīng)用 put 和 putAll 方法。但強(qiáng)烈反對(duì)使用這兩個(gè)方法,因?yàn)樗鼈冊(cè)?/p>
44、許調(diào)用方插入其鍵或值不是 Strings 的項(xiàng)。相反,應(yīng)該使用 setProperty 方法。如果在“有危險(xiǎn)的 Properties 對(duì)象即包含非 String 的鍵或值上調(diào)用 store 或 save 方法,那么該調(diào)用將失敗。 load 和 store 方法按簡(jiǎn)單的面向行的格式加載和存儲(chǔ)屬性。此格式使用 ISO 8859-1 字符編碼??梢允褂?Unicode 轉(zhuǎn)義符來(lái)編寫(xiě)此編碼中無(wú)法直接表示的字符;轉(zhuǎn)義序列中只允許單個(gè) u 字符??墒褂?native2ascii 工具對(duì)屬性文件和其他字符編碼進(jìn)行相互轉(zhuǎn)換。 loadFromXML(InputStream) 和 storeToXML(Outp
45、utStream) 方法按簡(jiǎn)單的 XML 格式加載和存儲(chǔ)屬性。默認(rèn)使用 UTF-8 字符編碼,但如果需要,可以指定某種特定的編碼。XML 屬性文檔具有以下 DOCTYPE 聲明: 注意,導(dǎo)入或?qū)С鰧傩詴r(shí)不訪問(wèn)系統(tǒng) URI ( :/java.sun /dtd/properties.dtd);該系統(tǒng) URI 僅作為一個(gè)惟一標(biāo)識(shí) DTD 的字符串。第三章 需求分析3.1 工作流程分析用戶(hù)希望通過(guò)音樂(lè)播放器實(shí)現(xiàn)mp3音樂(lè)播放的功能,同時(shí)用戶(hù)可以自主的控制播放器中的mp3的播放,包括前一首播放、下一首播放、停止播放。同時(shí)用戶(hù)希望看到當(dāng)前正在播放的mp3的詳細(xì)信息,比方mp3的專(zhuān)輯、年份、歌手等信息,用戶(hù)
46、還想對(duì)當(dāng)前播放器的整體狀態(tài)有一個(gè)了解,如以播放時(shí)長(zhǎng)等。用戶(hù)可以對(duì)播放器的音量進(jìn)行控制,可以對(duì)播放器自動(dòng)播放mp3的播放順序作出選擇,可以對(duì)播放器的皮膚樣式作出更改,用戶(hù)肯能還想定義自己喜歡風(fēng)格樣式的播放器皮膚。如果有歌詞文件存在的話,用戶(hù)可能希望播放器能夠同步顯示對(duì)應(yīng)的歌詞。用戶(hù)有時(shí)可能還會(huì)感覺(jué)將播放的界面變的非常小放在桌面的某個(gè)角落會(huì)更適宜一些。3.2 評(píng)價(jià)具體需求分析1. mp3播放 主要用于播放器的mp3音樂(lè)文件的播放。2. 播放控制 主要用于播放器的下一首播放、前一首播放、停止播放、播放的控制。3. 播放信息顯示控制 主要包括mp3的已播放時(shí)間、播放狀態(tài)、mp3文件信息的顯示。4. m
47、p3列表管理 主要包括對(duì)播放器中mp3音樂(lè)文件的增加、增加時(shí)的檢查和刪除。5. 歌詞解析及同步顯示 主要包括對(duì)歌詞文件的查找、解析和同步顯示。6. 播放模式控制 主要用于在播放器的各種播放模式之間進(jìn)行切換,如循環(huán)播放、隨機(jī)播放等。7. 顯示方式控制 主要用于控制播放器的迷你模式和完全模式的切換及同步的組件的顯示和隱藏。8. 皮膚切換控制 用于在系統(tǒng)的各種皮膚之間進(jìn)行切換。9. 音量控制 控制播放器的音量大小。3.3 系統(tǒng)功能結(jié)構(gòu)圖本Mp3音樂(lè)播放器的主要功能分為五大模塊,分別是播放控制模塊、播放信息控制模塊、Mp3列表管理模塊、歌詞模塊、以及其他功能模塊。在各個(gè)模塊中又包含更詳細(xì)的功能劃分詳細(xì)
48、內(nèi)容如圖3-1所示播放控制停止控制下一首控制前一首控制播放模式播放控制播放信息控制Mp3信息播放信息歌詞歌詞解析歌詞顯示其他音量控制顯示模式皮膚切換Mp3列表管理刪除Mp3增加Mp3Mp3播放播放Mp3JMPlayer圖3-1 JMPlayer系統(tǒng)功能結(jié)構(gòu)圖3.4 功能詳細(xì)描述 Mp3播放此局部為系統(tǒng)的核心局部,主要使用了JavaSoundAPI控制操作系統(tǒng)的音頻系統(tǒng),以音頻系統(tǒng)的音頻輸入輸出流進(jìn)行Mp3的播放,此局部是播放控制模塊、播放信息控制模塊、歌詞模塊等的運(yùn)行根底。 播放控制主要進(jìn)行mp3音樂(lè)文件的播放控制,主要包括常見(jiàn)播放器的根本的播放控制功能如停止功能、下一首功能、前一首功能等,包
49、括播放器的播放模式的控制主要實(shí)現(xiàn)了常用的五種播放模式:?jiǎn)吻シ?、單曲循環(huán)、列表循環(huán)播放、列表播放、隨機(jī)播放。模式播放的控制主要用在mp3處于播放模式控制下的音樂(lè)文件播放完成時(shí)使用。 播放信息控制主要進(jìn)行當(dāng)前播放狀態(tài)的控制,如播放是處于播放還是停止?fàn)顟B(tài)的信息。當(dāng)前正在播放的mp3的歌手信息、mp3名稱(chēng)、播放的頻率等信息的顯示以及以播放時(shí)間的顯示控制,mp3的數(shù)據(jù)信息通過(guò)解析mp3音樂(lè)文件本身來(lái)獲得。在mp3文件的后置128字節(jié)中保存著mp3的一些根本信息。 Mp3列表管理主要進(jìn)行系統(tǒng)中mp3列表中音樂(lè)文件的維護(hù)。同時(shí)還包括mp3播放器在初始啟動(dòng)的時(shí)候?qū)υ瓉?lái)列表中mp3文件的初始化以及在播放器推出
50、的時(shí)候?qū)ΜF(xiàn)有mp3列表中音樂(lè)文件的保存。本系統(tǒng)中使用.properties格式配置文件的形式來(lái)存儲(chǔ)mp3文件列表。 歌詞本局部的主要功能為提供對(duì)具有歌詞文件的mp3的歌詞的播放時(shí)同步播放。主要根據(jù)當(dāng)前播放的mp3音樂(lè)文件進(jìn)行對(duì)應(yīng)的mp3歌詞文件.lrc的查找,查找到歌詞文件進(jìn)行解析后進(jìn)行時(shí)間點(diǎn)的匹配,匹配成功后在恰當(dāng)?shù)臅r(shí)間點(diǎn)將歌詞顯示在歌詞框中。 其他1. 顯示模式初始定義播放器具有兩種顯示模式:完全模式和迷你模式。系統(tǒng)在完全模式時(shí)系統(tǒng)的主控制面板為最大化狀態(tài),系統(tǒng)的播放狀態(tài),播放時(shí)間,音量控制滾動(dòng)條均處于可見(jiàn)可操做狀態(tài)。系統(tǒng)在迷你模式時(shí)系統(tǒng)的播放狀態(tài),播放時(shí)間,音量控制滾動(dòng)條均處于不可見(jiàn)不可
51、操做狀態(tài)。系統(tǒng)當(dāng)中由一個(gè)模式控制按鈕來(lái)控制播放器模式的切換。音量控制音量控制主要完成控制播放器的音量的大小以及靜音的控制。音量控制按鈕準(zhǔn)備設(shè)計(jì)為一個(gè)滑動(dòng)條,根據(jù)滑動(dòng)條的滾動(dòng)實(shí)現(xiàn)播放器音量大小的增減。系統(tǒng)在開(kāi)始時(shí)要讀取上次播放器的使用時(shí)音量并初始化到播放器的界面上,系統(tǒng)在退出是要對(duì)播放器的音量進(jìn)行保存以便下一次讀取。皮膚切換用于mp3音樂(lè)播放器在系統(tǒng)的各種皮膚之間進(jìn)行切換,同時(shí)支持用戶(hù)自定的皮膚。只要用戶(hù)在系統(tǒng)的皮膚目錄下放入有效的皮膚主題,系統(tǒng)在進(jìn)行皮膚切換操作時(shí)會(huì)首先到系統(tǒng)的皮膚目錄下加載所有的合法的皮膚并將其參加到系統(tǒng)的皮膚面板上,當(dāng)用戶(hù)選擇了某種皮膚樣式后,播放器的皮膚會(huì)自動(dòng)切換為選中的
52、皮膚主題相應(yīng)的圖片。第四章 總體設(shè)計(jì)4.1 系統(tǒng)要求設(shè)計(jì)系統(tǒng)結(jié)構(gòu),根據(jù)需求分析給出的功能得出系統(tǒng)體系結(jié)構(gòu)。如劃分模塊:1.軟件能滿(mǎn)足人們的音樂(lè)播放的目的,而且操作過(guò)程直觀、簡(jiǎn)便。2.系統(tǒng)采用模塊化程序設(shè)計(jì)方法,便于模塊之間獨(dú)立的進(jìn)行開(kāi)發(fā)。3.要求系統(tǒng)可以非常容易的添加新的功能。4.2 系統(tǒng)功能描述本節(jié)以本播放器的功能點(diǎn)和功能模塊單位介紹基于Java的音樂(lè)播放器JMPlayer的總體的功能設(shè)計(jì)。Mp3播放播放器以java多線程編程設(shè)計(jì)了播放器的mp3播放,每播放一首新的mp3音樂(lè)時(shí)都會(huì)產(chǎn)生一個(gè)獨(dú)立的播放線程。在每播放一首新的mp3時(shí),系統(tǒng)會(huì)對(duì)播放器的狀態(tài)做檢查,如果有正在播放音樂(lè)的線程在運(yùn)行,那
53、么首先停止此線程,并重置播放器的狀態(tài)。播放控制主要功能包括播放、停止播放、下一首播放,播放、前一首播放播放信息控制主要功能包括顯示當(dāng)前的播放狀態(tài)、當(dāng)前播放的音樂(lè)文件、mp3的歌手、mp3的音頻頻率以及當(dāng)前mp3播放時(shí)間信息的控制和顯示。Mp3文件列表管理本節(jié)主要包括對(duì)mp3文件的增加、增加時(shí)對(duì)音樂(lè)文件的檢查(此播放器暫時(shí)只支持.mp3和.wav格式的音頻文件)、mp3文件的刪除以及mp3播放是播放索引的控制和增加刪除mp3文件時(shí)mp3顯示的下標(biāo)索引的控制。歌詞本節(jié)的主要功能包括歌詞文件的查找、歌詞文件的解析、歌詞文件在歌詞面板中的顯示。歌詞顯示的控制在本系統(tǒng)中采用一個(gè)獨(dú)立的線程,此線程在mp3
54、開(kāi)始播放是同步開(kāi)始,并在得到歌詞文件Properties集合后負(fù)責(zé)在歌詞面板上顯示對(duì)應(yīng)時(shí)間點(diǎn)的歌詞。顯示模式主要包括完全顯示模式功能和迷你顯示模式功能。音量控制主要包括通過(guò)一個(gè)滑動(dòng)條的拖拽來(lái)實(shí)現(xiàn)音量的大小的控制以及靜音的控制、由靜音轉(zhuǎn)為非靜音時(shí)的音量復(fù)原。皮膚控制主要實(shí)現(xiàn)播放器的一系列的控制按鈕的外觀改變,各種控制按鈕的圖片格式現(xiàn)在只暫時(shí)實(shí)現(xiàn)了對(duì).gif格式圖片的支持,用戶(hù)可以按照播放器的標(biāo)準(zhǔn)定義自己喜歡的播放器的外觀。9. 已播放時(shí)間的控制使用一個(gè)單獨(dú)的線程來(lái)控制mp3的已播放時(shí)間的統(tǒng)計(jì)和顯示,當(dāng)mp3開(kāi)始播放是此線程開(kāi)始運(yùn)行,當(dāng)mp3停止播放時(shí),此線程結(jié)束。此線程運(yùn)行期間會(huì)首先標(biāo)記一個(gè)mp
55、3的開(kāi)始播放時(shí)間,然后會(huì)每0.5秒鐘對(duì)已播放的時(shí)間進(jìn)行一次統(tǒng)計(jì)計(jì)算,并將計(jì)算的結(jié)果格式化為適當(dāng)?shù)臅r(shí)、分、秒的格式顯示在系統(tǒng)的播放信息控制面板上。10. 系統(tǒng)配置文件1. 用于保存播放器狀態(tài)包括播放器的當(dāng)前mp3索引、播放器音量、播放器播放模式、播放器的皮膚樣式等,以便啟動(dòng)時(shí)初始化播放器。2. Mp3Lperties 用于保存播放器的mp3文件列表,包括mp3文件的名稱(chēng)和mp3文件的絕對(duì)路徑。4.3 系統(tǒng)運(yùn)行環(huán)境硬件接口:Pentium 800MHZ 、內(nèi)存128MB、硬盤(pán)500MB以上的PC機(jī)。軟件接口:任何支持Java(JVM)的操作系統(tǒng)4.4 系統(tǒng)設(shè)計(jì)思想 總體流程設(shè)計(jì)本播放
56、器的整體流程為首先啟動(dòng)播放器后使用I/O輸入流讀取數(shù)據(jù)文件,并由此數(shù)據(jù)文件解析得到mp3文件列mp3FileList后讀取配置文件,并由此初始化播放器的狀態(tài),再進(jìn)一步初始化播放器的外觀包括播放模式、Swing mp3 List,、音量、上次退出時(shí)的mp3索引等,最后播放器退出時(shí)將播放器的使用I/O輸出流狀態(tài)寫(xiě)入,播放器的mp3文件列表數(shù)據(jù)寫(xiě)入數(shù)據(jù)文件中。如圖4-1所示開(kāi)始結(jié)束讀取pertiesmp3FileList解析讀取perties初始化播放器狀態(tài)初始化播放器外觀1.初始化播放模式2.初始化音量3.初始化mp3文件列表4.初始化mp3索引播放器退出保存播
57、放器狀態(tài)保存mp3文件列表圖4-1 JMPlayer總體流程圖 Mp3播放設(shè)計(jì)本系統(tǒng)的mp3播放采用線程控制的方式來(lái)進(jìn)行。設(shè)計(jì)思想為首先根據(jù)mp3的路徑查找對(duì)應(yīng)的mp3文件,如果文件不存在那么不做播放處理,如果文件存在那么首先檢查當(dāng)前播放器是否在播放mp3文件,如果正在播放那么停止正在播放的mp3線程并重新初始化mp3播放線程和相關(guān)的資源,初始化完成后開(kāi)始播放。具體流程如圖4-2所示。開(kāi)始結(jié)束查找mp3文件mp3文件存在不存在播放器正在播放存在停止播放線程初始化播放線程是否圖4-2 mp3播放流程圖 播放模式設(shè)計(jì)本系統(tǒng)中共設(shè)計(jì)了五中播放模式:?jiǎn)吻シ?、單曲循環(huán)、列表循環(huán)播放、列表播放、隨機(jī)播放
58、。設(shè)計(jì)思路為系統(tǒng)中維護(hù)一個(gè)當(dāng)前正播放的mp3的索引currentMp3Index,在當(dāng)前播放的mp3播放完后,各種播放模式基于此播放索引決定下一首要播放的mp3的index值,同時(shí)播放模式的類(lèi)中維護(hù)一個(gè)對(duì)播放器的引用。 Mp3文件列表管理設(shè)計(jì)本系統(tǒng)的mp3列表管理采用配置文件( perties )的形式進(jìn)行存儲(chǔ)管理,采用緩存機(jī)制進(jìn)行播放器在運(yùn)行時(shí)mp3文件的增加和刪除管理。本系統(tǒng)最初對(duì)于mp3文件的管理采用的是每次進(jìn)行增加或者刪除mp3文件的操作時(shí),對(duì)進(jìn)行與配置文件的同步更行,性能非常低效,也造成了許多不必要的浪費(fèi),后來(lái)引入緩存機(jī)制對(duì)mp3文件管理極大的提高了系統(tǒng)的性能。詳細(xì)流
59、程如圖 4-3 所示圖4-3 mp3文件列表管理流程圖 歌詞設(shè)計(jì)本局部當(dāng)中也采用一個(gè)獨(dú)立的線程來(lái)進(jìn)行歌詞時(shí)間和顯示的控制,首先在mp3開(kāi)始播放后會(huì)根據(jù)mp3文件名到系統(tǒng)的lyrics目錄下查找對(duì)應(yīng)于此mp3名稱(chēng)的.lrc格式的歌詞文件,如果找到那么進(jìn)一步解析此lrc歌詞文件,解析完成后此線程會(huì)根據(jù)自己的獨(dú)立的時(shí)間統(tǒng)計(jì)來(lái)匹配解析出來(lái)的時(shí)間戳,如果匹配成功那么把對(duì)應(yīng)時(shí)間點(diǎn)的歌詞顯示在歌詞面板當(dāng)中。具體流程如圖4-4所示圖4-4 JMPlayer歌詞控制流程圖 皮膚切換設(shè)計(jì)因?yàn)樵O(shè)計(jì)的時(shí)間有限本系統(tǒng)的皮膚切換功能只是針對(duì)了系統(tǒng)的控制按鈕的外觀進(jìn)行, 如果時(shí)間能再寬裕一些可以進(jìn)行針對(duì)播放器整個(gè)外觀的皮膚
60、切換的設(shè)計(jì)和更加靈活的控制。另外由于時(shí)間的原因本系統(tǒng)的所支持的皮膚圖片文件格式目前只限于對(duì).gif格式文件,此處可以作為以后再研究和補(bǔ)充的一個(gè)設(shè)計(jì)點(diǎn)。皮膚切換的設(shè)計(jì)思路為,首先到系統(tǒng)的皮膚目錄skin目錄下查找符合條件的皮膚主題, 并將其顯示在播放器的皮膚面板中,中選中某一種主題的皮膚后,播放器的相應(yīng)局部的外觀圖片會(huì)被替換成選中的主題皮膚的對(duì)應(yīng)圖片。具體流程如圖4-5所示圖4-5 JMPlayer皮膚切換設(shè)計(jì)流程圖 顯示模式設(shè)計(jì)當(dāng)系統(tǒng)處于完全模式時(shí),點(diǎn)擊顯示模式對(duì)應(yīng)的按鈕時(shí),隱藏系統(tǒng)的播放信息顯示控制面板,同時(shí)設(shè)置計(jì)算播放器的位置和大小。當(dāng)系統(tǒng)處于迷你模式時(shí),點(diǎn)擊顯示模式對(duì)應(yīng)的按鈕時(shí),顯示系統(tǒng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年教育機(jī)構(gòu)教室出租合同
- 2024年北京房產(chǎn)交易合同參考樣式
- 2024年度品牌授權(quán)與分銷(xiāo)協(xié)議
- 2024年房產(chǎn)買(mǎi)賣(mài)擔(dān)保協(xié)議
- 新員工試用期工作總結(jié)2024年
- 2024年房地產(chǎn)按揭借款合同
- 2024年羥胺項(xiàng)目綜合評(píng)估報(bào)告
- 2023年數(shù)顯讀卡儀項(xiàng)目綜合評(píng)估報(bào)告
- 2024年度短視頻內(nèi)容創(chuàng)作與版權(quán)許可合同
- 2024年式門(mén)產(chǎn)品購(gòu)買(mǎi)與施工合同
- 國(guó)開(kāi)(甘肅)2024年春《地域文化(專(zhuān))》形考任務(wù)1-4終考答案
- 檔案整理及數(shù)字化服務(wù)方案(技術(shù)標(biāo) )
- 角的度量 華應(yīng)龍(課堂PPT)
- 公路銑刨機(jī)整機(jī)的設(shè)計(jì)含全套CAD圖紙
- 機(jī)器人學(xué)課程教學(xué)大綱
- 浙江世貿(mào)君瀾酒店集團(tuán)介紹
- GHTF—質(zhì)量管理體系--過(guò)程驗(yàn)證指南中文版
- 鋁及鋁合金焊接作業(yè)指導(dǎo)書(shū)
- 水利工程質(zhì)量與安全監(jiān)督工作實(shí)務(wù)PPT課件
- 放射性口腔粘膜炎的發(fā)病機(jī)制及危險(xiǎn)因素
- 加油站特殊作業(yè)安全管理制度(完整版)
評(píng)論
0/150
提交評(píng)論