freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

音頻播放器軟件的設計與實現(xiàn)_畢業(yè)論文-資料下載頁

2025-08-17 03:24本頁面

【導讀】立進行研究工作所取得的成果。對本文的研究做出重要貢獻的個人。和集體,均已在文中以明確方式注明。除此之外,本論文不包含任。何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。本聲明的法律結果。媒體播放器的支持,同時WAV格式作為無損的音頻格式也獨樹一幟。件市場上的媒體播放器百花齊放,如:MediaPlayer,酷我音樂盒和千千靜聽等。高音質(zhì)播放和低內(nèi)存消耗是各種媒體播放器所追求的目標。本軟件用,java語言及其相應的音頻支持插件JMF開。發(fā)而成,設計思想為MVC,即Model-View-Control模式。MP3的同時實時地顯示LRC歌詞,并且支持WAV等。論文首先介紹了java語言,MVC及JMF的基本概念,內(nèi)容及章節(jié)安排。了媒體文件和歌詞文件的處理流程。接著,論文介紹了本播放器的開發(fā)平臺,闡。述了系統(tǒng)各功能的詳細設計與實現(xiàn)。最后,論文介紹了系統(tǒng)的運行環(huán)境及運行效。果,并對各個部分進行了圖示說明。

  

【正文】 圖 37播放狀態(tài) Stop() Play() 暫停狀態(tài) 停止狀態(tài) 正在播放狀態(tài) Player 創(chuàng)建 Player 啟動 播放歌曲 判斷播放器狀態(tài) 恢復播放 重新播放 停止當前播放 重置時間 播放 暫停 停止 時間條拖動事件 分配資源 第 4章 系統(tǒng)詳細設計實現(xiàn) 22 第 4 章 系統(tǒng)詳細設計與實現(xiàn) 開發(fā)平臺及環(huán)境 本系統(tǒng)采用的開發(fā)平臺是 IBM公司的 。 Eclipse是一個開放源代碼的,基于 Java的可擴展開發(fā)平臺,也同時是目前非常流行的跨平臺的自由集成開發(fā)環(huán)境 ( IDE)。 Eclipse本身非常小,其設計思想是“一切皆為插件”,其他功能都是基于插件的形式與 Eclipse無縫結合,協(xié)同工作,如 Eclipse的圖形開發(fā)環(huán)境( SWT/JFace), Java開發(fā)環(huán)境插件( JDT),多國語言包,等。在 Eclipse啟動后,要真正用到某個插件是,該插件才會被動態(tài)載入內(nèi)存,不再被使用的插件會在適當?shù)臅r候被清出內(nèi)存,本系統(tǒng)使用到的典型 插件 的例子就是用于開發(fā)圖形界面的 VisualEditor 用戶 界面模塊詳細設計與實現(xiàn) 用戶界面的實際設置和命名如圖 41 圖 41 用戶界面的主要有三大任務,即 接受被改變的信息,顯示 /更新界面信息 第 4章 系統(tǒng)詳細設計實現(xiàn) 23 監(jiān)聽用戶 /播放器的事件 將改變的信息傳遞給其他控制模塊 其中最重要的任務無意識監(jiān)聽用戶 /播放器的事件并作出相應的反應,技術要點如下 對播放拖動條 添加拖動事件監(jiān)聽器 名稱為 TimeSlider 拖動 TimeSlider 會產(chǎn)生 StateChangedEvent 狀態(tài)改變時間,因此要對TimeSlider 添加事件監(jiān)聽器 ChangeListener 以捕捉該事件。 同時,在 Timer 線程中,在播放時每隔一秒都要對 TimeSlider的值進行設定,數(shù)值為 currentpercent*100,即當前歌曲播放比例 x100,代碼實現(xiàn)如下: (new () { public void stateChanged( e) { if (() == null) {//若播放器為空,則時間拖動條失效 (false)。// TODO } else { if (isDrag) { //如果拖動狀態(tài)被觸發(fā) (() * )。 //根據(jù)拖動條的值設置播放器時間 labeltime = (int) (() * mp3state .getCurrentlist() .getCurrentsonginfo() .getTotalTime())。 //根據(jù)播放器的百分比 *總時間獲取當前時間 TimeAdd(0)。 //用當前時間更新 TimeLabel 如 ().setMediaTime( new Time((() .getCurrentsonginfo() .getTotalTime() / 100) * ()))。 } //重新設置播放器時間 } } })。 //拖動狀態(tài)改變事件監(jiān)聽器 音量拖動條添加拖動事件監(jiān)聽器 第 4章 系統(tǒng)詳細設計實現(xiàn) 24 名稱為 VolumeSlider 音量控制滑動桿控件與播放信息“聲音”相關聯(lián),當音量滑動桿的滑塊位置改變以后,音量大小顯示屏所顯示的數(shù)字也會隨著變化。音量顯示屏顯示的最小值為 0,最大值為 100,為最大音量的百分比。 (new () { public void stateChanged( e) { (VolumeSlider .getValue() / )。//設置當前音量數(shù)值 if (() != null) { ().getGainControl() .setLevel( ())。 //若當期播放器不為空,重新設置播放器音量 } } })。 對鼠標點擊放開事件添加監(jiān)聽器 MainFrame 用戶界面中按鈕眾多,每點擊一個按鈕都要觸發(fā)一個事件,因此每個按鈕都要添加一個事件監(jiān)聽器未免太過麻煩,于是我們尋找到一種新的解決辦法,那就是為 MainFrame 類實現(xiàn) MouseListener,ActionListener 的接口, public class MainFrame extends JFrame implements ActionListener, MouseListener 這樣一來只需要在 MainFrame 實現(xiàn)接口的方法,就可以及時對時間作出反應 我們主要對 MouseReleasedEvent 做出反應,代碼如下 public void mouseReleased(MouseEvent e) { // TODO 自動生成方法存根 if (() == SoundButton) {//聲音打開 if (()) { (false)。//將開聲音關聲音按鈕顯示互換 (false)。 (true)。 (true)。 (false)。//播放信息更新 if (() != null) { ().getGainControl().setLevel()。 } } } 第 4章 系統(tǒng)詳細設計實現(xiàn) 25 if (() == SoundCloseButton) {//聲音關閉 (false)。 //將開聲音關聲音按鈕顯示互換 (false)。 (true)。 (true)。 (true)。 if (() != null) { ().getGainControl().setLevel( ())。 } } if (() == PlayButton) { //播放按鈕 if (() == null) { OpenFile()。 } else { play()。 } } if (() == StopButton) { //停止按鈕 stop()。 } if (() == PauseButton) { //暫停按鈕 if (() != null) { if (() == false) { pause()。 } } } if (() == TimeSlider) { isDrag = false。 //鼠標松開時,拖動狀態(tài) 設置為否 } } 時間線程 MainFrame 內(nèi)新建一個時間線程 Timer,每隔 1 秒進行一次 TimeLabel 和TimeSlider 的更新,并且更新 LRC, Timer 只有在 isPaused 為 False 且沒有拖動事件發(fā)生的時候才會運行 run() clock = new Timer()。 (new TimerTask() { double pt = 。 // 當前播放百分比 public void run() { 第 4章 系統(tǒng)詳細設計實現(xiàn) 26 // TODO 自動生成方法存根 if (!isDrag amp。amp。 !()) {//當不為托動態(tài)且不為暫停態(tài) //時,時間線程運行 pt = ().getMediaTime().getSeconds() / ().getCurrentsonginfo() .getTotalTime()。 ((float)pt)。//設置百分比 ((int) pt)。//更新時間條 (1)。//歌詞時間加 1并更新 TimeAdd(1)。//更新 TimeLabel repaint()。 } } }, 10, 1000)。 repaint()。//重繪 用戶界面 } 最小化托盤 系統(tǒng)托盤圖標 的設置可以使播放器在后臺運行,當需要喚醒至前臺時,只需雙擊右下角小圖標即可,右鍵單擊小圖標可推出播放器,這樣可以使操作界面更加友好,代碼如下: private void initSystemTray() { (正在生成托盤 ...)。 SystemTray tray = ()。//創(chuàng)建最小化圖標 Image image = () .getImage(resource/)。 // 創(chuàng)建圖表的圖像 (new WindowAdapter() { public void windowIconified(WindowEvent e) { dispose()。 } })。 PopupMenu popupMenu = new PopupMenu()。 MenuItem exitItem_exit = new MenuItem(退出 )。 (new ActionListener() { public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub try { 第 4章 系統(tǒng)詳細設計實現(xiàn) 27 ()。//退出前保存播放列表 (0)。 } catch (Exception ex) { ()。 } } })。 (exitItem_exit)。 //對最小化圖標添加右鍵彈出菜單 TrayIcon trayIcon = new TrayIcon(image, 追風播放器 , popupMenu)。 (new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (() == 2) {//鼠標雙擊兩次事件 setExtendedState()。 setVisible(true)。 } } })。 try { (trayIcon)。 } catch (AWTException e) { (e)。 } } 更新 TimeLabel 的小算法 當前時間進行換算然后更新 TimeLabel,整型變量 i為時間增量 ,本方法要將時間總量 labeltime 轉(zhuǎn)化為用戶更加直觀可見的 00:00:00 格式 private void TimeAdd(int i) { // TODO 自動生成方法存根 labeltime += i。//labeltime為當前播放時間 int h = 0。 int m = 0。 int s = 0。 if (labeltime 3599) { h = (labeltime labeltime % 3600) / 3600。 labeltime = labeltime h * 3600。 } if (labeltime 59) { m = (labeltime labeltime % 60) / 60。 labeltime = labeltime m * 60。 } 第 4章 系統(tǒng)詳細設計實現(xiàn) 28 s = labeltime。 SetLabelTime(h, m, s)。 } 播放控制模塊 詳細設計與實現(xiàn) 大綱視圖如圖 42: 播放函數(shù) 播放功能是媒體播放器所有控制功能中最重要的一個功能,沒有了它,播放器不能播放,也
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1