版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> Java課程設(shè)計(jì)報(bào)告</p><p> 題目:java音樂播放器</p><p><b> 1.設(shè)計(jì)內(nèi)容及要求</b></p><p> 能夠?qū)崿F(xiàn)簡(jiǎn)單的音樂播放器功能,如:打開本地文件,播放,暫停,停止,背景播放,單曲循環(huán)等等,界面充實(shí),交互友好,可以添加多首歌曲目錄</p><p> 一個(gè)
2、簡(jiǎn)單的基于java語(yǔ)言的音樂播放器,菜單欄:文件,播放控制和播放列表,文件菜單包含打開、循環(huán)和退出三個(gè)菜單項(xiàng);播放控制菜單包含播放、暫停和停止三個(gè)菜單項(xiàng),播放列表菜單則是當(dāng)向里面添加歌曲之后才能夠查看到里面所包含的歌曲目錄。當(dāng)播放歌曲時(shí),可以調(diào)節(jié)音量大小或者設(shè)置是否靜音;可以查看當(dāng)前播放音樂的相關(guān)屬性,如:歌曲名,歌手,發(fā)布時(shí)間,所屬專輯等等。</p><p><b> 2.需求分析</b>
3、;</p><p> 1、時(shí)間跟蹤條:根據(jù)歌曲播放的進(jìn)度,控制條自動(dòng)進(jìn)行追蹤,用戶可以隨時(shí)了解歌曲的播放進(jìn)度</p><p> 2、音量控制鍵:可以點(diǎn)擊該控鍵進(jìn)行音量大小的調(diào)節(jié)以及是否靜音的設(shè)置</p><p> 3、屬性查詢鍵:通過該控鍵,用戶可以查看當(dāng)前播放音樂的相屬性,獲取關(guān)于該歌曲的用戶所需的相關(guān)信息。</p><p><
4、b> 4、菜單欄:</b></p><p><b> ?、傥募?lt;/b></p><p> 打開:用戶通過該菜單項(xiàng)打開本地音樂文件,聽任何用戶想聽的歌曲</p><p> 循環(huán):通過循環(huán)設(shè)置,用戶可以重復(fù)的播放一首喜歡的歌曲</p><p> 退出:退出音樂播放器,及退出該程序</p>
5、;<p><b> ?、诓シ趴刂疲?lt;/b></p><p> 播放:選擇歌曲之后,通過點(diǎn)擊播放菜單項(xiàng)啟動(dòng)播放器播</p><p><b> 放音樂</b></p><p> 暫停:暫停當(dāng)前正在播放的音樂</p><p> 停止:停止當(dāng)前正在播放的音樂</p>&l
6、t;p> ?、鄄シ帕斜恚寒?dāng)用戶通過文件打開本地音樂文件后,及相當(dāng)于在</p><p> 播放列表里面添加了歌曲,及形成相應(yīng)的歌曲播放目錄</p><p><b> 3.總體設(shè)計(jì)</b></p><p> 結(jié)合需求分析來看,整個(gè)設(shè)計(jì)包含了簡(jiǎn)單的菜單欄,根據(jù)用戶需求設(shè)置了三個(gè)簡(jiǎn)單的實(shí)現(xiàn)基本操作的菜單,分別是:文件,播放控制,播放列表;根
7、據(jù)具體的操作每個(gè)菜單還包含了相應(yīng)的菜單項(xiàng),文件:打開,循環(huán),退出;播放控制:播放,暫停,停止;播放列表則沒有菜單項(xiàng),該菜單就是用來顯示或者查看相應(yīng)的歌曲目錄的。</p><p> 該音樂播放器設(shè)置了兩個(gè)窗口,運(yùn)行程序時(shí)打開的初始化歡迎界面,用戶可以根據(jù)自己的需求進(jìn)行菜單欄里面的基本操作和相應(yīng)的設(shè)置,當(dāng)用戶添加或者打開音樂播放文件的時(shí)候,程序?qū)?huì)顯示出第二個(gè)音樂文件播放窗口,與此同時(shí),第一個(gè)初始化窗口將會(huì)自動(dòng)隱藏
8、,在音樂播放窗口里面用戶可以進(jìn)行相關(guān)的音樂播放的控制操作。</p><p> 當(dāng)用戶進(jìn)入音樂播放窗口時(shí),該窗口有幾個(gè)快捷控制的控鍵:時(shí)間追蹤軸:可以實(shí)現(xiàn)播放的前進(jìn)、后退功能,根據(jù)用戶需求調(diào)節(jié)音樂的播放進(jìn)度等;音量控制:設(shè)置靜音,打開揚(yáng)聲器或者調(diào)節(jié)音量大?。徊シ帕斜恚翰榭串?dāng)前播放音樂的相關(guān)屬性。</p><p> 4.主要功能設(shè)計(jì)流程</p><p> 5.系統(tǒng)
9、實(shí)現(xiàn)及測(cè)試:</p><p> ?。ㄒ唬㎎MF(java媒體框架)簡(jiǎn)介</p><p> JMF 即Java媒體框架。其核心框架支持不同媒體,如音頻輸出和視頻輸出,包括時(shí)間的時(shí)鐘同步。它是一個(gè)標(biāo)準(zhǔn)的擴(kuò)展框架,允許用戶制作純音頻流和視頻流。</p><p> JMF實(shí)際上是Java的一個(gè)類包。它包括了一個(gè)開放的媒體架構(gòu),可使開發(fā)人員靈活采用各種媒體回放、捕獲組件,
10、或采用他們自己的定制的內(nèi)插組件。 </p><p> JMF軟件是Java Media系列軟件的一部分。采用各種Java Media API,軟件開發(fā)商人員就能容易、快速地為他們已有的各種應(yīng)用程序和客戶端,Java小程序增添豐富的媒體功能,如流式視頻、3D圖像和影像處理等。就是 說,各種Java Media API發(fā)揮了Java平臺(tái)的固有優(yōu)勢(shì),將"編寫一次,到處運(yùn)行"的能力擴(kuò)展到了圖像、影像
11、和數(shù)字媒體等各種應(yīng)用領(lǐng)域,從而大大縮減了開發(fā)時(shí)間和降低了開發(fā) 成本。 </p><p> 在開發(fā)JMF 應(yīng)用程序之前要完全理解JMF 的體系架構(gòu)、接口和類。就拿我們的家用攝像機(jī)系統(tǒng)作個(gè)例子。首先用攝像機(jī)拍攝內(nèi)容,拍攝下來的內(nèi)容錄制在DV帶中。DV帶可以放在放像機(jī)里播放、放像機(jī)提供視頻信號(hào)給電視機(jī),提供音頻信號(hào)給音箱,這樣我們就可以在電視機(jī)上看到畫面,從音箱里聽到聲音。JMF API 提供的也是同樣的模型。
12、</p><p> JMF 提供的模型可大致分為七類 </p><p> * 數(shù)據(jù)源(Data source) </p><p> * 截取設(shè)備(Capture Device,包括視頻和音頻截取設(shè)備) </p><p> * 播放器(Player) </p><p> * 處理器(Processor) <
13、;/p><p> * 數(shù)據(jù)池(DataSink) </p><p> * 數(shù)據(jù)格式(Format) </p><p> * 管理器(Manager) </p><p> 如果只是想觀看捕獲的內(nèi)容,只需要使用捕獲數(shù)據(jù)源創(chuàng)建播放器Player即可。如果想把捕獲的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)或者保存起來,就需要?jiǎng)?chuàng)建處理器Processor。 </p
14、><p> 基本步驟是首先獲取視頻、音頻捕獲設(shè)備的信息,然后再根據(jù)取得的設(shè)備信息確定設(shè)備的位置。找到設(shè)備的位置以后,調(diào)用ManageCreatePlayer方法創(chuàng)建Player,當(dāng)Player開始播放的時(shí)候,就開始了捕獲的過程。 </p><p> 有多種方法獲得捕獲設(shè)備信息,可以通過查詢指定的格式,也可以查詢特定的設(shè)備名字。Player準(zhǔn)備好播放數(shù)據(jù),當(dāng)Player發(fā)出這個(gè)事件時(shí),就可以
15、獲取播放器的可視面板和控制面板了。具體步驟如下: </p><p> 1. 先把所有的捕獲設(shè)備調(diào)出來 </p><p> 2. 創(chuàng)建Player,當(dāng)Play開始的時(shí)候,就開始了音頻捕獲的過程 </p><p> 3.以MediaLocator為參數(shù),創(chuàng)建Player </p><p> 4. 為PLAYER添加監(jiān)聽器,以便監(jiān)聽Rea
16、lizeComplete事件</p><p><b> ?。ǘ┐a實(shí)現(xiàn)</b></p><p> (1)添加庫(kù)、包等相關(guān)文件</p><p> import javax.media.ControllerEvent; </p><p> import javax.media.ControllerListener;
17、</p><p> import javax.media.EndOfMediaEvent; </p><p> import javax.media.PrefetchCompleteEvent; </p><p> import javax.media.RealizeCompleteEvent; </p><p> import ja
18、vax.media.*; </p><p> import javax.swing.*; </p><p> import java.awt.*; </p><p> import java.awt.event.*; </p><p><b> ?。?)初始化窗口</b></p><p>&
19、lt;b> ?、俳缑?lt;/b></p><p><b> ?、诖a實(shí)現(xiàn)</b></p><p> public void setupMenu() { </p><p> Menu f = new Menu("文件"); </p><p> MenuItem mi =
20、new MenuItem("打開"); </p><p> CheckboxMenuItem cbmi = new CheckboxMenuItem("循環(huán)", false); </p><p> MenuItem ee = new MenuItem("退出"); </p><p> f.add
21、(mi); </p><p> f.add(cbmi); </p><p> f.add(ee); </p><p> mi.addActionListener(this); </p><p> cbmi.addActionListener(this); </p><p> ee.addActionListe
22、ner(this); </p><p> f.addSeparator(); </p><p> f.addSeparator(); </p><p> f.addSeparator(); </p><p> Menu l = new Menu("播放列表"); </p><p> Men
23、u c = new Menu("播放控制"); </p><p> MenuItem move = new MenuItem("播放"); </p><p> MenuItem pause = new MenuItem("暫停"); </p><p> MenuItem stop = new Menu
24、Item("停止"); </p><p> move.addActionListener(this); </p><p> pause.addActionListener(this); </p><p> stop.addActionListener(this); </p><p> c.add(move); &l
25、t;/p><p> c.add(pause); </p><p> c.add(stop); </p><p> c.addSeparator(); </p><p> c.addSeparator(); </p><p> c.addSeparator(); </p><p> Men
26、uBar mb = new MenuBar(); </p><p> mb.add(f); </p><p> mb.add(c); </p><p> mb.add(l); </p><p> setMenuBar(mb); </p><p><b> } </b></p>
27、<p> ?。?)音樂播放窗口機(jī)基本功能的實(shí)現(xiàn)</p><p><b> ?、俳缑?lt;/b></p><p><b> ②代碼實(shí)現(xiàn)</b></p><p> public void actionPerformed(ActionEvent e)</p><p><b> {
28、 </b></p><p> String cufile, selectfile, currentDirectory; </p><p> if (e.getActionCommand().equals("退出")) </p><p><b> { </b></p><p>
29、dispose(); </p><p><b> return; </b></p><p><b> } </b></p><p> if (e.getActionCommand().equals("播放"))</p><p><b> { </b
30、></p><p> if (player != null) player.start(); </p><p><b> return; </b></p><p><b> }</b></p><p> if (e.getActionCommand().equals("
31、暫停"))</p><p><b> { </b></p><p> if (player != null) player.stop(); </p><p><b> return; </b></p><p><b> } </b></p>
32、<p> if (e.getActionCommand().equals("停止")) </p><p><b> { </b></p><p> if (player != null)</p><p><b> { </b></p><p> player.
33、stop(); </p><p> player.setMediaTime(new Time(0)); </p><p><b> } </b></p><p><b> return; </b></p><p><b> } </b></p><p
34、> if (e.getActionCommand().equals("打開")) </p><p><b> { </b></p><p> FileDialog fd = new FileDialog(this, "打開媒體文件", FileDialog.LOAD); </p><p>
35、fd.setVisible(true); </p><p> if (fd.getFile() == null) return; </p><p> selectfile = fd.getFile(); </p><p> currentDirectory = fd.getDirectory(); </p><p> c
36、ufile = currentDirectory + selectfile; </p><p> MenuItem mi = new MenuItem(selectfile); </p><p> mi.setActionCommand(cufile); </p><p> MenuBar mb = getMenuBar(); </p><
37、p> Menu m = mb.getMenu(2); </p><p> mi.addActionListener(this); </p><p> m.add(mi); </p><p><b> } else { </b></p><p> cufile = e.getActionCommand();
38、 </p><p> selectfile = cufile; </p><p><b> } </b></p><p> if (player != null) player.close(); </p><p><b> try { </b></p><p>
39、; player = Manager.createPlayer(new MediaLocator("file:" + cufile)); </p><p> }catch (Exception e2)</p><p><b> { </b></p><p> System.out.println(e2); </
40、p><p><b> return; </b></p><p><b> } </b></p><p> if (player == null) </p><p><b> { </b></p><p> System.out.println(&q
41、uot;無法創(chuàng)建播放器"); </p><p><b> return; </b></p><p><b> } </b></p><p> first = false; </p><p> setTitle(selectfile); </p><p>
42、player.addControllerListener(this); </p><p> player.prefetch(); </p><p><b> } </b></p><p> public void itemStateChanged(ItemEvent arg0) </p><p><b>
43、 { </b></p><p><b> } </b></p><p> public static void main(String[] args)</p><p><b> { </b></p><p> new MediaPlayer("播放器");
44、</p><p><b> } </b></p><p> public void controllerUpdate(ControllerEvent e) </p><p><b> { </b></p><p> Container tainer = getContentPane(); &
45、lt;/p><p> if (e instanceof ControllerClosedEvent)</p><p><b> { </b></p><p> if (vc != null)</p><p><b> { </b></p><p> remove(vc)
46、; </p><p> vc = null; </p><p><b> } </b></p><p> if (cc != null)</p><p><b> { </b></p><p> remove(cc); </p><p>
47、cc = null; </p><p><b> } </b></p><p><b> } </b></p><p> if (e instanceof EndOfMediaEvent)</p><p><b> { </b></p><p>
48、 player.setMediaTime(new Time(0)); </p><p> if (loop) player.start(); </p><p><b> return; </b></p><p><b> } </b></p><p> if (e instanceof
49、 PrefetchCompleteEvent)</p><p><b> { </b></p><p> player.start(); </p><p><b> return; </b></p><p><b> } </b></p><p>
50、; if (e instanceof RealizeCompleteEvent)</p><p><b> { </b></p><p> vc = player.getVisualComponent(); </p><p> if (vc != null) </p><p> tainer.add(vc
51、, BorderLayout.CENTER); </p><p> cc = player.getControlPanelComponent();cc.setBackground(Color.blue); </p><p> if (cc != null) </p><p><b> {</b></p><p>
52、 tainer.add(cc, BorderLayout.SOUTH); </p><p> if (vc != null)</p><p><b> { </b></p><p><b> pack(); </b></p><p><b> return; </b>
53、</p><p><b> } </b></p><p><b> Else { </b></p><p> setSize(300, 75); </p><p> setVisible(true); </p><p><b> return; <
54、/b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p><b> 6.總結(jié)與說明
55、</b></p><p> 在做寫程序?qū)崿F(xiàn)功能的過程中,界面和基本功能的設(shè)計(jì)需要較強(qiáng)的邏輯思維,一不小心就容易出錯(cuò),在具體的功能設(shè)計(jì)和實(shí)現(xiàn)的過程中要盡可能用最簡(jiǎn)單的語(yǔ)句實(shí)現(xiàn)基本的播放器功能。我覺得可以設(shè)計(jì)更多的菜單及菜單項(xiàng)目從而實(shí)現(xiàn)更多的功能,如:刪除,保存等,還可以實(shí)現(xiàn)更多的背景效果或者更多可選擇的皮膚,還可以對(duì)按鈕添加音效效果,這樣感覺整個(gè)音樂播放器更具有靈活性,媒體感更強(qiáng)烈一些,界面會(huì)更加豐富
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)---java音樂播放器
- java課程設(shè)計(jì)音樂播放器
- 基于java的音樂播放器的設(shè)計(jì)課程設(shè)計(jì)
- 音樂播放器課程設(shè)計(jì)報(bào)告
- 基于qt的音樂播放器課程設(shè)計(jì)報(bào)告
- 音樂播放器課程設(shè)計(jì)
- 基于as3.0的音樂播放器設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 音樂播放器課程設(shè)計(jì) (2)
- eda課程設(shè)計(jì)—音樂播放器
- 課程設(shè)計(jì)(論文)基于fpga的音樂播放器設(shè)計(jì)
- 安卓課程設(shè)計(jì)報(bào)告--個(gè)人音樂播放器
- 單片機(jī)音樂播放器課程設(shè)計(jì)報(bào)告
- 單片機(jī)音樂播放器課程設(shè)計(jì)報(bào)告
- 基于單片機(jī)音樂播放器課程設(shè)計(jì)
- c_課程設(shè)計(jì)報(bào)告-- c#音樂播放器
- 基于java的音樂播放器設(shè)計(jì)源代碼+實(shí)驗(yàn)報(bào)告
- 硬件課程設(shè)計(jì)報(bào)告--基于51單片機(jī)音樂播放器設(shè)計(jì)
- 課程設(shè)計(jì)--基于單片機(jī)的簡(jiǎn)易音樂播放器
- 基于單片機(jī)音樂播放器設(shè)計(jì)-課程設(shè)計(jì)論文
- mp3音樂播放器軟件課程設(shè)計(jì)報(bào)告(mfc)
評(píng)論
0/150
提交評(píng)論