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

正文內(nèi)容

基于linux的音樂播放器設(shè)計與實現(xiàn)論文-預(yù)覽頁

2024-09-28 15:25 上一頁面

下一頁面
 

【正文】 Phonon The Design and Implementation of Music Player Based on Linux Specialty: Student Number: Student: Supervisor: Abstract: As an application, which is closely related to the people39。Play39。Previous track39。Add files39。Switch background icon39。s expected result. At the same time, the music player has a well performance in operational stability and economic cost. Key words: Music player?,F(xiàn)代科學(xué)技術(shù) 不斷 發(fā)展,人們 開始 使用網(wǎng)絡(luò)媒介 和 各種數(shù)據(jù)存儲設(shè)備,使得各種音頻 和 視頻資源的傳播更為便捷、迅速、廣泛 , 于是各種音樂播放器也緊跟著發(fā)展 了 起來 。但是, 它們之中有許多 都是根據(jù)特定的操作系統(tǒng) 來 開發(fā)的, 其中 很大一部分 都 沒有實現(xiàn)跨平臺的應(yīng)用, 為了應(yīng)對 不同的系操作 統(tǒng), 它們 只 能重新 開發(fā) 新 的版本。 研究 基于 Linux的音樂播放器 具 有一定的 意義 。 本音樂播放 器 在 播放音頻文件方面 主要選擇 播放 本地文件 , 在功能方面 主要 具備一些基本的音樂操作功能,如:暫停、播放、音量調(diào)節(jié)、拖動、停止等。 Linux 可安裝在各種各樣的電腦硬件設(shè)備,從手機(jī)、平板電腦、路由器和影音游戲控制臺,到桌上型電腦,大型 電腦和超級電腦。嚴(yán)格來講, Linux 這個詞本身只表示 Linux 內(nèi)核,但在實際上人們已經(jīng)習(xí)慣了用 Linux 來形容整個基于 Linux 內(nèi)核,并且使用 GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)(也被稱為 GNU/ Linux)。第二類基于自由軟件的桌面操作系統(tǒng),特別是Linux 桌面操作系統(tǒng)。但是,從系統(tǒng)的整體功能、性能來看, Linux 桌面系統(tǒng)與 Windows系列相比還有一定的差距,主要表現(xiàn)在系統(tǒng)易用性、系統(tǒng)管理、軟硬件兼容性、軟件的豐富程度等方面,如音樂播放器。 (2) 多 用戶。 (4) 設(shè)備獨(dú)立性。也可用于開發(fā)非 GUI 程序,比如控制臺工具和服務(wù)器。通過語言綁定,其他的編程語言也可以使用 Qt。會自動依平臺的不同,表現(xiàn)平臺特有 的圖形界面風(fēng)格。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件之間的協(xié)同工作變得十分簡單。 集成開發(fā)環(huán)境 Qt Creator 是一款跨平臺的集成開發(fā)環(huán)境, Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級 IDE。它包括一個可視化偵錯工具和整合的 GUI 版面和外形設(shè)計師。在 Windows,預(yù)設(shè)安裝它可以使用 MinGW 或 MSVC。 Qt Creator 主要 功能和優(yōu)勢 如下: (1) 使用強(qiáng)大的 C++代碼編輯器可快速編寫代碼 。 (3) 為 Qt 跨平臺開發(fā)人員的需求而量身定制 。Phonon 提供一個穩(wěn)定的 API 允許 KDE4 獨(dú)立于任何一個聲音系統(tǒng)服務(wù)器, Phonon 從一開始就被設(shè)計成 Qt 函數(shù)的風(fēng)格, Phonon 并非只能運(yùn)行于 Unix 系統(tǒng),他的后端可以是在其它平臺如 Microsoft Windows 并提供相同的功能。 Phonon 也支持更高層次的功能,如讓音軌轉(zhuǎn)化之間變微弱。后來,在 Windows 98 當(dāng)中內(nèi)置了 WMP64,這個版本存在于后續(xù)的操作系統(tǒng)中,并被一直保留至今。 (2) Juk 是一個很易用的播放器,而且界面方面做得比較美觀。不僅可以播放多種格式的音樂文件,還可以連接到互聯(lián)網(wǎng)中接受網(wǎng)絡(luò)收音機(jī)或者到網(wǎng)上音樂商店購買音樂 [4]。開發(fā)者也在想更加團(tuán)隊、專業(yè)發(fā)展。 基本功能 實現(xiàn) 音頻的播放,這是開發(fā)一款音樂播放器的最基本要求,能夠?qū)崿F(xiàn)音頻播放、暫停、停止、進(jìn)度拖動、音量控制、上一首、下一首等基本功能。為了能夠使用戶清楚自己的播放歷史, 播放器 實現(xiàn)了播放歷史記錄功能,將用戶的播放歷史記錄在本地文件中,可以方便用戶的查看。 快捷鍵設(shè)置 為了方便用戶的操作,現(xiàn)在絕大部分的應(yīng)用軟件都設(shè)置有快捷鍵操作,能夠?qū)崿F(xiàn)對軟件的快捷操作。比如,當(dāng)用戶右鍵播放器托盤圖標(biāo)的時候,彈出的菜單有:最小化、復(fù)原、設(shè)置等,當(dāng)用戶右擊播放列表,彈出菜單有:刪除此歌曲、刪除全部歌曲、打開文件等功能。 提供給商業(yè)軟件開發(fā)。 GNU 通用公共許可證下,它是免費(fèi)的。 Qt 對于 大多數(shù)人 來 說,還是一個新事物,但是 它 只是一個跨平臺應(yīng)用程序和 UI 開發(fā)框架,而且這個項目對于 Qt 的運(yùn)用不是很深入,只是對于某一些基本的理論知識的學(xué)習(xí)和運(yùn)用。 應(yīng)用分析 本文是在 Debian操作系統(tǒng)平臺上進(jìn)行的開發(fā), 使用 Qt實現(xiàn) C++圖形用戶界面開發(fā) ,Phonon 實現(xiàn) 多媒體編程 。本播放器實現(xiàn)了大部分基本功能,能夠滿足 用戶 一般的播放需要。 通過以上分析,播放器的功能不是非常復(fù)雜,完成這個音樂播放器的知識大都已經(jīng)具備,所以能夠較好的完成。 在上述基礎(chǔ)上 ,做出音樂播放器的相關(guān)功能如下 : (1) 美觀、時尚的操作界面 。 (5) 通過播放列表來選擇播放曲目 。 9 3 系統(tǒng)設(shè)計 Qt 信號與槽 機(jī)制 介紹 在以往的 GUI 用戶界面中,用戶操作一個窗口部件時,需要其他窗口部件的響應(yīng)或者能夠激活其他操作。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是 QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。 信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調(diào)函數(shù)那樣產(chǎn)生 core dumps。槽用于接收信號,但它們是普通的對象成員函數(shù)??傊盘柵c槽構(gòu)造了一個強(qiáng)大的部件編程機(jī)制。信號 與 槽機(jī)制完全獨(dú)立于10 任何 GUI 事件循環(huán)。例如,下面定義了 兩 個信號: signals: void mySignal()。從形式上講信號的聲明與普通的 C++函數(shù)是一樣的,但是信號卻沒有函數(shù)體定義 。當(dāng)與其關(guān)聯(lián)的信號被發(fā)射時,這個槽就會被調(diào)用。同普通的 C++ 成員函數(shù)一樣,槽函數(shù)也分為三種類型,即 public slots、 private slots 和 protected slots。 (2) protected slots 類型。 在這個區(qū)內(nèi)聲明的槽意味著只有類自己可以將信號與之相連接。例如,下面聲明了 兩 個槽: public slots: void mySlot()。 槽 的返回類型都是 void。 在程序中,使用 QObject::connect()函數(shù)來將信號與槽關(guān)聯(lián)。 一個信號與多個槽關(guān)聯(lián)的情況下,當(dāng)發(fā)出信號的時候,與此信號關(guān)聯(lián)的各個槽之間以任意的先后順序立即執(zhí)行,即:槽函數(shù)之間的執(zhí)行順序是隨機(jī)的,與信號和槽關(guān)聯(lián)的先后沒有關(guān)系。以往的 callback 缺 乏類型安全,在呼叫處理函數(shù)時,無法確定是傳遞正確型態(tài)的參數(shù)。 (2) 松散耦合的。而一旦關(guān)聯(lián)信號和槽, Qt 就保證了合適的槽得到調(diào)用。 信號和槽機(jī)制增強(qiáng)了對象間通信的靈活性,然而也損失了一些性能。信號和槽帶來的性能損耗,對實時應(yīng)用程序是很小的。 Media Object( 媒體對象 ) 管理一個 Media Source( 媒13 體源 ) ,比如一個音樂文件;它提供了簡單的播放控制 ,比如開始、停止和暫停播放。而 Qt中的 phonon 作為 跨 平臺的多媒體解決方案,就 應(yīng)該 為用戶屏蔽掉這些差異 ,如圖 33 所示: 圖 33 詳細(xì) Phonon 框架 圖 33 是 Phonon 的詳細(xì)框架圖 , 由圖可知 Phonon 框架實質(zhì)上分 4 個部分 : 程序 、Phonon 庫 、 Phonon 后端插件 (phonon_backend)、 真正的后端。而后端才是實際進(jìn)行讀入媒體、解碼并且播放的部分,他們和后端插件是一一對應(yīng)的。而媒體播放、暫停與停止都是由它來控制;而在此之前,mediaObject 必須要與 output node 連接,如早先所講的,這個 nodes 主要將媒體輸出至底層的硬 件 ,例如 聲 卡或顯 卡等,而所需要的 output node 則是根據(jù)多媒體的內(nèi)容而所不同,目前 Phonon 有兩種 output node: ○ 1 AudioOutput-聲音播 放 。 (2) Phonon::AudioOutput Class AudioOutput 類別主要是用來把多媒體的聲音送到聲音輸出裝置。 MediaObject位于這一層的上層,增加了諸如暫停、播放和倒帶之類的功能。用法: Phonon::Path path=Phonon::createPath(mediaObject, audioOutput)。 seekSlider setMediaObject(mediaObject)。 volumeSlidersetAudioOutput(audioOutput)。 QListT是 一組指向被存儲元素的數(shù)組。 播放器的基本功能 在使用 Phonon 多媒體框架前,需要在項目額外設(shè)定使用 Phonon 模組,必須要在qmaek project file(即 .pro)中加入: QT += phonon,將 Phonon 庫添加進(jìn)項目 [6]。 volumeSlider=new Phonon::VolumeSlider(uiVolumewidget)。 最后,將進(jìn)度條和音量 控制條顯示在主窗口中: seekSlidershow()。 代碼實現(xiàn) : mediaObjectplay()。 void MainWindow::showTime(qint64 time) { qint64 temp = mediaObjecttotalTime()。 thisuicurTImeLabelsetText(tr(%1 ) .arg((mm:ss)))。 代碼實現(xiàn): mediaObjectstop()。 mediaObjectstop()。 代碼實現(xiàn): int index = (mediaObjectcurrentSource())1。 (6) 播放進(jìn)度的拖動 如果用戶想自己選擇播放進(jìn)度,可以拖動進(jìn)度條( seekSlider),由 seekSlider 自動調(diào)整到用戶選擇的播放進(jìn)度。 foreach(QString file,files) { (file)。 代碼實現(xiàn): connect(thisuimusicTable, SIGNAL(cellDoubleClicked(int,int)),this, SLOT(doubleClicked(int,int)))。 代碼實現(xiàn): connect(thistrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)))。 break。如果用戶選擇 OK按鈕,將保存設(shè)置。 函數(shù)原型: QSettings(const QStringamp。 QSettings 的使用 在本文中使用 QSettings 類來實現(xiàn)播放器設(shè)置 [15],將結(jié)果保存在系統(tǒng)文件 中,配置文件內(nèi)容如 圖 37 所示 : 圖 37 文件 (1) minimizeToTray 是否允許播放器最小化到托盤 ; (2) defaultOpenDir 默認(rèn)添加文件打開目錄 ; (3) skinPath 界面背景圖像路徑 。 Qstring oldOpenDir=musicSettingsvalue(defaultOpenDir).toString()。 QSettings 的亂碼問題 由于漢字的存儲不同于英文字符,所以不能使用 ASCII 字符集進(jìn)行編碼,在使用QSettings 的過程中,會出現(xiàn)亂碼的情況。 設(shè)置背景 根據(jù)配置文件獲取設(shè)置圖標(biāo)路徑,并且初始化圖標(biāo) Qstring skinPath=musicSettingsvalue(“skinPath”).toString()。 設(shè)置系統(tǒng)托盤圖標(biāo) 為程序添加體統(tǒng)托盤圖標(biāo)和上下文菜單 : QIcon icon=QIcon(./image/)。 parenttrayIconsetToolTip(music play)。 parenttrayIconMenuaddAction(minimizeAction)。 軟件測試 (Software Testing)是發(fā)現(xiàn)軟件中錯誤和缺陷的主要手段,是保證軟件質(zhì)量的法寶之一。 軟件測試的目的 對于軟件測試的目的, 提出過以下觀點(diǎn): (1) 測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程 。 測試的方法 軟件測試一般分為白箱測試和黑箱測試
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1