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

正文內(nèi)容

嵌入式系統(tǒng)課程設(shè)計音樂播放器-在線瀏覽

2025-08-04 15:54本頁面
  

【正文】 放狀態(tài)的改變在同一時間只顯示一個按鈕,這樣就模擬實現(xiàn)了播放/暫停功能按鈕,如果在播放狀態(tài)時想點擊播放按鈕播放其他MP3可以通過菜單中實現(xiàn)。如果播放器當(dāng)前沒有文件正在進(jìn)行播放時,該按鈕將置為無效狀態(tài),此時該按鈕不能點擊。所以,一個播放器的設(shè)計有這個功能按鈕的話,就表示它一定有一個用來保存媒體文件的播放列表。這樣設(shè)計的目的,是使得整個功能控制按鈕的順序與MP3文件在列表中的順序相似。在本系統(tǒng)中,下一首按鈕設(shè)計在播放/暫停功能按鈕的后面。 5) 打開按鈕的設(shè)計打開功能按鈕的設(shè)計,是方便用戶選擇一個媒體文件,并立即進(jìn)行播放。相反,如果當(dāng)前列表窗口的狀態(tài)為隱藏狀態(tài),用戶的操作將會顯示列表窗口。當(dāng)用戶點擊此按鈕時,將檢查歌詞顯示窗口的狀態(tài)。8)靜音按鈕該按鈕可以控制播放器輸出聲音的開啟和關(guān)閉。如果當(dāng)前聲音狀態(tài)為開啟,則將其管理,即靜音;如果當(dāng)前聲音狀態(tài)為關(guān)閉,則將其開啟。9) 音量控制條 音量控制條的設(shè)計與音量大小和播放器的輸出音量關(guān)聯(lián),它的改變將直接影響播放器輸出音量的大小,其主要功能是用來控制系統(tǒng)播放媒體文件時發(fā)出的音量大小。當(dāng)控制條滑到最左邊時表示MP3文件的初始位置,當(dāng)控制條滑到最右邊時表示當(dāng)前位置為MP3文件的最后位置。效果如圖4所示圖4 播放列表界面 MP3 文件播放控制模塊詳細(xì)設(shè)計與實現(xiàn)MP3文件的播放控制模塊是本播放器系統(tǒng)的很重要的組成部分。首先說明的是,媒體播放器的播放控制的類型,如表2所示表 2 播放控制模塊組成控件功能播放按鈕從媒體文件打開播放或從暫停狀態(tài)繼續(xù)播放暫停暫停當(dāng)前MP3文件的播放停止停止播放當(dāng)前MP3音樂文件上一首播放列表中當(dāng)前MP3文件的上一首MP3文件下一首播放列表中當(dāng)前MP3文件的下一首MP3文件打開選擇一首MP3文件在本播放器中,總共有三種狀態(tài),即播放狀態(tài)、暫停狀態(tài)和停止?fàn)顟B(tài),通過表中所列的各種播放控制類型可以實現(xiàn)這三種狀態(tài)之間的轉(zhuǎn)換,其具體轉(zhuǎn)換如圖5(見附錄1)所示。在本播放器系統(tǒng)中,當(dāng)點擊播放會有三種狀態(tài)轉(zhuǎn)換:第一種是從播放狀態(tài)仍然轉(zhuǎn)換到播放狀態(tài);第二種是從停止?fàn)顟B(tài)轉(zhuǎn)換到播放狀態(tài);第三種是從暫停狀態(tài)轉(zhuǎn)換到播放狀態(tài)。 當(dāng)播放器接收到播放命令后,會依次執(zhí)行下面的過程:(1)檢查播放器的當(dāng)前狀態(tài)是否是暫停狀態(tài)。暫停:當(dāng)用戶播放一個媒體文件到某一個特定的點時,由于某些原因需要暫停當(dāng)前媒體文件的播放,這就要求設(shè)計的媒體播放器具有暫停播放的功能。而這個狀態(tài)轉(zhuǎn)換的條件,就是在系統(tǒng)播放時用戶點擊暫停按鈕,暫停功能的流程如圖7(見附錄1)所示。進(jìn)入停止?fàn)顟B(tài)的初始狀態(tài)也有兩種:第一種是播放狀態(tài);第二種是暫停狀態(tài),當(dāng)播放器轉(zhuǎn)換為停止?fàn)顟B(tài)后,暫停功能和停止功能都變?yōu)闊o效功能,不能使用,直到轉(zhuǎn)換到播放狀態(tài)。 當(dāng)播放器接收到停止命令后,會執(zhí)行以下過程: (1)設(shè)置各按鈕狀態(tài),播放為有效,暫停和停止置為無效;(2)檢查停止命令是用戶手動停止,還是播放器播放完一首MP3后自動轉(zhuǎn)換到停止?fàn)顟B(tài)。上一首:上一首是針對播放列表所定義的操作。因為在本播放器系統(tǒng)中,如果當(dāng)前播放的MP3文件是播放列表中的第一首時,上一首功能設(shè)置為無效狀態(tài),所以在系統(tǒng)發(fā)送播放上一首命令時,不需要檢查當(dāng)前播放的文件是否是播放列表中的第一文件,而可以執(zhí)行播放上一首的操作。下一首:同樣,播放下一首也是針對播放列表所定義的操作。同樣,在本播放器系統(tǒng)中,如果當(dāng)前播放的文件是播放列表中最后一個文件,那么播放下一首功能會設(shè)置為無效狀態(tài),所以系統(tǒng)在響應(yīng)播放下一首命令時,無需檢查當(dāng)前播放文件是否是播放列表的最后一個文件。下一首功能的流程可參照圖9。當(dāng)系統(tǒng)接收到該命令時,先會彈出一個打開文件對話框,然后由用戶選擇所要打開的MP3文件,把這個文件添加到播放列表,然后使用播放功能播放該文件。向列表中添加單首 MP3 文件:向播放列表中添加媒體文件,都是在系統(tǒng)的播放列表窗口界面上進(jìn)行操作的,以添加單首MP3文件。當(dāng)用戶點擊文件對話框上的打開按鈕以后,用戶所選擇的MP3文件就會被添加到播放列表中供用戶查看和控制。在對播放列表中的MP3文件進(jìn)行刪除操作時,前提是播放列表中必須有一首MP3文件被選中,否則將不會有任何事件發(fā)生。其中,系統(tǒng)所做的工作是:記錄當(dāng)前用戶所刪除的文件在列表中的索引,然后根據(jù)這個索引值刪除掉播放列表中的該索引項,然后系統(tǒng)會自動將該項后面的項向前移動一位。 其次就是QT creator的庫依賴問題,在創(chuàng)建工程的時候可以用GUI選擇你需要依賴的Qt模塊,這樣你可以僅僅通過包含頭文件名即可正確包含頭文件,但是沒有選擇的話,你需要包含相對目錄。提供多媒體回放的功能。phonon最初是 一個 源于KDE的項目為使用音頻和視頻的應(yīng)用程序開發(fā)提供的一個框架。Qt也是通過phonon來實現(xiàn)夸平臺的多媒體播放。第五章 設(shè)計總結(jié)本次設(shè)計在Linux操作系統(tǒng)下,Qt作為嵌入式系統(tǒng)圖形用戶界面GUI,通過虛擬機(jī)的RedHat Enterprise Linux 5系統(tǒng)進(jìn)行模擬,基本完成了基于QT的多媒體播放器的實現(xiàn)。
不過本次設(shè)計過程中,由于時間因素的限制,對于QT庫的研究還不夠徹底,基于QT的播放器的設(shè)計與實現(xiàn)是需要依賴phonon框架的,我從網(wǎng)上下載的所有的版本都缺乏phonon庫,使得在最終結(jié)果的實現(xiàn)有了很大的阻礙。 主要參考文獻(xiàn):,北京:北京大學(xué)出版社,2011年王勇編著.《嵌入式系統(tǒng)原理與設(shè)計》. 杭州:浙江大學(xué)出版社,2007年(美)Christopher Hallinan 著,華清遠(yuǎn)見嵌入式培訓(xùn)中心 譯 《嵌入式Linux基礎(chǔ)教程》,人民郵電出版社,2009年俞輝 主編,嵌入式Linux程序設(shè)計案例與實驗教材,機(jī)械工業(yè)出版社,2009年韋東山 主編,嵌入式Linux應(yīng)用開發(fā)完全手冊,人民郵電出版社,2008年版俞建新等編,嵌入式應(yīng)用程序開發(fā)綜合實驗9例,清華大學(xué)出版社,2004年(英)薩默菲爾德著,白建平等譯,Qt高級編程,電子工業(yè)出版社2011年鄭阿奇,《Qt 4開發(fā)實踐》,電子工業(yè)出版社。在此,將詳細(xì)介紹這些窗口在不同狀態(tài)下的圖示,尤其是播放器的主要播放控制窗口。圖12 播放狀態(tài) 此時播放器的主控制窗口界面如圖13所示圖13 暫停狀態(tài) 此時播放器的主控制窗口界面如圖14所示圖14 停止?fàn)顟B(tài)播放器的列表窗口界面也是由兩部分組成的,第一部分是播放列表項目;第二部分是MP3媒體文件顯示列表。圖15 播放器的播放列表窗口界面效果附錄3 程序源代碼:ifndef LRCWINDOW_Hdefine LRCWINDOW_Hinclude QLabelinclude QTimerclass lrcWindow : public QLabel{ Q_OBJECTpublic: lrcWindow(QWidget *parent)。 void setTime(int num){time = num。QTimer *timer。 int time。 qreal lrcWidth。 void mouseMoveEvent(QMouseEvent *)。 void paintEvent(QPaintEvent *)。}。}class musicList : public QWidget{ Q_OBJECTpublic: musicList(QWidget *parent = 0)。 Ui::musicList *ui。 void listWriteSettings()。 void closeEvent(QCloseEvent *)。signals: void listClose()。endif // MUSICLIST_H:ifndef WIDGET_Hdefine WIDGET_Hinclude QWidgetinclude phononinclude include include QTimerinclude QSystemTrayIconinclude QMenuinclude QTextEditclass QLabel。}class Widget : public QWidget { Q_OBJECTpublic: Widget(QWidget *parent = 0)。 void creatActions()。protected: void changeEvent(QEvent *e)。 bool eventFilter(QObject *, QEvent *)。 void dragEnterEvent(QDragEnterEvent *)。 void closeEvent(QCloseEvent *)。 void mouseDoubleClickEvent(QMouseEvent *)。 musicList *mList。 Phonon::MediaObject *musicInformationMediaObject。 Phonon::AudioOutput *audioOutput。 Phonon::VolumeSlider *volumeSlider。 QWidget *lrcWidget。 lrcWindow *lrc。 QTimer *timer。 QIcon *iconpause。 QAction *stop。 QAction *sound。 QAction *remove。 QMenu *trayiconMenu。 void writeSettings()。 bool isTouched。 void tableWidget_cellDoubleClicked(int row, int column)。 void on_toolButton_next_clicked()。 void on_toolButton_playpause_clicked()。 void on_toolButton_open_clicked()。 void Timeout()。 void mediaObjectStateChanged(Phonon::State,Phonon::State)。 void currentMusicSourceChanged(Phonon::MediaSource)。 void exitSlot()。signals: void mySignal()。endif // WIDGET_H:include QtGui/QApplicationinclude include QTextCodecint main(int argc, char *argv[]){ QApplication a(argc, argv)。 Widget w。 return ()。 thisresize(1024,60)。 thissetAttribute(Qt::WA_TranslucentBackground)。 exit = new QAction(tr(隱藏(amp。 connect(exit,SIGNAL(triggered()),this,SLOT(close()))。 connect(timer,SIGNAL(timeout()),this,SLOT(timeout()))。 lrcWidth = 0。 eventaccept()。 QLabel::mousePressEvent(event)。 Qt::LeftButton) { move(eglobalPos() dragPosition)。 } QLabel::mouseMoveEvent(e)。 (exit)。 QLabel::contextMenuEvent(ev)。 // (QPainter::Antialiasing | QPainter::TextAntialiasing)。 (font)。 (0,QColor(0,170,255,255))。 (,QColor(85,255,255,255))。 (1,QColor(0,170,255,255))。 (Qt::NoPen)。 (0,50,font,text())。 length = ().x()。 (0,14,lrcWidth,50,Qt::AlignLeft,text())。 update()。}:include include include QSettingsinclude QCloseEventmusicList::musicList(QWidget *parent) : QWidget(parent), ui(new Ui::musicList){ uisetupUi(this)。 uitableWidgetsetAcceptDrops(true)。}musicList::~musicList(){ delete ui。 switch (etype()) { case QEvent::Language
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1