嵌入式機(jī)車車輛車載播放系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)
6)打開本地文件
Qt和QT/Embedded提供了一套標(biāo)準(zhǔn)的通用對(duì)話框?yàn)榉奖愠绦騿T進(jìn)行某些特定功能對(duì)話框的編程,其中包括了文件對(duì)話框QFileDialog.通過彈出QFileDialog對(duì)話框,我們既可以選擇一個(gè)或者多個(gè)文件以及目錄,也可以輸入文件名或者路徑。它可以限制用戶只能選擇已經(jīng)存在的文件,也可以允許用戶輸入一個(gè)新的文件名;此外,使用過濾器,則只能選擇符合特殊標(biāo)準(zhǔn)的文件名。點(diǎn)擊打開按鈕會(huì)彈出獲取本地文件路徑和名稱的對(duì)話框,當(dāng)用戶選中后,因?yàn)樗潜镜匚募瑫?huì)直接把地址賦給播放的對(duì)象,當(dāng)播放完后繼續(xù)播放usersong.xml中的下一首。
7)靜音
音量的控制是通過Phonon::VolumSlid e r控件實(shí)現(xiàn)的,通過執(zhí)行語(yǔ)句:u i ->volumeSlider->setAudioOutput(audiooutput)將音量的控件連接到了音頻輸出的設(shè)備上,通過語(yǔ)句Phonon::createPath(mediaobject,audiooutput)音頻輸出的設(shè)備和播放的對(duì)象mediaobject連接,因此實(shí)現(xiàn)靜音功能。
8)顯示歌曲名稱
void Player::setLabel(QString
track)
{
QString filename = mediaObject-
>currentSource()。fileName();
filename = filename.right
( f i l e n a m e . l e n g t h ( ) - f i l e n a m e .
lastIndexOf(‘/’)-1);
this->setWindowTitle(“Player
~”+filename);
}
9)關(guān)閉窗口
雙擊窗體空白處可關(guān)閉播放器。需重定義鼠標(biāo)雙擊事件調(diào)用close()函數(shù)加以實(shí)現(xiàn)。
10)數(shù)據(jù)庫(kù)操作
程序中使用SQLite數(shù)據(jù)庫(kù)對(duì)歌曲及用戶信息進(jìn)行管理。
SQLite是D.Richard Hipp用C語(yǔ)言編寫的開源嵌入式數(shù)據(jù)庫(kù)引擎。它是完全獨(dú)立的,不具有外部依賴性,非常健壯。SQLite第一個(gè)Alpha版本誕生于2000年5月,至今已經(jīng)有11個(gè)年頭,最新版本SQLite3也已經(jīng)發(fā)布。SQLite是完全免費(fèi)開源的軟件。
SQLite能夠運(yùn)行在Windows/Linux/Unix等各種操作系統(tǒng)。SQLite源代碼大約3萬(wàn)行,250KB大小,占用資源非常少。相比Mysql、PostgreSQL這兩款著名的開源數(shù)據(jù)庫(kù),SQLite占用資源更少,處理速度更快,非常適合用于嵌入式系統(tǒng)開發(fā)中。
在系統(tǒng)中采用SQLite數(shù)據(jù)庫(kù)對(duì)歌曲信息結(jié)構(gòu)進(jìn)行組織、存儲(chǔ)以及管理。通過使用SQLite建立歌曲信息數(shù)據(jù)庫(kù)表,然后就可以在程序通過相關(guān)接口函數(shù)對(duì)歌曲信息進(jìn)行操作,如插入、刪除、更新、查詢等。采用SQLite數(shù)據(jù)庫(kù)進(jìn)行歌曲信息的管理大大降低了編程的復(fù)雜性。
在具體的系統(tǒng)數(shù)據(jù)庫(kù)模塊中,采用了Qt連接SQLite數(shù)據(jù)庫(kù)的方式來操作數(shù)據(jù)庫(kù)。Qt框架中QtSql模塊提供了一個(gè)平臺(tái)無(wú)關(guān)且數(shù)據(jù)庫(kù)無(wú)關(guān)的訪問S Q L數(shù)據(jù)庫(kù)的接口。Qt中的每個(gè)數(shù)據(jù)庫(kù)連接用一個(gè)QSqlDatabase對(duì)象來表示,同時(shí)Qt也使用不同driver來和各種不同數(shù)據(jù)庫(kù)的API進(jìn)行通訊。對(duì)于SQLite數(shù)據(jù)庫(kù)Qt提供了很好的支持和封裝,通過Qt的相關(guān)類可以很容易的進(jìn)行數(shù)據(jù)庫(kù)操作。
要實(shí)現(xiàn)對(duì)S Q L i t e 數(shù)據(jù)庫(kù)進(jìn)行操作首先需要?jiǎng)?chuàng)建一個(gè)關(guān)于數(shù)據(jù)庫(kù)的創(chuàng)建和鏈接的頭文件,然后在頭文件中通過創(chuàng)建QSqlDatabase數(shù)據(jù)庫(kù)連接對(duì)象來調(diào)用addDatabase()并設(shè)置相關(guān)函數(shù)的屬性,然后在工程文件的最后添加關(guān)于使用數(shù)據(jù)庫(kù)的聲明“QT+=sql”.
4.MPlayer播放器的控制
MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發(fā)布。此款軟件可在各主流作業(yè)系統(tǒng)使用,例如Linux和其他類Unix系統(tǒng)、微軟的視窗系統(tǒng)及蘋果電腦的Mac OS X系統(tǒng)。MPlayer能夠播放大多數(shù)MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等媒體文件。相對(duì)其它播放器來說,MPlayer還具有資源占用非常少,不需要任何系統(tǒng)解碼器就可以播放各種媒體格式,在低配置的機(jī)器上使用等突出優(yōu)勢(shì)。所以對(duì)于運(yùn)算速度相對(duì)較弱的嵌入式系統(tǒng)來說,MPlayer是一個(gè)很好的選擇。
在本文的系統(tǒng)設(shè)計(jì)中,選用了MPlayer作為系統(tǒng)的媒體播放器來進(jìn)行媒體文件的播放以及控制。在系統(tǒng)的播放模塊中采用Qt的QProcess(進(jìn)程類)通過start方法調(diào)用slave模式下的MPlayer產(chǎn)生一個(gè)進(jìn)程,然后通過QProcess類的write方法向MPlayer發(fā)送控制命令,實(shí)現(xiàn)控制播放的目的。
5.小結(jié)
本論文詳細(xì)介紹了如何使用Qt Creator完成車載音樂播放系統(tǒng)的界面設(shè)計(jì)及程序代碼的編輯與運(yùn)行。此車載播放系統(tǒng)可實(shí)現(xiàn)的功能如下:
1)具有美觀、易于理解和操作的主界面;
2)可按照多種方式對(duì)數(shù)據(jù)庫(kù)中的歌曲進(jìn)行查找;
3)可實(shí)現(xiàn)歌曲的播放、暫停,以及上一首和下一首歌曲的切換;
4)所選歌曲可生成播放列表,列表可以循環(huán)播放,列表信息可修改,在列表中雙擊歌曲名稱可播放該歌曲;
5 ) 可對(duì)設(shè)備中存儲(chǔ)的歌曲進(jìn)行刪除;
6)可播放外接存儲(chǔ)器中的歌曲。
同時(shí),系統(tǒng)可以方便地移植到各種嵌入式設(shè)備中。
評(píng)論