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

正文內(nèi)容

基于java的mp3播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-文庫吧資料

2025-03-06 09:49本頁面
  

【正文】 n% Mz849Gx^Gj qv^$UE9wEwZQcUE% amp。 gTXRm 6X4NGpP$vSTTamp。MuWFA5ux^Gj qv^$UE9wEwZQcUE%amp。 gTXRm 6X4NGpP$vSTTamp。 MuWFA5uxY7JnD6YWRrWwc^vR9CpbK! zn% Mz849Gx^Gj qv^$UE9wEwZQcUE%amp。 gTXRm 6X4NGpP$vSTTamp。 849Gx^Gjqv^$UE9wEwZQcUE%amp。 QA9wkxFyeQ^! djsXuyUP2kNXpRWXm Aamp。 ksv*3t nGK8! z8vGt YM*Jgamp。 qYpEh5pDx2zVkum amp。 ksv*3t nGK8!z89Am YWpazadNuKNamp。qYp Eh5pDx2zVkumamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。qYpEh5pDx2zVkumamp。 ksv*3t nGK8!z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。MuWFA5uxY7JnD6YWRrWwc^vR9CpbK!zn% Mz849Gx^G89Am UE9aQGn8xp$Ramp。 gTXRm 6X4NGpP$vSTTamp。849Gx^Gj qv^$UE9wEwZQc UE%amp。 QA9wkxFyeQ^! dj sXuyUP2kNXpRWXm Aamp。 ksv*3t nGK8! z8vGt YM*Jgamp。 qYpEh5pDx2zVkum amp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。 ksv*3tnGK8! z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。 ksv*3tnGK8! z89Am UE9aQGn8xp$Ramp。 qYpEh5pDx2zVkumamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkum amp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkum amp。ksv*3t nGK8!z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。 UE9aQGn8xp$Ramp。 6a*CZ7H$dq8Kqqf HVZFedswSyXTyamp??傮w來說,通過本學(xué)期的畢業(yè)設(shè)計(jì),我在帶歌詞實(shí)時(shí)顯示的音頻播放器系統(tǒng)的開發(fā)、 Eclipse,Java 及 JMF 編程等方面有了一定的進(jìn)步,為以后從事更大型的軟件設(shè)計(jì)奠定了堅(jiān)實(shí)的基礎(chǔ)。 當(dāng)然,由于這是我第一次進(jìn)行多媒體系統(tǒng)的開發(fā)工作,所開發(fā)出來的系統(tǒng)不可避免地存在著一些不足,我會在今后的學(xué)習(xí)工作中逐步加以改進(jìn)。 首先,通過此播放器系統(tǒng)的設(shè)計(jì),我對于設(shè)計(jì)開發(fā)一個(gè)軟件系統(tǒng)的工作流程有了進(jìn)一步的認(rèn)識,明白了軟件開發(fā)過程中各個(gè)階段的基本任務(wù),以及各個(gè)階段之間的聯(lián)系,明確了軟件開發(fā)中形成的文檔資料的重要性。但筆者還是設(shè)計(jì)實(shí)現(xiàn)了一個(gè)自制的帶歌詞實(shí)時(shí)顯示的音頻播放器,這不僅僅讓我學(xué)到了很多有關(guān)多媒體方面的知識,還讓我了解到了如何去設(shè)計(jì),以及 如何實(shí)現(xiàn)播放器的各種功能。 } nt = 60 * ((1, 3)) //分 + ((4, 6)) //秒 + ((7, 9)) / 。//讀取 LRC標(biāo)示時(shí)間 while (true) { try { s = ()。 歌詞控制模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 歌詞控制模塊主要負(fù)責(zé)歌詞的加載,撤銷,歌詞的識別,以及重新繪制歌詞面板等 讀取 LRC 文件成功后翻譯為兩個(gè)鏈表,一個(gè)是時(shí)間鏈表,一個(gè)是歌詞鏈表,二者一一對應(yīng),在后面的時(shí)間線程中每隔一秒檢查一次歌詞時(shí)間匹配 代碼如下: double ct = ().getSeconds()。 ()。 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))。ObjectOutputStream 是一個(gè)專門用于對象序列化的類 3:用 ObjectOutputStream 提供的 writeObject()方法 即可將對象序列化,轉(zhuǎn)換成字節(jié)序列,并將其發(fā)送到 OutputStream 所指代的媒介中。 序列化(即將播放列表保存) 1:要一個(gè)輸出目的,因此需要創(chuàng)建一個(gè) OutputStream 對象。//通過讀取的 128個(gè)字節(jié)信息獲取歌曲信息 } catch {? ..} }} 播放列表控制模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 播放列表主要負(fù)責(zé)對列表的操作,如新建列表,刪除列表,載入列表,保存列表 ( 1) 打開函數(shù)文件 打開文件時(shí),要調(diào)用系統(tǒng)的文件選擇器,新建一個(gè) JFileChooser的對象并進(jìn)行一定的過濾,只能打開 .wav 和 .mp3 格式的文件,若用戶沒有取消選擇,則將文件或文件組添加到當(dāng)前列表 ( 2) 保存 /裝載列表函數(shù) 當(dāng)一對象創(chuàng)建之后,只要需要,他會一直存在下 去,擔(dān)當(dāng)應(yīng)用程序結(jié)束,所有的對象都會走向消亡。 (data)。 } catch{? ..} if(().endsWith(.mp3)||().endsWith(.MP3)) { //若為 mp3文件,則讀取 TAG獲取信息 try { FileInputStream fin = new FileInputStream(f)。 //創(chuàng)建一個(gè)未分配系統(tǒng)資源的播放器以便獲取播放總時(shí)間 ()。//格式 tempplayer=(new MediaLocator(file:+()))。//月 lastmodifiedd=()。//日期 lastmodifiedy=()+1900。//文件名 absolutepath=()。 private JCheckBox shuffleCheckBox = null。 private WindowDragControl windowDragControl = new WindowDragControl(this)。 private JButton sureButton = null。 private JPanel jContentPane3 = null。 private JButton mergeExecButton = null。 private JTextField mergedFilePath = null。 private JButton removeMergeButton = null。 private JButton cutExecButton = null。 private JTextField cutFilePath = null。 private JLabel jLabel = null。 private JSlider startSlider = null。 private int cutFrameState = 。 private int plstate = 。 private PlayerCTL playerCTL = new PlayerCTL()。 private HashMap songMap = new HashMap()。 private JFrame mergeFrame = null。 private JFrame cutFrame = null。 private JButton removeButton = null。 private List playList = null。 private JFrame playListFrame = null。 private JButton mergeButton = null。 private JButton nextButton = null。 private JButton playButton = null。 private JButton playlistButton = null。 private JPanel visualPanel = null。 private JLabel playLabel = null。 private JPanel headPanel = null。 private JSlider volumnSlider = null。//播放器開始播放 播放信息模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) ( 1)播放信息模塊: 播放信息模塊主要負(fù)責(zé)記錄播放器的各種狀態(tài),并提供 get/set函數(shù)進(jìn)讀取、設(shè)置,由于播放信息模塊包含著播放列表模塊,因此播放信息模塊中包含著對播放列表的操作,當(dāng) ListController 播放列表控制模塊要對播放列表進(jìn)行操作時(shí),需要間接調(diào)用播放信息模塊的函數(shù)。 用播放狀態(tài)的當(dāng)前播放文 件創(chuàng)建一個(gè)分配好資源處于就緒狀態(tài)的播放器 ().getCurrentsonginfo().setTotalTime((().getSeconds() / 10E6) / )。播放命令由播放按鈕點(diǎn)擊產(chǎn)生單機(jī)事件形成播放命令 當(dāng)播放器接收到播放命令后,會依次執(zhí)行下面的過程: 1:查播放器的當(dāng)前狀態(tài)是否是暫停狀態(tài),即判斷暫停狀態(tài)布爾型變量 isPaused 的值。 播放控制模塊詳 細(xì)設(shè)計(jì)與實(shí)現(xiàn) 放功能是媒體播放器所有控制功能中最重要的一個(gè)功能,沒有了它,播放器不能播放,也就不能稱之為播放器了。 聽用戶 /播放器的事件 在 Eclipse啟動后,要真正用到某個(gè)插件是,該插件才會被動態(tài)載入內(nèi)存,不再被使用的插件會在適當(dāng)?shù)臅r(shí)候被清出內(nèi)存,本系統(tǒng)使用到的典型插件的例子就是用于開發(fā)圖形界面的 VisualEditor 用戶界面模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 戶界面的主要有三大任務(wù),即 Eclipse是一個(gè)開放源代碼的,基于 Java 的可擴(kuò)展開發(fā)平臺,也同時(shí)是目前非常流行的跨平臺的自由集成開發(fā)環(huán)境( IDE)。 播放控制流程 器 Player 從建立之初到消亡,各有一系列已經(jīng)在 JMF 中編 寫好的方法可以調(diào)用。如果存在,則將其傳遞給歌詞控制模塊進(jìn)行時(shí)間信息和歌詞文本的分離,然后返回播放控制模塊;如果此時(shí)返回的歌詞存在,則將其傳遞給歌詞顯示窗口進(jìn)行顯示,并使用時(shí)間信息進(jìn)行控制。 對歌詞文件的傳遞 詞的實(shí)時(shí)顯示作為本播放器的重要功能, LRC 歌詞文件的處理流程也就顯得至關(guān)重要,因?yàn)?LRC 歌詞可能處于不同位 置,所以其地址和數(shù)據(jù)處理流程要比音頻文件的處理流程要復(fù)雜得多。 歌曲信息節(jié)點(diǎn) 1 歌曲信息節(jié)點(diǎn) 2 歌曲信息節(jié)點(diǎn)。各面板關(guān)系如圖 33: 播放信息模塊 用戶界面模塊 播放控制模塊 播放列表控制模塊 歌詞控制模塊 播放列表 歌曲信息 圖 33 面板關(guān)系圖 播放信息模塊 放信息模塊由播放信息,播放列表,歌曲信息節(jié)點(diǎn)三個(gè)層次嵌套而成,如 34 所示: 圖 34 信息模塊關(guān)系圖 音頻文件播放邏輯 對音頻文件的傳遞 音頻文件的傳送主要是用在播放列表處理的過程中,當(dāng)播放器的用戶想利用本播放器來播放一個(gè)音頻文件時(shí),首先要做 的就是將該音頻文件所在磁盤上的地址傳到播放列表模塊中,由播放列表將信息傳遞給播放信息模塊進(jìn)行數(shù)據(jù)更新。這些控件被按照功能分成了 3 組,它們分別是控制面板、播放列表面板和 LRC 面板。首先,給出該界面的組件組成。 播放列表控制模塊 播放控制模塊 故將系統(tǒng)分為五大模塊進(jìn)行構(gòu) 建,分別是 音頻文件信息顯示功能:將音頻文件的基本信息呈現(xiàn)給用戶,同時(shí)用戶自己可以設(shè)置一些信息。 媒體文件的播放控制功能:開始播放、暫停播放、停止播放和拖動播放等; 在這樣的情況下,對播放器的設(shè)計(jì)目 標(biāo)要求有如下功能的實(shí)現(xiàn): 至少應(yīng)該能夠?qū)?音頻文件 進(jìn)行播放、暫停、停止、 音量和進(jìn)度 拖 放操作等。相應(yīng)地,本軟件也同樣使用 MVC思想指導(dǎo)設(shè)計(jì),做到模塊細(xì)化,分工明確,模塊間邏輯順序清晰的三大目標(biāo)。只要Controller 改變了 Models 的數(shù)據(jù)或者屬性,所有以來的 View 都會自動更新。 三、系統(tǒng)架構(gòu)和功能模塊分析 模式概述 MVC架構(gòu)是“ ModelViewController”的縮寫,即將“模型 視圖 控制”作為應(yīng)用程序構(gòu)成的三要素。Player 當(dāng)從一個(gè)狀態(tài)轉(zhuǎn)為另一狀態(tài)時(shí)都會產(chǎn)生 transition events。( Player和 Processor 繼承于 Controller類 所有的 Controller 事件, ControllerEvent 由 Controller(如 Player 或Processor)產(chǎn)生,可分為三類:改變通知( change notification),關(guān)閉事件( closed event), 狀態(tài)轉(zhuǎn)變事件( transition event): 1 . 改 變 通 知 事 件 如 RateChangeEvent , DurationUpdateEvent ,F(xiàn)ormatChangeEvent表明一些 Controller 的屬性的改變。為了能在某一 MediaEvent 事件發(fā)生時(shí)得到相應(yīng)的通知,必須實(shí)現(xiàn)適當(dāng)?shù)膫陕牻涌谝约霸趯?yīng)
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1