畢業(yè)設(shè)計(論文)-基于JAVA的Mp3播放器JMPlayer_第1頁
畢業(yè)設(shè)計(論文)-基于JAVA的Mp3播放器JMPlayer_第2頁
畢業(yè)設(shè)計(論文)-基于JAVA的Mp3播放器JMPlayer_第3頁
畢業(yè)設(shè)計(論文)-基于JAVA的Mp3播放器JMPlayer_第4頁
畢業(yè)設(shè)計(論文)-基于JAVA的Mp3播放器JMPlayer_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于JAVA的Mp3播放器JMPlayer作 者 姓 名 專 業(yè) 計算機科學(xué)與技術(shù) 指導(dǎo)教師姓名 專業(yè)技術(shù)職務(wù) 講 師 山東輕工業(yè)學(xué)院本科畢業(yè)設(shè)計論文原創(chuàng)性聲明本人鄭重聲明:所呈交的畢業(yè)論文,是本人在指導(dǎo)教師的指導(dǎo)下獨立研究、撰寫的成果。論文中引用他人的文獻、數(shù)據(jù)、圖件、資料,均已在論文中加以說明,除此之外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文研究做出重要奉獻的個人和集體,均已在文中作了明確說明并表示了謝意。本聲明的法律結(jié)果由本人承當(dāng)。畢業(yè)論文作者簽名: 年 月 日山東輕工業(yè)學(xué)院關(guān)于畢業(yè)設(shè)計論文使用授權(quán)的說明本畢業(yè)論文作者完全了解學(xué)校有關(guān)保存、使用畢業(yè)論文的規(guī)定,即:學(xué)

2、校有權(quán)保存、送交論文的復(fù)印件,允許論文被查閱和借閱,學(xué)??梢怨荚O(shè)計論文的全部或局部內(nèi)容,可以采用影印、掃描等復(fù)制手段保存本論文。指導(dǎo)教師簽名: 畢業(yè)設(shè)計論文作者簽名: 年 月 日 年 月 日 目 錄 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 音樂播發(fā)器的開展及歷史 PAGEREF _Toc265409228 h 1 HYPERLINK l _Toc265409229 1.3 系統(tǒng)開發(fā)目標 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簡介 PAGEREF _Toc265409232 h 3 HYPERLINK l _Toc265409233 2.2 Java Thread簡介 PAGEREF _Toc265409233 h 4 HYPERLINK l _Toc265409234 2.3 JavaSound簡介 PAGEREF _Toc265409234 h 5 HYPERLINK l _Toc265409235 2.4 Java Swing簡介 PAGEREF _Toc265409235 h 6 H

5、YPERLINK l _Toc265409236 2.5 Java Properties簡介 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 評價具體需求分析 PAGEREF _Toc265409239 h 9 HYPERLINK l _Toc265409240 3.3 系統(tǒng)功能結(jié)構(gòu)圖

6、PAGEREF _Toc265409240 h 9 HYPERLINK l _Toc265409241 3.4 功能詳細描述 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è)計 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)運行環(huán)境 PAGEREF _Toc265409251 h 13 HYPERLINK l _Toc265409252 4.4 系統(tǒng)設(shè)計思想 PAGEREF _Toc265409252 h 13 HYPERLINK l _Toc265409253 4.4.1 總體流程設(shè)計 PAGEREF _Toc265409253 h 13 HYPERLINK l _Toc265409254 4.4.2 Mp3播放設(shè)計 PAGEREF

9、_Toc265409254 h 14 HYPERLINK l _Toc265409255 4.4.3 播放模式設(shè)計 PAGEREF _Toc265409255 h 15 HYPERLINK l _Toc265409256 4.4.4 Mp3文件列表管理設(shè)計 PAGEREF _Toc265409256 h 15 HYPERLINK l _Toc265409257 4.4.5 歌詞設(shè)計 PAGEREF _Toc265409257 h 16 HYPERLINK l _Toc265409258 4.4.6 皮膚切換設(shè)計 PAGEREF _Toc265409258 h 17 HYPERLINK l _T

10、oc265409259 4.4.7 顯示模式設(shè)計 PAGEREF _Toc265409259 h 18 HYPERLINK l _Toc265409260 第五章 詳細設(shè)計 PAGEREF _Toc265409260 h 19 HYPERLINK l _Toc265409261 5.1 界面設(shè)計 PAGEREF _Toc265409261 h 19 HYPERLINK l _Toc265409262 5.2 系統(tǒng)關(guān)鍵類設(shè)計 PAGEREF _Toc265409262 h 20 HYPERLINK l _Toc265409263 5.3 系統(tǒng)類結(jié)構(gòu) PAGEREF _Toc265409263 h

11、 22 HYPERLINK l _Toc265409264 第六章 軟件功能實現(xiàn) PAGEREF _Toc265409264 h 23 HYPERLINK l _Toc265409265 6.1 播放Mp3實現(xiàn) PAGEREF _Toc265409265 h 23 HYPERLINK l _Toc265409266 6.2 Mp3文件解析實現(xiàn) PAGEREF _Toc265409266 h 23 HYPERLINK l _Toc265409267 6.3 Mp3列表控制類實現(xiàn) PAGEREF _Toc265409267 h 23 HYPERLINK l _Toc265409268 6.4 Mp

12、3歌詞解析及顯示控制實現(xiàn) PAGEREF _Toc265409268 h 24結(jié)束語 HYPERLINK l _Toc265409269 PAGEREF _Toc265409269 h 25 HYPERLINK l _Toc265409270 參考文獻 PAGEREF _Toc265409270 h 26 HYPERLINK l _Toc265409271 致 謝 PAGEREF _Toc265409271 h 27摘 要隨著java 語言的出現(xiàn),軟件的跨平臺性已經(jīng)能被更進一步的解決和處理,隨著Internet的開展,軟件的跨平臺性又被提高到另一個新的要求。音樂播放器是一種用于播放各種音樂文件

13、的多媒體播放軟件。它涵蓋了各種音樂格式的播放工具,比方:MP3播放器,WMA播放器,MP4播放器等。它們不僅界面美觀,而且操作簡單,帶你進入一個完美的音樂空間。本系統(tǒng)是一個簡單的Mp3音樂播放器實現(xiàn),旨在借助于java語言的強大的跨平臺特性來實現(xiàn)本播放器的跨平臺的通用。但由于設(shè)計時間有限目前僅支持mp3和wav格式音樂文件的播放。本系統(tǒng)的主要使用了Java中的多線程編程,系統(tǒng)中的mp3播放、歌詞解析及顯示、播放時間的顯示控制、播放器的主界面等都是單獨采用一個獨立的線程來進行管理控制的。本系統(tǒng)在結(jié)構(gòu)上的核心設(shè)計模式采用了GOF的中介者模式,以此來使各個模塊的相互耦合度降到最低,以便更容易的進行各

14、個模塊的獨立的開發(fā)從而使整個系統(tǒng)的靈活性和可擴展性都得到提高。開發(fā)時采用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ù)的開展也是日新月異,人們對于音樂的享受方式也是不斷的發(fā)生變化,各種音樂播放軟件讓人們享受變的更加的舒適,愉快和方便?;诰幊陶Z言的不同以及Internet 的開展,現(xiàn)在比擬流行的音樂播放的形式有軟件播放像千千靜定,酷我音樂盒等,在線軟件播放像百度的在線音樂盒,以及各大門戶網(wǎng)站根本上都提供了在線收聽音樂的效勞。在線收聽的形式可以不依賴于操作系統(tǒng)的軟件環(huán)境但凡能與Internet連接的計算機都可以進行在線收聽。但在收聽也有它的局限性,像無法與Internet連接時。這時候本地的音樂播放軟件就顯示出它的優(yōu)勢來了,

20、但由于操作系統(tǒng)的本身軟件環(huán)境及生產(chǎn)廠家的限制,使用非可夸平臺語言編寫的音樂播放軟件無法做到在操作系統(tǒng)上的共用,此題目的意義在于使用java這種跨平臺的語言,編寫一個通用的音樂播放軟件。1.2 音樂播發(fā)器的開展及歷史時下,音樂播放器已經(jīng)成為人們生活中不可或缺的必備品。它的誕生,讓動聽的聲音有了存儲的載體,得以廣泛的傳播和分享。接下來,筆者就針對它的開展史做個簡單的回憶。1877年12月,愛迪生公開表演了留聲機,“會說話的機器誕生的消息,立刻轟動了全世界。外界輿論馬上把他譽為科學(xué)界之拿破侖,留聲機也成為19世紀最引人振奮的三大創(chuàng)造之一。1898年,丹麥的V.波爾森創(chuàng)造了鋼絲錄音機,從此,以硬磁性材

21、料為載體,利用磁性材料的剩磁特性將聲音信號記錄在載體,具有重放、錄音功能的磁帶錄音機開始在家庭普及。隨著社會的開展和科技的進步,人們對音色品質(zhì)的追求越來越高。老式錄音機音色簡單、蒼白的特性,使其逐漸被社會淘汰。代表著更清晰、立體聲、更渾厚音質(zhì)的播放器CD正式登上舞臺。1982年,世界上第一臺CD播放器、同時也是索尼生產(chǎn)的第一臺CD播放器誕生了Sonys CDP-101。CD的出現(xiàn),依靠完美的音質(zhì)表現(xiàn)、快捷搜歌、方便攜帶等功能,風(fē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ā)布的第一款實時 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)讓許多人能夠在自己的個人 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文件,音樂播放器的智能時代正式來臨,但是由于PC和互聯(lián)網(wǎng)的開展所限, HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank class.asp?sc

24、lassid=126 t _blank MP3并沒有獲得廣泛的普及。直到2001年10月,蘋果公司推出了第一代IPOD,將 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3播放器演繹到藝術(shù)與文化的境界。它不僅容量巨大,操作智能,而且外形時尚,一經(jīng)推出,即刻獲到全球范圍內(nèi)的熱捧!蘋果公司之所以強大,除了自身強大的研發(fā)能力和創(chuàng)新意識以外,善于利用外設(shè)廠商資源,也是其成功的

25、重要一環(huán)。在蘋果的研發(fā)基地,來自全球70多家頂尖配件廠商共同參與蘋果每一款新品的研發(fā)過程。世界頂級音響制造品牌JBL、哈曼卡頓、全球最知名的三大耳機品牌UE、ETY、WESTONE都量身為IPOD打造完美的聲音輸出設(shè)備,讓IPOD完美的音質(zhì)得以淋漓盡致的展現(xiàn)。 1.3 系統(tǒng)開發(fā)目標本系統(tǒng)的開發(fā)目標為: 開發(fā)出一個不受操作系統(tǒng)(此操作系統(tǒng)必須支持JAVASE)限制的mp3音樂播放器。此播放器要實現(xiàn)一般常見播放器的一些通用的功能。要求系統(tǒng)的各個模塊之間盡可能的到達高內(nèi)聚,低耦合,要求系統(tǒng)具有較高的可維護性和可擴展性。1.4 本文的主要內(nèi)容和結(jié)構(gòu)本論文由五章構(gòu)成,其中第四、五章為核心局部,講述了系統(tǒng)

26、的實現(xiàn)。具體的每個章節(jié)的主要內(nèi)容如下:第一章 引言。主要介紹了課題的研究背景及意義以及系統(tǒng)的開發(fā)目標以及mp3播放器的開展歷史。第二章 相關(guān)工具及技術(shù)介紹。主要介紹了Java線程、Java多線程編程,java音樂播放的主要APIJavaSound、播放器所使用的界面APISwing、Eclipse開發(fā)工具。第三章 需求分析。主要從需求的角度介紹了mp3音樂播放器的功能等。第四章 總體設(shè)計。本章為本文的核心局部,主要介紹了mp3播放器的各個設(shè)計點的設(shè)計思想。第五章 詳細設(shè)計。本章也是系統(tǒng)的核心章節(jié)之一,主要介紹了播放器的界面設(shè)計、系統(tǒng)的關(guān)鍵類的設(shè)計以及系統(tǒng)的類結(jié)構(gòu)。第五章 軟件功能實現(xiàn)。本章主要

27、從代碼的角度介紹了整個播放器的設(shè)計。第二章 相關(guān)工具及技術(shù)介紹2.1 Eclipse簡介Eclipse是一個非常優(yōu)秀的集成開發(fā)環(huán)境。IBM花了多年的時間來開發(fā)基于Java的公開源代碼的軟件Eclipse,這個在IBM支持下的開發(fā)源碼工程經(jīng)過一段時期的開展完善,已經(jīng)為廣闊Java開發(fā)者所熟悉。Eclipse是一個用于構(gòu)建集成Web和應(yīng)用程序開發(fā)工具的平臺,它本身并不會提供大量的最終用戶功能,而是通過插件來快速開發(fā)集成功能的部件。Eclipse是一款非常優(yōu)秀的開源IDE,非常適合Java開發(fā),由于支持插件技術(shù),受到了越來越多的開發(fā)者的歡送。最新的不但界面作了很大的增強,而且增加了代碼折疊等眾多優(yōu)秀

28、功能,速度也有明顯的提升。配合眾多令人眼花繚亂的插件,完全可以滿足從企業(yè)級Java應(yīng)用到 終端Java游戲的開發(fā)。Eclipse提供了公共用戶界面模型來使用工具。Eclipse軟件旨在簡化用于多操作系統(tǒng)軟件工具的開放過程,他被設(shè)計成可以在多個操作系統(tǒng)上運行,基于Eclipse的軟件在Linux和微軟Windows系統(tǒng)上都可以運行,因此可以省去開發(fā)者有時要把Windows應(yīng)用程序切換到Linux的操作,進而簡化了整個開發(fā)過程。同時Eclipse還提供了于每個底層操作系統(tǒng)強大集成。Eclipse的核心是動態(tài)發(fā)現(xiàn)插件的體系結(jié)構(gòu)。平臺負責(zé)處理根本環(huán)境的后臺工作,并提供標準的用戶導(dǎo)航模型,于是每個插件可

29、以專注于執(zhí)行少量的任務(wù),Eclipse的出現(xiàn),不僅為Java開發(fā)者提供了免費使用強大的Java IDE的時機,而且也為C+的開發(fā)者提供了CDT。通過集成大量的插件,Eclipse的功能可以不斷擴展,以支持各種不同的應(yīng)用。Eclipse軟件可以用于管理多種開發(fā)任務(wù),其中包括測試、性能調(diào)整以及程序調(diào)試等,而且還可以繼承來自多個供貨商的第三方應(yīng)用程序開發(fā)工具。此外,Eclipse軟件非常適合開發(fā)電子商務(wù)應(yīng)用程序,例如IBM公司自己的面向Web效勞的WebSpbere應(yīng)用程序開發(fā)工具就是建立在Eclipse根底之上。除此之外,Eclipse平臺是一個成熟的、精心設(shè)計的、可擴展的體系結(jié)構(gòu)。Eclipse

30、的價值在于他為創(chuàng)立可擴展的集成開發(fā)環(huán)境提供了一個開放源碼平臺。這平臺允許任何人構(gòu)建與環(huán)境和其他工具無縫集成的工具,而工具與Eclipse無縫集成的關(guān)鍵便是插件。2.2 Java Thread簡介 線程是程序運行的根本執(zhí)行單元。當(dāng)操作系統(tǒng)(不包括單線程的操作系統(tǒng),如微軟早期的DOS)在執(zhí)行一個程序時,會在系統(tǒng)中建立一個進程,而在這個進程中,必須至少建立一個線程這個線程被稱為主線程來作為這個程序運行的入口點。因此,在操作系統(tǒng)中運行的任何程序都至少有一個主線程。進程和線程是現(xiàn)代操作系統(tǒng)中兩個必不可少的運行模型。在操作系統(tǒng)中可以有多個進程,這些進程包括系統(tǒng)進程由操作系統(tǒng)內(nèi)部建立的進程和用戶進程由用戶程

31、序建立的進程;一個進程中可以有一個或多個線程。進程和進程之間不共享內(nèi)存,也就是說系統(tǒng)中的進程是在各自獨立的內(nèi)存空間中運行的。而一個進程中的線可以共享系統(tǒng)分派給這個進程的內(nèi)存空間。線程不僅可以共享進程的內(nèi)存,而且還擁有一個屬于自己的內(nèi)存空間,這段內(nèi)存空間也叫做線程棧, 是在建立線程時由系統(tǒng)分配的,主要用來保存線程內(nèi)部所使用的數(shù)據(jù),如線程執(zhí)行函數(shù)中所定義的變量。Java編寫程序都運行在在Java虛擬機JVM中,在JVM的內(nèi)部,程序的多任務(wù)是通過線程來實現(xiàn)的。每用java命令啟動一個java 應(yīng)用程序,就會啟動一個JVM進程。在同一個JVM進程中,有且只有一個進程,就是它自己。在這個JVM環(huán)境中,所

32、有程序代碼的運行都是以線程來運行。一般常見的Java應(yīng)用程序都是單線程的。比方,用java命令運行一個最簡單的HelloWorld的Java應(yīng)用程序時,就啟動了一個 JVM進程,JVM找到程序程序的入口點main(),然后運行main()方法,這樣就產(chǎn)生了一個線程,這個線程稱之為主線程。當(dāng)main方法結(jié)束后, 主線程運行完成。JVM進程也隨即退出 。對于一個進程中的多個線程來說,多個線程共享進程的內(nèi)存塊,當(dāng)有新的線程產(chǎn)生的時候,操作系統(tǒng)不分配新的內(nèi)存,而是讓新線程共享原有的進程塊的內(nèi)存。因此,線程間的通信很容易,速度也很快。不同的進程因為處于不同的內(nèi)存塊,因此進程之間的通信相對困難。實際上,操

33、作的系統(tǒng)的多進程實現(xiàn)了多任務(wù)并發(fā)執(zhí)行,程序的多線程實現(xiàn)了進程的并發(fā)執(zhí)行。多任務(wù)、多進程、多線程的前提都是要求操作系統(tǒng)提供多任務(wù)、多進程、多線程的支持。在Java程序中,JVM負責(zé)線程的調(diào)度。線程調(diào)度是值按照特定的機制為多個線程分配CPU的使用權(quán)。調(diào)度的模式有兩種:分時調(diào)度和搶占式調(diào)度。分時調(diào)度是所有線程輪流獲得CPU使用權(quán),并平均分配每個線程占用CPU的時間;搶占式調(diào)度是根據(jù)線程的優(yōu)先級別來獲取CPU的使用權(quán)。JVM的線程調(diào)度模式采用了搶占式模式。所謂的“并發(fā)執(zhí)行 、“同時其實都不是真正意義上的“同時 。眾所周知,CPU都有個時鐘頻率,表示每秒中能執(zhí)行cpu指令的次數(shù)。在每個時鐘周期內(nèi),CPU

34、實際上只能去執(zhí)行一條也有可能多條指令。操作系統(tǒng)將進程線程進行管理,輪流沒有固定的順序分配每個進程很短的一段是時間不一定是均分,然后在每個線程內(nèi)部,程序代碼自己處理該進程內(nèi)部線程的時間分配,多個線程之間相互的切換去執(zhí)行,這個切換時間也是非常短的。因此多任務(wù)、多進程、多線程都是操作系統(tǒng)給人的一種宏觀感受,從微觀角度看,程序的運行是異步執(zhí)行的。Java語言的多線程需要操作系統(tǒng)的支持。Java 虛擬機允許應(yīng)用程序并發(fā)地運行多個執(zhí)行線程。Java語言提供了多線程編程的擴展點,并給出了功能強大的線程控制API。在Java中,多線程的實現(xiàn)有兩種方式: 1. 擴展d類2. 實現(xiàn)接口 每個線程都有一個優(yōu)先級,高

35、優(yōu)先級線程的執(zhí)行優(yōu)先于低優(yōu)先級線程。每個線程都可以或不可以標記為一個守護程序。當(dāng)某個線程中運行的代碼創(chuàng)立一個 新 Thread 對象時,該新線程的初始優(yōu)先級被設(shè)定為創(chuàng)立線程的優(yōu)先級,并且當(dāng)且僅當(dāng)創(chuàng)立線程是守護線程時,新線程才是守護程序。 當(dāng) Java 虛擬機啟動時,通常都會有單個非守護線程它通常會調(diào)用某個指定類的 main 方法。Java 虛擬時機繼續(xù)執(zhí)行線程,直到以下任一情況出現(xiàn)時為止: 1. 調(diào)用了 Runtime 類的 exit 方法,并且平安管理器允許退出操作發(fā)生。2. 非守護線程的所有線程都已停止運行,無論是通過從對 run 方法的調(diào)用中返回,還是通過拋出一個傳播到 run 方法之外

36、的異常。2.3 JavaSound簡介JavaSound是一個小巧的低層API,支持數(shù)字音頻和MIDI數(shù)據(jù)的記錄/回放。在JDK 之前,JavaSound是一個標準的Java擴展API,但從Java 2的版開始,JavaSound就被包含到JDK之中。由于Java有著跨平臺操作系統(tǒng)、硬件平臺的特點,基于JavaSound的音頻處理程序包括本文的程序能夠在任何實現(xiàn)了Java 1.3+的系統(tǒng)上運行,無需加裝任何支持軟件。使用JavaSound API,可以實現(xiàn)各種基于聲音的應(yīng)用,例如聲音錄制、音樂播放、網(wǎng)絡(luò) 、音樂編輯等。JavaSound API又以各種解碼和合成器SPI效勞提供者接口, Ser

37、vice Provider Interface為根底,實現(xiàn)各種音樂格式的解碼與轉(zhuǎn)碼。在處理輸入音頻時,對于來自各種音頻輸入端口的信號,例如麥克風(fēng)、CD播放器、磁帶播放器等,可以在它們到達TargetDataLine之前,利用混頻器控制輸入混頻,最后在程序中通過TargetDataLine獲得數(shù)字化的音頻輸入流。類似地,在處理輸出音頻時,混頻器用來對一系列來自SourceDataLine的數(shù)據(jù)進行混頻處理,經(jīng)處理后的信號可輸出到各種輸出端口,例如揚聲器、耳機等。SourceDataLine是一個可寫入音頻信號數(shù)字流的設(shè)備,例如,我們可以從一個WAV文件讀取內(nèi)容寫入到SourceDataLine,

38、然后再通過揚聲器輸出。2.4 Java Swing簡介Swing是一個為Java設(shè)計的GUI工具包。 Swing 是 Java API 的一局部。 Swing 包括了圖形用戶界面 (GUI) 器件 如:文本框,按鈕,分隔窗格和表。 Swing提供許多比HYPERLINK :/ hudong /wiki/AWTAWT更 好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運行,這一點不像AWT。 它們是JFC的一局部。 它們支持可更換的觀感和主題各種操作系統(tǒng)默認的特有主題,然而不是真的使用原生平臺提供的設(shè)備,而是僅僅在外表上模仿它們。這意味著你可以在任意平臺 上使用Java支

39、持的任意觀感。 輕量級元件的缺點那么是執(zhí)行速度較慢,優(yōu)點就是可以在所有平臺上采用統(tǒng)一的行為。SUN把Swing定義為一組用戶自定義化的圖形組件,這些組件的外觀樣式可以在運行時改變。實際上,Swing含義遠不只此。它是Sun創(chuàng)立的用于java企業(yè)級應(yīng)用開發(fā)的下一代GUI工具集。這就意味著程序員可以使用Swing和一組功能強大的組件來創(chuàng)立大型java應(yīng)用程序。還可以方便地擴展或者修改這些組件來控制它們的外觀和行為。 根本類庫是用來幫助程序員使用java創(chuàng)立企業(yè)級應(yīng)用的一組庫。JFC除了包括Swing外,還包括AWT,Accessibility API, 2D API,并加強了對拖放功能的支持。 S

40、wing是建立在核心AWT庫之上。Swing并不包括任何平臺相關(guān)本地代碼,你可以在任何實現(xiàn)jdk以上的平臺或虛擬機上發(fā)布Swing。 Swing引進了一個Action類,這使得協(xié)調(diào)GUI組件和它們的功能簡單化。盡管本身沒有定義大量事件,Swing卻極其依賴于的事件處理機制。每一個Swing組件還包括一些外在屬性。這是因為Swing組件和JavaBeans標準有聯(lián)系。這就意味著可以把Swing組件引進到各種GUI構(gòu)建工具中,這對可視化編程來說很有用處。Swing的特性有:1可插拔的外觀樣式。Swing允許用戶在運行時改變外觀樣式而不需要關(guān)閉應(yīng)用程序。2輕量級組件 這是指組件不依賴于本地的對等組件

41、來渲染它們。而是它們使用簡單的圖形元素來繪制自身甚至允許局部透明。而AWT組件是“重型組件。輕型組件使用Graphics對象的繪圖元素象drawLine(),fillRect()等來渲染自身。一般在包含它們的頂層重型組件外表渲染自身。絕把局部Swing組件是輕型組件,只有一些頂層容器不是。這種設(shè)計使得程序員可以在運行時繪制應(yīng)用程序的外觀。而且,Swing組件支持組件行為的簡單修改。Swing包含250多個類,是組件和支持類的集合。Swing提供了40多個組件,是AWT組件的四倍。除提供替代AWT重量組件的輕量組件外,Swing還提供了大量有助于開發(fā)圖形用戶界面的附加組件。1. AWT的替代組件

42、用于替代AWT重量組件的Swing輕量組件中許多組件與它們所替代的AWT組件幾乎是源代碼兼容的。這使得替換AWT組件的工作相當(dāng)簡單。除模仿AWT組件所提供的功能外,幾乎所有的Swing替代組件都有其他一些特性。例如,Swing按鈕和標簽可顯示圖標和文本,而AWT按鈕和標簽只能顯示文本。該類組件均使用Windows的界面樣式。2. Swing增加的組件除提供AWT重量組件的替代組件外,Swing還提供了許多其他組件,如表格、樹、定制對話框等。2.5 Java Properties簡介擴展名為.properties的文件經(jīng)常作為配置文件出現(xiàn)在我們的應(yīng)用中,如Hibernate、log4j等就曾經(jīng)或

43、正在使用.properties作為核心配置文件。掌握此類文件的讀寫對我們理解配置文件的好處是顯而易見的。Properties 類表示了一個持久的屬性集 REF _Ref202118323 r h * MERGEFORMAT 。Properties 可保存在流中或從流中加載。屬性列表中每個鍵及其對應(yīng)值都是一個字符串。 一個屬性列表可包含另一個屬性列表作為它的“默認值;如果未能在原有的屬性列表中搜索到屬性鍵,那么搜索第二個屬性列表。 因為 Properties 繼承于 Hashtable,所以可對 Properties 對象應(yīng)用 put 和 putAll 方法。但強烈反對使用這兩個方法,因為它們允

44、許調(diào)用方插入其鍵或值不是 Strings 的項。相反,應(yīng)該使用 setProperty 方法。如果在“有危險的 Properties 對象即包含非 String 的鍵或值上調(diào)用 store 或 save 方法,那么該調(diào)用將失敗。 load 和 store 方法按簡單的面向行的格式加載和存儲屬性。此格式使用 ISO 8859-1 字符編碼??梢允褂?Unicode 轉(zhuǎn)義符來編寫此編碼中無法直接表示的字符;轉(zhuǎn)義序列中只允許單個 u 字符。可使用 native2ascii 工具對屬性文件和其他字符編碼進行相互轉(zhuǎn)換。 loadFromXML(InputStream) 和 storeToXML(Outp

45、utStream) 方法按簡單的 XML 格式加載和存儲屬性。默認使用 UTF-8 字符編碼,但如果需要,可以指定某種特定的編碼。XML 屬性文檔具有以下 DOCTYPE 聲明: 注意,導(dǎo)入或?qū)С鰧傩詴r不訪問系統(tǒng) URI ( :/java.sun /dtd/properties.dtd);該系統(tǒng) URI 僅作為一個惟一標識 DTD 的字符串。第三章 需求分析3.1 工作流程分析用戶希望通過音樂播放器實現(xiàn)mp3音樂播放的功能,同時用戶可以自主的控制播放器中的mp3的播放,包括前一首播放、下一首播放、停止播放。同時用戶希望看到當(dāng)前正在播放的mp3的詳細信息,比方mp3的專輯、年份、歌手等信息,用戶

46、還想對當(dāng)前播放器的整體狀態(tài)有一個了解,如以播放時長等。用戶可以對播放器的音量進行控制,可以對播放器自動播放mp3的播放順序作出選擇,可以對播放器的皮膚樣式作出更改,用戶肯能還想定義自己喜歡風(fēng)格樣式的播放器皮膚。如果有歌詞文件存在的話,用戶可能希望播放器能夠同步顯示對應(yīng)的歌詞。用戶有時可能還會感覺將播放的界面變的非常小放在桌面的某個角落會更適宜一些。3.2 評價具體需求分析1. mp3播放 主要用于播放器的mp3音樂文件的播放。2. 播放控制 主要用于播放器的下一首播放、前一首播放、停止播放、播放的控制。3. 播放信息顯示控制 主要包括mp3的已播放時間、播放狀態(tài)、mp3文件信息的顯示。4. m

47、p3列表管理 主要包括對播放器中mp3音樂文件的增加、增加時的檢查和刪除。5. 歌詞解析及同步顯示 主要包括對歌詞文件的查找、解析和同步顯示。6. 播放模式控制 主要用于在播放器的各種播放模式之間進行切換,如循環(huán)播放、隨機播放等。7. 顯示方式控制 主要用于控制播放器的迷你模式和完全模式的切換及同步的組件的顯示和隱藏。8. 皮膚切換控制 用于在系統(tǒng)的各種皮膚之間進行切換。9. 音量控制 控制播放器的音量大小。3.3 系統(tǒng)功能結(jié)構(gòu)圖本Mp3音樂播放器的主要功能分為五大模塊,分別是播放控制模塊、播放信息控制模塊、Mp3列表管理模塊、歌詞模塊、以及其他功能模塊。在各個模塊中又包含更詳細的功能劃分詳細

48、內(nèi)容如圖3-1所示播放控制停止控制下一首控制前一首控制播放模式播放控制播放信息控制Mp3信息播放信息歌詞歌詞解析歌詞顯示其他音量控制顯示模式皮膚切換Mp3列表管理刪除Mp3增加Mp3Mp3播放播放Mp3JMPlayer圖3-1 JMPlayer系統(tǒng)功能結(jié)構(gòu)圖3.4 功能詳細描述 Mp3播放此局部為系統(tǒng)的核心局部,主要使用了JavaSoundAPI控制操作系統(tǒng)的音頻系統(tǒng),以音頻系統(tǒng)的音頻輸入輸出流進行Mp3的播放,此局部是播放控制模塊、播放信息控制模塊、歌詞模塊等的運行根底。 播放控制主要進行mp3音樂文件的播放控制,主要包括常見播放器的根本的播放控制功能如停止功能、下一首功能、前一首功能等,包

49、括播放器的播放模式的控制主要實現(xiàn)了常用的五種播放模式:單曲播放、單曲循環(huán)、列表循環(huán)播放、列表播放、隨機播放。模式播放的控制主要用在mp3處于播放模式控制下的音樂文件播放完成時使用。 播放信息控制主要進行當(dāng)前播放狀態(tài)的控制,如播放是處于播放還是停止狀態(tài)的信息。當(dāng)前正在播放的mp3的歌手信息、mp3名稱、播放的頻率等信息的顯示以及以播放時間的顯示控制,mp3的數(shù)據(jù)信息通過解析mp3音樂文件本身來獲得。在mp3文件的后置128字節(jié)中保存著mp3的一些根本信息。 Mp3列表管理主要進行系統(tǒng)中mp3列表中音樂文件的維護。同時還包括mp3播放器在初始啟動的時候?qū)υ瓉砹斜碇衜p3文件的初始化以及在播放器推出

50、的時候?qū)ΜF(xiàn)有mp3列表中音樂文件的保存。本系統(tǒng)中使用.properties格式配置文件的形式來存儲mp3文件列表。 歌詞本局部的主要功能為提供對具有歌詞文件的mp3的歌詞的播放時同步播放。主要根據(jù)當(dāng)前播放的mp3音樂文件進行對應(yīng)的mp3歌詞文件.lrc的查找,查找到歌詞文件進行解析后進行時間點的匹配,匹配成功后在恰當(dāng)?shù)臅r間點將歌詞顯示在歌詞框中。 其他1. 顯示模式初始定義播放器具有兩種顯示模式:完全模式和迷你模式。系統(tǒng)在完全模式時系統(tǒng)的主控制面板為最大化狀態(tài),系統(tǒng)的播放狀態(tài),播放時間,音量控制滾動條均處于可見可操做狀態(tài)。系統(tǒng)在迷你模式時系統(tǒng)的播放狀態(tài),播放時間,音量控制滾動條均處于不可見不可

51、操做狀態(tài)。系統(tǒng)當(dāng)中由一個模式控制按鈕來控制播放器模式的切換。音量控制音量控制主要完成控制播放器的音量的大小以及靜音的控制。音量控制按鈕準備設(shè)計為一個滑動條,根據(jù)滑動條的滾動實現(xiàn)播放器音量大小的增減。系統(tǒng)在開始時要讀取上次播放器的使用時音量并初始化到播放器的界面上,系統(tǒng)在退出是要對播放器的音量進行保存以便下一次讀取。皮膚切換用于mp3音樂播放器在系統(tǒng)的各種皮膚之間進行切換,同時支持用戶自定的皮膚。只要用戶在系統(tǒng)的皮膚目錄下放入有效的皮膚主題,系統(tǒng)在進行皮膚切換操作時會首先到系統(tǒng)的皮膚目錄下加載所有的合法的皮膚并將其參加到系統(tǒng)的皮膚面板上,當(dāng)用戶選擇了某種皮膚樣式后,播放器的皮膚會自動切換為選中的

52、皮膚主題相應(yīng)的圖片。第四章 總體設(shè)計4.1 系統(tǒng)要求設(shè)計系統(tǒng)結(jié)構(gòu),根據(jù)需求分析給出的功能得出系統(tǒng)體系結(jié)構(gòu)。如劃分模塊:1.軟件能滿足人們的音樂播放的目的,而且操作過程直觀、簡便。2.系統(tǒng)采用模塊化程序設(shè)計方法,便于模塊之間獨立的進行開發(fā)。3.要求系統(tǒng)可以非常容易的添加新的功能。4.2 系統(tǒng)功能描述本節(jié)以本播放器的功能點和功能模塊單位介紹基于Java的音樂播放器JMPlayer的總體的功能設(shè)計。Mp3播放播放器以java多線程編程設(shè)計了播放器的mp3播放,每播放一首新的mp3音樂時都會產(chǎn)生一個獨立的播放線程。在每播放一首新的mp3時,系統(tǒng)會對播放器的狀態(tài)做檢查,如果有正在播放音樂的線程在運行,那

53、么首先停止此線程,并重置播放器的狀態(tài)。播放控制主要功能包括播放、停止播放、下一首播放,播放、前一首播放播放信息控制主要功能包括顯示當(dāng)前的播放狀態(tài)、當(dāng)前播放的音樂文件、mp3的歌手、mp3的音頻頻率以及當(dāng)前mp3播放時間信息的控制和顯示。Mp3文件列表管理本節(jié)主要包括對mp3文件的增加、增加時對音樂文件的檢查(此播放器暫時只支持.mp3和.wav格式的音頻文件)、mp3文件的刪除以及mp3播放是播放索引的控制和增加刪除mp3文件時mp3顯示的下標索引的控制。歌詞本節(jié)的主要功能包括歌詞文件的查找、歌詞文件的解析、歌詞文件在歌詞面板中的顯示。歌詞顯示的控制在本系統(tǒng)中采用一個獨立的線程,此線程在mp3

54、開始播放是同步開始,并在得到歌詞文件Properties集合后負責(zé)在歌詞面板上顯示對應(yīng)時間點的歌詞。顯示模式主要包括完全顯示模式功能和迷你顯示模式功能。音量控制主要包括通過一個滑動條的拖拽來實現(xiàn)音量的大小的控制以及靜音的控制、由靜音轉(zhuǎn)為非靜音時的音量復(fù)原。皮膚控制主要實現(xiàn)播放器的一系列的控制按鈕的外觀改變,各種控制按鈕的圖片格式現(xiàn)在只暫時實現(xiàn)了對.gif格式圖片的支持,用戶可以按照播放器的標準定義自己喜歡的播放器的外觀。9. 已播放時間的控制使用一個單獨的線程來控制mp3的已播放時間的統(tǒng)計和顯示,當(dāng)mp3開始播放是此線程開始運行,當(dāng)mp3停止播放時,此線程結(jié)束。此線程運行期間會首先標記一個mp

55、3的開始播放時間,然后會每0.5秒鐘對已播放的時間進行一次統(tǒng)計計算,并將計算的結(jié)果格式化為適當(dāng)?shù)臅r、分、秒的格式顯示在系統(tǒng)的播放信息控制面板上。10. 系統(tǒng)配置文件1. 用于保存播放器狀態(tài)包括播放器的當(dāng)前mp3索引、播放器音量、播放器播放模式、播放器的皮膚樣式等,以便啟動時初始化播放器。2. Mp3Lperties 用于保存播放器的mp3文件列表,包括mp3文件的名稱和mp3文件的絕對路徑。4.3 系統(tǒng)運行環(huán)境硬件接口:Pentium 800MHZ 、內(nèi)存128MB、硬盤500MB以上的PC機。軟件接口:任何支持Java(JVM)的操作系統(tǒng)4.4 系統(tǒng)設(shè)計思想 總體流程設(shè)計本播放

56、器的整體流程為首先啟動播放器后使用I/O輸入流讀取數(shù)據(jù)文件,并由此數(shù)據(jù)文件解析得到mp3文件列mp3FileList后讀取配置文件,并由此初始化播放器的狀態(tài),再進一步初始化播放器的外觀包括播放模式、Swing mp3 List,、音量、上次退出時的mp3索引等,最后播放器退出時將播放器的使用I/O輸出流狀態(tài)寫入,播放器的mp3文件列表數(shù)據(jù)寫入數(shù)據(jù)文件中。如圖4-1所示開始結(jié)束讀取pertiesmp3FileList解析讀取perties初始化播放器狀態(tài)初始化播放器外觀1.初始化播放模式2.初始化音量3.初始化mp3文件列表4.初始化mp3索引播放器退出保存播

57、放器狀態(tài)保存mp3文件列表圖4-1 JMPlayer總體流程圖 Mp3播放設(shè)計本系統(tǒng)的mp3播放采用線程控制的方式來進行。設(shè)計思想為首先根據(jù)mp3的路徑查找對應(yīng)的mp3文件,如果文件不存在那么不做播放處理,如果文件存在那么首先檢查當(dāng)前播放器是否在播放mp3文件,如果正在播放那么停止正在播放的mp3線程并重新初始化mp3播放線程和相關(guān)的資源,初始化完成后開始播放。具體流程如圖4-2所示。開始結(jié)束查找mp3文件mp3文件存在不存在播放器正在播放存在停止播放線程初始化播放線程是否圖4-2 mp3播放流程圖 播放模式設(shè)計本系統(tǒng)中共設(shè)計了五中播放模式:單曲播放、單曲循環(huán)、列表循環(huán)播放、列表播放、隨機播放

58、。設(shè)計思路為系統(tǒng)中維護一個當(dāng)前正播放的mp3的索引currentMp3Index,在當(dāng)前播放的mp3播放完后,各種播放模式基于此播放索引決定下一首要播放的mp3的index值,同時播放模式的類中維護一個對播放器的引用。 Mp3文件列表管理設(shè)計本系統(tǒng)的mp3列表管理采用配置文件( perties )的形式進行存儲管理,采用緩存機制進行播放器在運行時mp3文件的增加和刪除管理。本系統(tǒng)最初對于mp3文件的管理采用的是每次進行增加或者刪除mp3文件的操作時,對進行與配置文件的同步更行,性能非常低效,也造成了許多不必要的浪費,后來引入緩存機制對mp3文件管理極大的提高了系統(tǒng)的性能。詳細流

59、程如圖 4-3 所示圖4-3 mp3文件列表管理流程圖 歌詞設(shè)計本局部當(dāng)中也采用一個獨立的線程來進行歌詞時間和顯示的控制,首先在mp3開始播放后會根據(jù)mp3文件名到系統(tǒng)的lyrics目錄下查找對應(yīng)于此mp3名稱的.lrc格式的歌詞文件,如果找到那么進一步解析此lrc歌詞文件,解析完成后此線程會根據(jù)自己的獨立的時間統(tǒng)計來匹配解析出來的時間戳,如果匹配成功那么把對應(yīng)時間點的歌詞顯示在歌詞面板當(dāng)中。具體流程如圖4-4所示圖4-4 JMPlayer歌詞控制流程圖 皮膚切換設(shè)計因為設(shè)計的時間有限本系統(tǒng)的皮膚切換功能只是針對了系統(tǒng)的控制按鈕的外觀進行, 如果時間能再寬裕一些可以進行針對播放器整個外觀的皮膚

60、切換的設(shè)計和更加靈活的控制。另外由于時間的原因本系統(tǒng)的所支持的皮膚圖片文件格式目前只限于對.gif格式文件,此處可以作為以后再研究和補充的一個設(shè)計點。皮膚切換的設(shè)計思路為,首先到系統(tǒng)的皮膚目錄skin目錄下查找符合條件的皮膚主題, 并將其顯示在播放器的皮膚面板中,中選中某一種主題的皮膚后,播放器的相應(yīng)局部的外觀圖片會被替換成選中的主題皮膚的對應(yīng)圖片。具體流程如圖4-5所示圖4-5 JMPlayer皮膚切換設(shè)計流程圖 顯示模式設(shè)計當(dāng)系統(tǒng)處于完全模式時,點擊顯示模式對應(yīng)的按鈕時,隱藏系統(tǒng)的播放信息顯示控制面板,同時設(shè)置計算播放器的位置和大小。當(dāng)系統(tǒng)處于迷你模式時,點擊顯示模式對應(yīng)的按鈕時,顯示系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論