2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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語言的音樂播放器,菜單欄:文件,播放控制和播放列表,文件菜單包含打開、循環(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>  (二)代碼實(shí)現(xiàn)</b></p><p> ?。?)添加庫(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> ?、诖a實(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)單的語句實(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論