第一篇:音樂(lè)播放器課設(shè)報(bào)告要點(diǎn)
音樂(lè)播放器
音樂(lè)播放器 問(wèn)題定義和可行性研究................................................................2
(1)問(wèn)題定義.......................................................................................................................2(2)可行性研究.....................................................................................................................3 需求分析........................................................................................3 功能需求...............................................................................................................................3
1.1 功能描述....................................................................................................................3 2 性能需求...............................................................................................................................4 3 將來(lái)可能提出的要求...........................................................................................................4 4項(xiàng)目描述................................................................................................................................5
4.1編寫目的.....................................................................................................................5 4.2項(xiàng)目背景.....................................................................................................................5 4.3開(kāi)發(fā)工具及環(huán)境簡(jiǎn)介.................................................................................................6 3 概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)....................................................................6
3.1概要設(shè)計(jì).............................................................................................................................6 3.2 詳細(xì)設(shè)計(jì)............................................................................................................................7 3.3音樂(lè)編碼設(shè)計(jì).....................................................................................................................7
5主界面界面介紹.............................................................................8 6 系統(tǒng)的實(shí)現(xiàn)..................................................................................11
一、主要的對(duì)話框.................................................................................................................11
二、全局變量.........................................................................................................................12
三、初始化函數(shù).....................................................................................................................12
三、播放、暫停功能.............................................................................................................15
四、添加文件到播放列表.....................................................................................................18
五、下一首上一首................................................................................................................20
六、停止播放.........................................................................................................................21
七、播放模式.........................................................................................................................21
八、顯示時(shí)間和播放進(jìn)度.....................................................................................................22
九、刪除歌曲.........................................................................................................................23 5.2 單元測(cè)試..........................................................................................................................25 6.總結(jié)...............................................................................................26 問(wèn)題定義和可行性研究
本章分為兩部分,問(wèn)題定義和可行性研究。問(wèn)題定義階段主要研究我們所學(xué)的知識(shí)能做什么項(xiàng)目,而可行性研究給出了制作音樂(lè)播放器的可行性。
(1)問(wèn)題定義
通過(guò)開(kāi)發(fā)音樂(lè)播放器,來(lái)練習(xí)本學(xué)期軟件工程課程所學(xué)知識(shí)。熟悉軟件開(kāi)發(fā)的各個(gè)階段,將書本上的知識(shí)與實(shí)踐性的開(kāi)發(fā)活動(dòng)聯(lián)系起來(lái)。實(shí)現(xiàn)音樂(lè)播放器基本的功能。(2)可行性研究
大一的時(shí)候已經(jīng)學(xué)過(guò)了基本的C++編程的知識(shí),在這個(gè)基礎(chǔ)上,有三個(gè)星期的時(shí)間來(lái)學(xué)習(xí)MFC編程,學(xué)習(xí)文件的讀寫操作,以及系統(tǒng)API函數(shù)調(diào)用等知識(shí)。邊學(xué)邊用,具備開(kāi)發(fā)軟件的能力。需求分析
本章給出了音樂(lè)播放器應(yīng)該具備的功能,并給出了功能示意圖,最后提出了實(shí)現(xiàn)該播放器應(yīng)該具備的條件。功能需求 1.1 功能描述
本播放器主要有如下功能:1.對(duì)文件進(jìn)行操作。2.對(duì)按鈕的處理
1.對(duì)文件的操作
通過(guò)文件的讀寫知識(shí),實(shí)現(xiàn)瀏覽目錄以選擇文件,添加歌曲到播放列表,刪除播放列表中的歌曲,對(duì)已經(jīng)選中的文件進(jìn)行播放、暫停,以及通過(guò)雙擊播放列表中的歌曲來(lái)播放文件。
2.對(duì)控件的處理
對(duì)各種按鈕添加了事件響應(yīng)函數(shù),可以處理基本的播放,暫停,上一首/下一首,刪除,選擇播放模式等操作。功能如下圖: 性能需求
本項(xiàng)目是一個(gè)普通的音樂(lè)播放器,運(yùn)行環(huán)境為VS2010,項(xiàng)目運(yùn)行速率正常,可以滿足用戶需求。1.時(shí)間性能要求:越低越好。
2.便捷性:運(yùn)用了可視化編程,更有助于人機(jī)交互,更人性化。程序的運(yùn)行,符合正常的操作習(xí)慣,程序功能明了簡(jiǎn)潔!將來(lái)可能提出的要求
(1)歌曲列表的保存(2)菜單操作(3)更換背景圖片
(4)提供網(wǎng)絡(luò)下載功能:支持通過(guò)歌名和歌手名進(jìn)行歌曲檢索和下載功能;(5)支持歌詞顯示和同步播放;(6)支持歌曲在線播放;
(7)支持更友好的歌曲檢索和下載功能;(8)提供更良好的操作界面。
4項(xiàng)目描述 4.1編寫目的
設(shè)計(jì)一個(gè)基于windows平臺(tái)的音樂(lè)點(diǎn)播系統(tǒng),實(shí)現(xiàn)音樂(lè)庫(kù)的管理以及播放功能。
音樂(lè)播放器能夠滿足音樂(lè)的播放功能,實(shí)現(xiàn)一款播放器的基本功能。
4.2項(xiàng)目背景
本項(xiàng)目作為《軟件課程設(shè)計(jì)》課程的訓(xùn)練項(xiàng)目提出,在基本的設(shè)計(jì)實(shí)現(xiàn)基礎(chǔ)上,將不斷對(duì)已有的設(shè)計(jì)進(jìn)行進(jìn)一步的修改和完善,最終完成整個(gè)軟件開(kāi)發(fā)過(guò)程。本次項(xiàng)目的旨在通過(guò)不同軟件工程設(shè)計(jì)方法與技術(shù)的實(shí)踐,了解和掌握各種技術(shù)、工具平臺(tái)的特點(diǎn)與局限性,體會(huì)協(xié)同開(kāi)發(fā)方式。
第1階段:主要目的是通過(guò)對(duì)項(xiàng)目需求的分析和理解,通過(guò)面向?qū)ο蟮脑O(shè)計(jì)方式完成項(xiàng)目前期的準(zhǔn)備工作。
第2階段:我們會(huì)根據(jù)既定需求,完善設(shè)計(jì)模式。第3階段:在設(shè)計(jì)文檔和需求分析的文檔下,完成音樂(lè)點(diǎn)播系統(tǒng)原型的開(kāi)發(fā),并完成整個(gè)開(kāi)發(fā)流程的測(cè)試報(bào)告
第4階段:通過(guò)音樂(lè)點(diǎn)播系統(tǒng)軟件的設(shè)計(jì)開(kāi)發(fā),了解軟件文檔的編寫原則,訓(xùn)練掌握軟件各類文檔寫作的技巧,同時(shí)在文檔的編寫過(guò)程中提高和增加C++開(kāi)發(fā)的能力和經(jīng)驗(yàn)。
4.3開(kāi)發(fā)工具及環(huán)境簡(jiǎn)介
操作系統(tǒng):windows xp或以上版本
C++ 6.0: Visual C++是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問(wèn)世,Visual C++已成為專業(yè)程序員進(jìn)行軟件開(kāi)發(fā)的首選工具。
Microsoft Office Word 2003:經(jīng)典辦公軟件,本項(xiàng)目中用于編寫文檔。概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)
3.1概要設(shè)計(jì)
通過(guò)這個(gè)階段的工作將劃分出組成系統(tǒng)的物理元素——程序,文件和文檔等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)??傮w設(shè)計(jì)的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定該軟件由哪些模塊組成的,以及這些模塊之間的關(guān)系。
運(yùn)用傳統(tǒng)軟件工程方法學(xué)的知識(shí)將音樂(lè)播放器軟件的開(kāi)發(fā)分成:
一、MFC的使用以及實(shí)現(xiàn)方法
二、文件的讀寫操作
三、系統(tǒng)API函數(shù)的調(diào)用
3.2 詳細(xì)設(shè)計(jì)
根據(jù)概要設(shè)計(jì)所劃分的四個(gè)模塊,該階段應(yīng)詳細(xì)地完成這四個(gè)模塊的任務(wù):
一、MFC的實(shí)現(xiàn)
通過(guò)MFC窗口以及函數(shù)的使用,創(chuàng)建出播放器的主界面,主界面應(yīng)包括文件的打開(kāi)、添加、播放以及線程按鍵。另外,還要各種函數(shù)應(yīng)該實(shí)現(xiàn)相應(yīng)組件上的各種事件。
二、文件讀寫操作的實(shí)現(xiàn)
通過(guò)以前的學(xué)過(guò)的文件讀寫操作知識(shí),實(shí)現(xiàn)對(duì)音樂(lè)文件的讀以及寫操作。
三、系統(tǒng)API函數(shù)的調(diào)用
通過(guò)調(diào)用系統(tǒng)媒體控制接口函數(shù)實(shí)現(xiàn)對(duì)mp3,wav,wma等格式的音樂(lè)的播放的功能。
3.3音樂(lè)編碼設(shè)計(jì)
一、編碼原理
1.音樂(lè)的十二平均率規(guī)定(1)每?jī)蓚€(gè)八度音之間的頻率相差一倍。
(2)兩個(gè)八度音之間又可以分為十二個(gè)伴音,每?jī)蓚€(gè)伴音的頻率比為1.059463。
(3)低音6(音名A)的頻率是440Hz,音名B到C之間、E到F之間為伴音,其余為全音。2.樂(lè)譜編碼
選取65536Hz為基準(zhǔn)頻率,以此頻率分頻得到簡(jiǎn)譜高音各音調(diào)的分頻比。計(jì)算公式為N=65536/f。
二、編碼參照
為了讓ROM能夠識(shí)別各音頻的分頻系數(shù),需將個(gè)音頻分頻系數(shù)按照一定格式轉(zhuǎn)換成十六進(jìn)制格式。我們采用8位的ROM,D6D5位表示高中低音,如表1-2所示,11為高音,10為中音,01為低音;用D4D3D2D1D0位表示分頻系數(shù),將表1-1的分頻系數(shù)轉(zhuǎn)換成二進(jìn)制格式表示;ROM的高位全部補(bǔ)0。然后轉(zhuǎn)換成十六進(jìn)制如表1-2所示。之所以采用高音分頻比的二分之一為基準(zhǔn)分頻系數(shù),是因?yàn)镽OM的位寬限制,而每?jī)蓚€(gè)八度音頻率相差一倍,所以我們后面用譯碼器譯成各音頻的分頻系數(shù)輸出給分頻器,這樣由分頻器輸出到揚(yáng)聲器,揚(yáng)聲器就可發(fā)聲了。
5主界面界面介紹
1、界面圖:
2添加歌曲按鈕
3、刪除歌曲按鈕
4、音量的變大變小按鈕
5、歌曲時(shí)間和進(jìn)度的顯示圖像
6、下一首歌按鈕
7、上一首歌按鈕
8、停止播放按鈕
9、播放按鈕
10、單曲播放/隨機(jī)播放/順序播放按鈕
11、空白部分為歌曲的菜單列表 6 系統(tǒng)的實(shí)現(xiàn)
一、主要的對(duì)話框
class CMCIPlayerDlg : public CDialogEx { // 構(gòu)造 public: CMCIPlayerDlg(CWnd* pParent = NULL);// 標(biāo)準(zhǔn)構(gòu)造函數(shù) // 對(duì)話框數(shù)據(jù)
enum { IDD = IDD_MCIPLAYER_DIALOG };
protected: virtual void DoDataExchange(CDataExchange* pDX);//
DDX/DDV 支持
// 實(shí)現(xiàn) protected: HICON m_hIcon;
// 生成的消息映射函數(shù)
virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public: // 列表
CListBox m_list;afx_msg void OnBnClickedOnstart();afx_msg void OnBnClickedOnloadmusic();void load(music a);int isplay;int index;CSliderCtrl volume;afx_msg void OnNMCustomdrawVolun(NMHDR *pNMHDR, LRESULT
*pResult);afx_msg void OnBnClickedOnnext();afx_msg void OnBnClickedOnper();afx_msg void OnBnClickedOnstop();LRESULT OnMciNotify(WPARAM wParam, LPARAM lParam);//設(shè)置播放
模式
afx_msg void OnBnClickedOrder();afx_msg void OnLbnDblClk();void OnTimer(UINT nIDEvent);// 進(jìn)度條
CSliderCtrl m_progress;afx_msg DWORD getinfo(DWORD item);afx_msg void OnBnClickedDeletemusic();};
二、全局變量
struct music { string name;string mPath;};int m_max;//進(jìn)度條的最大位置變量
int hour,minute,second;//時(shí)間變量:小時(shí)、分鐘、秒鐘 DWORD cdlen;//某個(gè)音頻文件的總時(shí)間長(zhǎng)度 DWORD m_count;//設(shè)備型號(hào)
DWORD cdfrom,cdto;//歌曲的起點(diǎn)和終點(diǎn) DWORD DeviceID;
list
vector
三、初始化函數(shù)
BOOL CMCIPlayerDlg::OnInitDialog(){ CDialogEx::OnInitDialog();
// 將“關(guān)于...”菜單項(xiàng)添加到系統(tǒng)菜單中。
//volume.SetBkColor(RGB(37,38,37));
HBITMAP
hBitmap;
hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4));
((CButton *)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap);
hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
((CButton *)GetDlgItem(IDC_ONPER))->SetBitmap(hBitmap);
hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2));
((CButton *)GetDlgItem(IDC_ONNEXT))->SetBitmap(hBitmap);
hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP5));
((CButton *)GetDlgItem(IDC_ONSTOP))->SetBitmap(hBitmap);
hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP7));
((CButton *)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap);
SetBackgroundImage(IDB_BITMAP6,BACKGR_TILE,NULL);
isplay=0;
//未播放狀態(tài)
index=-1;
m_list.SetCurSel(0);//設(shè)置初始選擇位置
volume.SetRange(0,1000);//滑塊的移動(dòng)范圍0~1000
volume.SetPos(500);//滑塊指針的初始位置設(shè)為500代表初始音
量為50
ifstream rin;
//導(dǎo)入原先數(shù)據(jù)
rin.open(“Mylist.txt”);
//int rere;
string str[2];
if(rin>>setw(50)>>str[0]>>setw(150)>>str[1])
while(!rin.eof())
{
music mu;
mu.name=str[0];
mu.mPath=str[1];
CString name;
for(int i=0;i { if(mu.name[i]=='/') mu.name[i]=' '; } name=mu.name.c_str(); CString mPath; for(int i=0;i { if(mu.mPath[i]=='/') mu.mPath[i]=' '; } mPath=mu.mPath.c_str(); int j=m_list.GetCount();// 把名字和地址插 入到list控件 m_list.InsertString(j,name); //CString *p=&mPath; allpath.push_back(mPath); rin>>str[0]>>str[1]; } rin.close(); // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX & 0xFFF0)== IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);if(pSysMenu!= NULL){ BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX, strAboutMenu); } } // 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將 自動(dòng) // 執(zhí)行此操作 SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE);// 設(shè)置小圖標(biāo) // TODO: 在此添加額外的初始化代碼 return TRUE;// 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE } 三、播放、暫停功能 void CMCIPlayerDlg::OnBnClickedOnstart()//開(kāi)始播放 { // TODO: 在此添加控件通知處理程序代碼 if(isplay==0){ // TODO: 在此添加控件通知處理程序代碼 if(m_list.GetCurSel()==-1)//判斷有沒(méi)有歌曲被選中,若 沒(méi)有,則從第一首開(kāi)始播放-1代表沒(méi)有被選中 m_list.SetCurSel(0); if(m_list.GetCurSel()==index){ SetTimer(0,1000,NULL); mciSendCommand(DeviceID,MCI_RESUME,0,0); HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); ((CButton *)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,“暫?!?; isplay=1;} else { index = m_list.GetCurSel();CString data;//m_list.GetDlgItemTextA(index,data);//CString c=dat MCI_OPEN_PARMS mciopenparms;//打開(kāi) MCI_PLAY_PARMS mciplayparms;//播放 second=0;minute=0;hour=0;mciopenparms.lpstrElementName=allpath[index];//將音樂(lè)文件路 徑傳給設(shè)備 DWORD dwReturn;if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT| MCI_WAIT,(DWORD)(LPVOID)&mciopenparms)){ //如果打開(kāi)文件失敗,則將出錯(cuò)信息儲(chǔ)存在buffer,并顯示 出錯(cuò)警告 char buffer[256]; mciGetErrorString(dwReturn,buffer,256); MessageBox(buffer,“出錯(cuò)警告!”,MB_ICONHAND| MB_ICONERROR|MB_ICONSTOP); } DeviceID=mciopenparms.wDeviceID; mciopenparms.lpstrDeviceType=NULL;//文件類型 m_count=mciopenparms.wDeviceID;//多媒體設(shè)備類型編號(hào) mciplayparms.dwFrom=0;//每次播放都是從0開(kāi)始播放 HWND hwnd = GetSafeHwnd(); mciplayparms.dwCallback =(DWORD)hwnd;cdlen=getinfo(MCI_STATUS_LENGTH); CString stime;CClientDC dc(this);dc.SetBkColor(RGB(255,255,255));//設(shè)置放置計(jì)數(shù)器區(qū)域的外觀 dc.SetTextColor(RGB(95,180,66));stime.Format(“%02d:%02d:%02d”,cdlen/3600000,(cdlen %3600000)/60000,((cdlen%3600000)%60000)/1000);//顯示時(shí)間進(jìn)度 dc.TextOut(328,13,stime); mciSendCommand(DeviceID,MCI_PLAY,/*MCI_FROM|*/MCI_NOTIFY,(DWORD)(LPVOID)&mciplayparms); SetTimer(0,1000,NULL);//設(shè)置系統(tǒng)計(jì)數(shù)器,顯示歌曲播放的進(jìn)度 HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); ((CButton *)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,“暫?!?;isplay=1;} } else { KillTimer(0); mciSendCommand(DeviceID,MCI_PAUSE,0,0); HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4)); ((CButton *)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,“播放”); isplay=0;} } 四、添加文件到播放列表 void CMCIPlayerDlg::OnBnClickedOnloadmusic()//導(dǎo)入歌曲 { // TODO: 在此添加控件通知處理程序代碼 CFileDialog dlg(TRUE, _T(“*.*”), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,_T(“mp3文件(*.mp3)|*.mp3|” “wma文件(*.wma)|*.wma|” “wav文件(*.wav)|*.wav|” “所有文件(*.*)|*.*|”), NULL); // 選項(xiàng)圖片的約定 dlg.m_ofn.lpstrTitle = _T(“打開(kāi)音樂(lè)文件”); // 打開(kāi)文件對(duì)話框 的標(biāo)題名 if(dlg.DoModal()!= IDOK) // 判斷是否獲得圖 片 return; CString mPath = dlg.GetPathName();// 獲取音樂(lè)路徑 CString mmpath=mPath; allpath.push_back(mPath); int i = mPath.ReverseFind('');//從磁盤地址中獲取歌曲名字 CString name; name = mPath.Right(mPath.GetLength()-1-mPath.ReverseFind('')); int j=m_list.GetCount();// 把名字和地址插入到list控件 m_list.InsertString(j,name);//m_shelllist.SetItemText(j,0,name);music mu;mu.name=name.GetBuffer();mu.mPath=mPath.GetBuffer();load(mu);} void CMCIPlayerDlg::load(music a){ list ifstream rin; rin.open(“Mylist.txt”); //int rere; string str[2]; if(rin>>str[0]>>str[1]) while(!rin.eof()) { music mu; mu.name=str[0]; mu.mPath=str[1]; if(mu.name!=a.name) mus.push_back(mu); else { MessageBox(“已經(jīng)有該歌曲”); return; } rin>>str[0]>>str[1]; } rin.close(); for(int i=0;i //把名 字里面的空格變?yōu)?_' { if(a.name[i]==' ') a.name[i]='/'; } for(int i=0;i //把地 址里面的空格變?yōu)?*' { if(a.mPath[i]==' ') a.mPath[i]='/'; } mus.push_back(a); ofstream out(“Mylist.txt”);list out< (*it).mPath < it++;} out.close();} 五、下一首上一首 void CMCIPlayerDlg::OnBnClickedOnnext()//下一首 { // TODO: 在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0;mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空 上一次播放的設(shè)備 isplay=0;index = m_list.GetCurSel();if(index+1==m_list.GetCount()){ m_list.SetCurSel(0);} else { m_list.SetCurSel(index+1);} OnBnClickedOnstart(); isplay=1;} void CMCIPlayerDlg::OnBnClickedOnper()//上一首 { // TODO: 在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0;mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空 上一次播放的設(shè)備 isplay=0; } index = m_list.GetCurSel();if(index==0){ m_list.SetCurSel(m_list.GetCount()-1);} else { m_list.SetCurSel(index-1);} OnBnClickedOnstart();isplay=1; 六、停止播放 void CMCIPlayerDlg::OnBnClickedOnstop()//停止 { // TODO: 在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0;mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空 上一次播放的設(shè)備 isplay=0;SetDlgItemText(IDC_ONSTART,“播放”);HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4)); ((CButton *)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); index=-1;UpdateData(false);} 七、播放模式 void CMCIPlayerDlg::OnBnClickedOrder()//設(shè)置播放模式 { // TODO: 在此添加控件通知處理程序代碼 CString pattern;GetDlgItemText(IDC_ORDER,pattern);if(pattern==“順序”){ SetDlgItemText(IDC_ORDER,“隨機(jī)”); HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP8)); ((CButton *)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); } if(pattern==“隨機(jī)”){ SetDlgItemText(IDC_ORDER,“單曲”); HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP9)); ((CButton *)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); } if(pattern==“單曲”){ SetDlgItemText(IDC_ORDER,“順序”); HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP7)); ((CButton *)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); } } 八、顯示時(shí)間和播放進(jìn)度 void CMCIPlayerDlg::OnTimer(UINT nIDEvent){ CString stime;second++;CClientDC dc(this);dc.SetBkColor(RGB(255,255,255));//設(shè)置放置計(jì)數(shù)器區(qū)域的外觀 dc.SetTextColor(RGB(95,180,66)); if(second==60)//設(shè)置鐘表的顯示 {minute++;second=0;} if(minute==60){hour++;minute=0;} if(hour==24){hour=0;} stime.Format(“%02d:%02d:%02d”,hour,minute,second);//顯示時(shí)間 進(jìn)度 dc.TextOut(68,13,stime);m_progress.SetRange(0,cdlen);//使進(jìn)度條的范圍與歌曲時(shí)間一致 UpdateData(false);m_max=cdfrom;//保存歌曲的當(dāng)前位置信息 if(m_max!=cdlen)//如果歌曲結(jié)束,則進(jìn)度條重新置0 {m_progress.SetPos(cdfrom);} else {m_progress.SetPos(0);m_max=0;OnBnClickedOnstop();} DWORD cdf=getinfo(MCI_STATUS_POSITION); cdfrom=MCI_MAKE_MSF(MCI_MSF_MINUTE(cdf),MCI_MSF_SECOND(cdf),MCI_MSF_FRAME(cdf));//獲取當(dāng)前播放文件的信息 UpdateData(false);CDialog::OnTimer(nIDEvent); 九、刪除歌曲 void CMCIPlayerDlg::OnBnClickedDeletemusic()//刪除歌曲 { // TODO: 在此添加控件通知處理程序代碼 if(m_list.GetCurSel()==-1) MessageBox(“請(qǐng)選中要?jiǎng)h除的歌曲”);else { CString na; int i=m_list.GetCurSel(); na=allpath[i]; allpath.erase(allpath.begin()+i); m_list.DeleteString(i); UpdateData(false); string pa=na.GetBuffer(); for(int i=0;i //把地址里面的空格 變?yōu)?*' { if(pa[i]==' ') pa[i]='/'; } list ifstream rin; rin.open(“Mylist.txt”); //int rere; string str[2]; if(rin>>str[0]>>str[1]) while(!rin.eof()) { music mu; mu.name=str[0]; mu.mPath=str[1]; if(mu.mPath!=pa) mus.push_back(mu); rin>>str[0]>>str[1]; } rin.close(); ofstream out(“Mylist.txt”);list out< (*it).mPath < it++;} out.close(); } } 5.2 單元測(cè)試 初始界面: 初始界面由一個(gè)七個(gè)按鈕控件,一個(gè)列表控件,一個(gè)進(jìn)度條控件組成。 當(dāng)點(diǎn)擊添加歌曲按鈕時(shí),彈出文件對(duì)話框 彈出的文件對(duì)話框 6.總結(jié) 自制音樂(lè)播放器是運(yùn)行于VS2010的一款MFC應(yīng)用程序,該軟件通過(guò)運(yùn)用平時(shí)所學(xué)的知識(shí),把文件的創(chuàng)建、讀寫操作,MFC控件的使用,系統(tǒng)的MCI函數(shù)的知識(shí)系統(tǒng)地聯(lián)系在了一起。 播放器通過(guò)文件的讀寫知識(shí),實(shí)現(xiàn)了對(duì)音樂(lè)文件的添加、刪除等操作;通過(guò)系統(tǒng)MCI函數(shù),支持MP3,WAV,WMA等格式的音樂(lè)文件的播放,而在主界面程序中只是調(diào)用這些功能函數(shù),有助于對(duì)軟件進(jìn)行更新操作;另外,該軟件運(yùn)用了MFC的知識(shí),實(shí)現(xiàn)了按鈕,列表框等控件的使用,通過(guò)使用事件處理機(jī)制,實(shí)現(xiàn)了各種按鍵上的動(dòng)作事件。 因此,該播放器能夠更好地練習(xí)本學(xué)期所學(xué)的各種知識(shí),通過(guò)該播放器的開(kāi)發(fā),回顧了文件的各種操作,加深了對(duì)MFC的認(rèn)識(shí),尤其是對(duì)軟件開(kāi)發(fā)的各個(gè)過(guò)程有了較詳細(xì)的了解。 華東交通大學(xué)課程項(xiàng)目 學(xué) 院:軟件學(xué)院 ______ 課程名稱: Android應(yīng)用開(kāi)發(fā)___________ 項(xiàng)目名稱: ___ _音樂(lè)播放器________ 學(xué)生名字: ____ ________ 學(xué)生班級(jí): ____ ______ 授課教師: __________ 授課學(xué)期:2015___至2016______學(xué)年第2學(xué)期 2016年 6月 1 日 目錄 目錄...................................................................................................................................2 1、需求分析.............................................................................................................................3 1.1編寫目的.....................................................................................................................3 1.2項(xiàng)目背景.....................................................................................................................3 1.3目標(biāo).............................................................................................................................4 1.4用戶特點(diǎn).....................................................................................................................4 2、程序設(shè)計(jì).............................................................................................................................5 2.1歡迎界面....................................................................................................................5 2.2主頁(yè)面........................................................................................................................6 2.3播放音軌SeekBar......................................................................................................6 2.4播放調(diào)節(jié)功能實(shí)現(xiàn).....................................................................................................7 2.5歌曲列表顯示界面.....................................................................................................8 2.6專輯列表顯示界面.....................................................................................................8 3、功能設(shè)計(jì).............................................................................................................................9 4、個(gè)人總結(jié)...........................................................................................................................10 1、需求分析 1.1編寫目的 現(xiàn)今社會(huì)生活緊張,而欣賞音樂(lè)史其中最好的舒緩壓力的方式之一,音樂(lè)播放類的軟件數(shù)不勝數(shù),為什么我還要再寫一個(gè)播放器出來(lái)呢?因?yàn)楝F(xiàn)有的音樂(lè)播放器功能實(shí)在是有些多了,多未必不好,但是我總想要一個(gè)干凈純粹的音樂(lè)播放器,只為聽(tīng)歌的播放器,一個(gè)有著一些自己想要的功能的播放器,比如“切歌”,一個(gè)自己熟悉代碼的播放器,甚至,一個(gè)可以自定義功能結(jié)構(gòu)的音樂(lè)播放器。本項(xiàng)目的目的是開(kāi)發(fā)一個(gè)可以播放主流音樂(lè)文件格式的播放器,本設(shè)計(jì)的實(shí)現(xiàn)的這主要功能是播放MP3等音樂(lè)文件,并且能夠控制播放器播放,暫停,停止,上一曲,下一曲。界面簡(jiǎn)單,操作簡(jiǎn)單。 本軟件具備音樂(lè)播放器的播放歌曲、歌曲列表、拖動(dòng)進(jìn)度等基本功能,同時(shí)本播放器界面簡(jiǎn)潔美觀,操作簡(jiǎn)單便捷。 1.2項(xiàng)目背景 隨著智能手機(jī)的普及,用戶需要各種各樣的應(yīng)用軟件,音樂(lè)播放器肯定是必不可少的。隨著計(jì)算機(jī)的廣泛運(yùn)用,手機(jī)市場(chǎng)的迅速發(fā)展,各種音頻資源也在網(wǎng)上廣為流傳,這些資源卡是平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機(jī)播放器也緊跟著發(fā)展起來(lái),但是很多播放器一味最求外觀花俏,功能龐大,對(duì)用戶的手機(jī)造成很多資源浪費(fèi),比如CPU,內(nèi)存等的占用率過(guò)高,在用戶需要多任務(wù)操作時(shí),受到不小的影響,帶來(lái)了許多不便,而對(duì)于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對(duì)以上各種弊端,選擇了開(kāi)發(fā)多語(yǔ)種的音頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶聽(tīng)歌的需求。1.3目標(biāo) 學(xué)習(xí)完本周的應(yīng)用開(kāi)發(fā)課程之后,需要實(shí)現(xiàn)以下目標(biāo): 可以獲取本地音樂(lè) 可以顯示歌曲的進(jìn)度 可以用拖動(dòng)條來(lái)控制歌曲的進(jìn)度 音樂(lè)播放器可以循環(huán)播放音樂(lè); 可以播放下一首歌曲; 有一個(gè)精美的界面; 可以通過(guò)手勢(shì)調(diào)節(jié)音量; 1.4用戶特點(diǎn) 本系統(tǒng)的最終用戶是面向廣大的擁有手機(jī)的用戶。廣大用戶有各個(gè)階級(jí)的,學(xué)生,上班族,家長(zhǎng)。 主要群體是學(xué)生,學(xué)生的特點(diǎn)是要求播放的音頻潮流,音質(zhì)高,功能多種多樣。學(xué)生基本上會(huì)隨身攜帶手機(jī)。 上班族工作壓力比較大,可以適當(dāng)?shù)牟シ乓魳?lè)緩解壓力。 2、程序設(shè)計(jì) 2.1歡迎界面 歡迎界面模塊主要是用于給用戶一種友好的體驗(yàn),讓用戶較容易接受本軟件。進(jìn)入系統(tǒng)后進(jìn)入歡迎界面如圖2.1,運(yùn)用計(jì)時(shí)器兩秒鐘后自動(dòng)跳轉(zhuǎn)到選擇進(jìn)入界面4.2。并且運(yùn)用了組合動(dòng)畫實(shí)現(xiàn)了漸隱的效果。 2.1歡迎界面 2.2主頁(yè)面 主頁(yè)面是本運(yùn)用的核心界面,本界面擁有三個(gè)Fragment,可以運(yùn)用Activity底部的選項(xiàng)卡進(jìn)行切換,三個(gè)Fragment分別為歌曲列表,正在播放以及專輯列表。如圖4.2所示,此時(shí)Activity上顯示的Fragment為正在播放,此頁(yè)面運(yùn)用一張炫酷的網(wǎng)絡(luò)圖片。中間一塊專輯及歌曲顯示的模塊是屬于一個(gè)自定義模塊。底部為音軌模塊。 2.2主頁(yè)面 2.3播放音軌SeekBar 播放器最重要的一部分就是音軌與歌曲進(jìn)度同步的實(shí)現(xiàn)。音軌設(shè)置了兩個(gè)TextView用來(lái)顯示當(dāng)前歌曲播放的進(jìn)度時(shí)間和歌曲的長(zhǎng)度。音軌對(duì)象SeekBar在歌曲剛開(kāi)始播放的時(shí)候調(diào)用方法SeekBar.setMax(),參數(shù)傳入歌曲的長(zhǎng)度。SeekBar.setProgress(1)設(shè)置游標(biāo)的起始進(jìn)度為1。Android的線程的開(kāi)始是通過(guò)Handler類來(lái)進(jìn)行的,Handler類是線程與線程之間通信的橋梁,實(shí)現(xiàn)Runnable接口會(huì)實(shí)現(xiàn)里面的run方法,當(dāng)線程開(kāi)始的時(shí)候,Runnable中的run方法會(huì)向Handler發(fā)一個(gè)Message消息,這樣,Handler類就可以接收到run方法發(fā)送過(guò)來(lái)的不同的消息進(jìn)行不同的代碼處理。這樣就達(dá)到了各線程之間的通信。要啟動(dòng)一個(gè)線程調(diào)用Handler的方法postDelayed(Runnable,1000)表示線程睡眠時(shí)間是1000ms。 讓播放歌曲的線程每隔1000ms,即每1秒對(duì)音軌的TextView重新設(shè)置時(shí)間且讓進(jìn)度條 前進(jìn)1秒的進(jìn)度。對(duì)音軌進(jìn)行刷新。這樣就實(shí)現(xiàn)了歌詞同步功能SeekBar有一個(gè)監(jiān)聽(tīng)器,該監(jiān)聽(tīng)器的作用是一直保持著對(duì)進(jìn)度條的監(jiān)聽(tīng),當(dāng)我們用鼠標(biāo)向SeekBar的各位置進(jìn)行點(diǎn)擊時(shí),它會(huì)自動(dòng)監(jiān)聽(tīng)其位置,進(jìn)行相應(yīng)的位置顯示。這也是進(jìn)度條上的游標(biāo)會(huì)不停的移動(dòng)和歌詞時(shí)間會(huì)不停的變動(dòng)的原因。 2.3播放音軌 2.4播放調(diào)節(jié)功能實(shí)現(xiàn) 各按鈕水平放置,從左到右依次是上一首、播放、下一首功能按鈕。用的是布局中的線性布局LinearLayout,;將其設(shè)置為水平,如圖所示。LinearLayout中依次放置播放/暫停,上一首、下一首按鈕屬性。 歌曲專輯圖片顯示,如果有歌曲圖片,才會(huì)返回,否則為null,2.4控制按鈕 Android的媒體播放原理:Android源程序已經(jīng)為我們封裝好了一個(gè)接口類,叫MediaPlayer。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,通過(guò)如下步驟: 第一步:MediaPlayer.reset();復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。第二步:傳入歌曲數(shù)據(jù)源,這里也是一個(gè)數(shù)據(jù)MediaPlayer.setDataSource(String path);參數(shù)需要傳一個(gè)路徑,該接口類在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。 第三步:準(zhǔn)備播放數(shù)據(jù)源,調(diào)用方法MediaPlayer.Prepare()。 第四步:MediaPlayer.Start();播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序有關(guān),需要用MediaPlayer.Stop()方法讓其停止或MediaPlayer.Start();讓其啟動(dòng)。2.5歌曲列表顯示界面 歌曲列表整體采用了相對(duì)布局(RelativeLayout),中間歌曲列表部分采用的是ListView視圖,以確保有大量歌曲時(shí)能滾動(dòng)式容納所有歌曲,如圖2.5所示,背景采用一張炫酷的圖片,自定義LIstView,左側(cè)為歌曲圖片,中間為歌曲名歌手,最右邊為歌曲時(shí)長(zhǎng)。 歌曲的名稱:MediaStore.Audio.Media.TITL 歌曲的歌手名:MediaStore.Audio.Media.ARTIST 歌曲的總播放時(shí)長(zhǎng):MediaStore.Audio.Media.DURATION 2.5歌曲列表 2.6專輯列表顯示界面 專輯列表采用了網(wǎng)格視圖(GridView)用它能實(shí)現(xiàn)視圖的網(wǎng)格排列,九宮格視圖就是GridVew最典型的使用,GridView是一個(gè)AdapterView,所以需要通過(guò)適配器來(lái)綁定數(shù)據(jù),這里使用BaseAdapter。如圖所示用一張網(wǎng)絡(luò)圖片作為背景,GRidView布局自定義,每個(gè)item分為兩部分,上面為圖片,下邊為歌曲專輯名。 歌曲的專輯名:MediaStore.Audio.Media.ALBUM 2.6專輯列表 3、功能設(shè)計(jì) 該系統(tǒng)具有以下主要功能: 1)播放歌曲,顯示歌曲名字 2)播放上一首歌和下一首歌 3)播放模式可以是循環(huán)的,也以是單曲循環(huán) 4)可以通過(guò)手勢(shì)調(diào)節(jié)歌曲進(jìn)度 5)可以選取歌曲進(jìn)行播放 4、個(gè)人總結(jié) 通過(guò)對(duì)Android手機(jī)平臺(tái)的音樂(lè)播放器的開(kāi)發(fā),使我對(duì)Android系統(tǒng)有了更高層次的了解,Android功能是非常強(qiáng)大的,在這段時(shí)間的學(xué)習(xí)與實(shí)踐中遇到了很多難題,不過(guò)通過(guò)網(wǎng)上專門的Android 社區(qū)有些開(kāi)源的代碼供參考研究,同時(shí)還得到了Android高手的指點(diǎn),總算給完成了,覺(jué)得蠻有意義的。 開(kāi)發(fā)Android音樂(lè)播放器,要抓住開(kāi)發(fā)的核心部分,音樂(lè)播放器大體由播放主界面、播放列表組成。這兩個(gè)個(gè)模塊完成,音樂(lè)播放器就能初具規(guī)模。而其它的功能都是在這兩個(gè)模塊的基礎(chǔ)上去補(bǔ)充添加的,這是功能的確是必不可少的功能,否則就不具備音樂(lè)播放器的基本功能了。 在開(kāi)發(fā)過(guò)程中我學(xué)到了一些經(jīng)驗(yàn):系統(tǒng)分析的好壞將決定著的系統(tǒng)開(kāi)發(fā)成功與否,一份好分析設(shè)計(jì)將是成功開(kāi)發(fā)主要因素??傊?jīng)過(guò)這次的Android系統(tǒng)技術(shù)知識(shí)的學(xué)習(xí)和對(duì)音樂(lè)播放器的構(gòu)思與設(shè)計(jì),使我對(duì)Android系統(tǒng)有了一定的了解,讓我對(duì)Android系統(tǒng)上的開(kāi)發(fā)流程和開(kāi)發(fā)模式有了深入的了解,同時(shí)也對(duì)整個(gè)軟件產(chǎn)品的實(shí)現(xiàn)流程有了一個(gè)深入的了解,這對(duì)我以后從事軟件開(kāi)發(fā)有很大的幫助。 一、綜述本課題國(guó)內(nèi)外研究動(dòng)態(tài),說(shuō)明選題的依據(jù)和意義 1.1課題的背景和意義 隨著科技的進(jìn)步,手機(jī)的功能也不斷的得到豐富,從最早的“大哥大”到現(xiàn)在的商務(wù)PDA手機(jī),智能手機(jī),音樂(lè)手機(jī)等等,功能也從單純的打電話發(fā)展到了發(fā)短信,聽(tīng)歌,上網(wǎng)....手機(jī)和我們生活的聯(lián)系越來(lái)越緊密,手機(jī)的功能也是很多人們關(guān)注的焦點(diǎn)。 目前手機(jī)的音樂(lè)播放功能已經(jīng)是大家比較關(guān)注的一個(gè)部分了,不少在人在購(gòu)買手機(jī)的時(shí)候都會(huì)關(guān)心手機(jī)的音樂(lè)播放的能力,這也足以看出目前大家對(duì)音樂(lè)播放功能的重視,所以一款性能良好的手機(jī)音樂(lè)播放器軟件一定會(huì)受到歡迎。和傳統(tǒng)的音樂(lè)播放器相比,手機(jī)播放音樂(lè)更加的容易攜帶,其他方面也都不輸于傳統(tǒng)音樂(lè)播放器,而且還具有網(wǎng)上聽(tīng)音樂(lè)功能,所以開(kāi)發(fā)一款受歡迎的手機(jī)音樂(lè)播放軟件是具有良好的市場(chǎng)和應(yīng)用前景的。 一款專業(yè)的音樂(lè)播放軟件是手機(jī)中必不可少的要素,幾乎市場(chǎng)上所有的手機(jī)都擁有一個(gè)自帶的音樂(lè)播放軟件,通過(guò)軟件可以對(duì)音樂(lè)欣賞中一些必要的元素進(jìn)行人性化的設(shè)置,同時(shí)在操作的時(shí)候也能得到一定的便利,但是不能滿足用戶的所有要求,所以網(wǎng)上就出現(xiàn)了各種各樣的手機(jī)音樂(lè)播放軟件,來(lái)滿足不同用戶的不同要求。不同手機(jī)平臺(tái)的手機(jī),所支持的音樂(lè)播放軟件也是各不相同,而現(xiàn)在最流行的手機(jī)平臺(tái)就是google的android手機(jī)平臺(tái),所以本課題就致力于開(kāi)發(fā)出一款基于android手機(jī)平臺(tái)的音樂(lè)播放器,來(lái)滿足用戶的使用需求。 1.2課題的研究歷史和發(fā)展現(xiàn)狀 首先簡(jiǎn)單的介紹一下google的android。Android原本是一家獨(dú)立的手機(jī)操作系統(tǒng)公司,2005年被Googel收購(gòu)。2007年11月,Googel宣布推出基于Linux的Android開(kāi)放式手機(jī)操作系統(tǒng),沿襲至今,已發(fā)展到2.2版本(3.0尚在研)。此系統(tǒng)的“開(kāi)放”尤其體現(xiàn)在任何手機(jī)制造商均可無(wú)需支付專利費(fèi)即可將此系統(tǒng)運(yùn)用在自己的手機(jī) Google的以Linux為內(nèi)核的Android移動(dòng)手機(jī)平臺(tái)從誕生之日起短時(shí)間內(nèi)便在世界范圍里獲得了廣泛的關(guān)注。最近的報(bào)告顯示在中國(guó),一個(gè)擁有最大的人口,擁有最多的手機(jī)用戶,擁有巨大的增長(zhǎng)潛力的國(guó)家,這個(gè)系統(tǒng)的占有率沿著一個(gè)倒拋物線的增長(zhǎng)曲率成為手機(jī)操作系統(tǒng)中的霸主 同時(shí)國(guó)外的Android市場(chǎng)也正在如日中天的擴(kuò)展,據(jù)市場(chǎng)調(diào)研機(jī)構(gòu)NPDGroup最近發(fā)布的一份報(bào)告稱,今年第一季度基于Android操作系統(tǒng)的智能手機(jī)在美國(guó)智能手機(jī)總銷量中所占比例達(dá)到28%,首度超過(guò)蘋果iPhone,蘋果iPhone約為21%,相信在不久的將來(lái)會(huì)有更多的用戶選擇Android系統(tǒng)的手機(jī)或是無(wú)線終端設(shè)備。 根據(jù)美國(guó)移動(dòng)廣告商AdMob的統(tǒng)計(jì),iPhoneOS在美國(guó)本土的網(wǎng)絡(luò)流量占了美國(guó)本土全部移動(dòng)互聯(lián)網(wǎng)流量的39%,而Android系統(tǒng)首次超越了它,達(dá)到了46%。不過(guò)要放在世界范圍內(nèi)來(lái)看,iPhone OS仍占了46%,而Android只占了25%,還是排第二。不過(guò)仍能說(shuō)明 Android的來(lái)勢(shì)洶洶,能對(duì)蘋果造成威脅的果然只有Google。 國(guó)內(nèi)目前中國(guó)移動(dòng)、Moto、LG、三星、華為、MTK等正在積極籌備Android產(chǎn)品和相關(guān)的電子市場(chǎng),中國(guó)移動(dòng)率先推出了基于Android深度定制的Ophone系統(tǒng)和Mobile Marke,聯(lián)想基于Android的樂(lè)phone手機(jī)也于5月17日正式上市,國(guó)內(nèi)其他電子廠商也紛紛表示到下半年會(huì)推出大量的基于Android的手機(jī)和MID產(chǎn)品,Moto更是放棄了原有的所有手機(jī)操作系統(tǒng),孤注一擲,計(jì)劃今年國(guó)內(nèi)市場(chǎng)有近20款A(yù)ndroid產(chǎn)品面世。3G時(shí)代的到來(lái),給中國(guó)企業(yè)追趕國(guó)際廠商帶來(lái)了騰飛的機(jī)會(huì),據(jù)預(yù)測(cè)亞太區(qū)域?qū)?lái)會(huì)占據(jù)全球Android市場(chǎng)中最大的收入份額。 Android的代號(hào)序列會(huì)按甜點(diǎn)名字中首個(gè)英文字母(C、D、E、F)的排列順序,到目前為止android系統(tǒng)已經(jīng)有多個(gè)幫本: Android1.1發(fā)布于2009年2月主要特性: 鬧鐘,API示例,瀏覽器,攝像頭,計(jì)算器,聯(lián)系人,開(kāi)發(fā)工具包,撥號(hào)應(yīng)用,電子郵件,地圖,信息服務(wù),音樂(lè),圖片,設(shè)置。2009年4月30日,官方1.5版本(Cupcake)的Android發(fā)布。主要的更新如下: 拍攝/回放視頻,并支持上傳到y(tǒng)outube,支持立體聲藍(lán)牙耳機(jī),同時(shí)改善自動(dòng)配對(duì)性能,最新的采用WebKit技術(shù)的瀏覽器,支持拷貝/粘帖和頁(yè)面中搜索,gPS性能大大提高, 屏幕虛擬鍵盤,主屏幕增加音樂(lè)播放器和相框widgets,應(yīng)用程序自動(dòng)隨著手機(jī)旋轉(zhuǎn) 短信,Gmail,日歷,瀏覽器的用戶界面大幅改善,比如說(shuō)Gmail現(xiàn)在可以批量刪除郵件了 ,相機(jī)啟動(dòng)速度加快,拍攝圖片可以直接上傳到picasa, 來(lái)電照片顯示。2009年9月15日, 1.6(Donut)版本SDK發(fā)布。主要的更新如下:完全重新設(shè)計(jì)的Android Market,手勢(shì)支持,支持CDMA網(wǎng)絡(luò),文字轉(zhuǎn)語(yǔ)音系統(tǒng)(TXT-2-speech),快速搜索框,全新的拍照界面,應(yīng)用程序耗電查看,支持VPN,支持更多的屏幕分辨率,支持OpenCore2媒體引擎,新增面向視覺(jué)或聽(tīng)覺(jué)困難人群的易用性插件 2009年10月26日, 2.0(Eclair)版本SDK發(fā)布。主要的更新如下:優(yōu)化硬件速度,“Car Home”程序,支持更多的屏幕分辨率,重整界面,新的瀏覽器的用戶界面和支持HTML5,新的聯(lián)系人名單,更好的白色/黑色背景比率,改進(jìn)Google Maps 3.1.2,支持Microsoft Exchange,支持內(nèi)置相機(jī)閃光燈,數(shù)字變焦,改進(jìn)的虛擬鍵盤,藍(lán)牙2.1 Android的代號(hào)序列會(huì)按甜點(diǎn)名字中首個(gè)英文字母(C、D、E、F)的排列順序。下一個(gè)版本的Android將會(huì)命名為Froyo(凍酸奶,基于Linux Kernel 2.6.32)。Froyo 之后的版本的Android將會(huì)命名為Gingerbread(姜餅,基于Linux Kernel 2.6.33/34)。 二、研究的基本內(nèi)容,擬解決的主要問(wèn)題: 2.1課題研究的主要內(nèi)容 本文的主要研究?jī)?nèi)容包括以下幾個(gè)方面: ? 查找相關(guān)書籍與文獻(xiàn),了解Android的構(gòu)架并搭建Android平臺(tái)。? 查找相關(guān)資料,現(xiàn)階段基于Android平臺(tái)手機(jī)音樂(lè)播放器發(fā)展現(xiàn)狀以及相關(guān)功能。 ? 在上述基礎(chǔ)上,提出所要做的手機(jī)播放器的相關(guān)功能如:播放本地歌曲,設(shè)置,播放列表,播放記錄等。 ? 在Android平臺(tái)上完成該課題的軟件并進(jìn)行相應(yīng)的軟件測(cè)試。 2.2課題研究的拓展 傳統(tǒng)的音樂(lè)播放器受限于手機(jī)存儲(chǔ)和計(jì)算處理能力,在音樂(lè)收集、存儲(chǔ)和管理方面一直存在瓶頸,新一代音樂(lè)播放器應(yīng)該進(jìn)一步拓展了應(yīng)用空間,更迎合用戶的使用習(xí)慣,將音樂(lè)搜索、收藏、管理等全部交由網(wǎng)絡(luò)來(lái)完成,為用戶提供的音樂(lè)資源更為龐大,搜索更為精準(zhǔn),管理和收藏更為簡(jiǎn)便的服務(wù)。 1.智能化超級(jí)搜索 網(wǎng)絡(luò)音樂(lè)播放器的特點(diǎn)就是集成了音樂(lè)搜索服務(wù),將用戶從繁雜的網(wǎng)頁(yè)搜索解脫出來(lái),提供更為專業(yè)和準(zhǔn)確的音樂(lè)搜索服務(wù)。新一代音樂(lè)播放器提供的搜索結(jié)果不是直接抓取的網(wǎng)頁(yè)搜索鏈接,而是先由服務(wù)器進(jìn)行實(shí)時(shí)采集和篩選,然后保存在數(shù)據(jù)庫(kù)由用戶進(jìn)行調(diào)用,以此來(lái)保證搜索結(jié)果的準(zhǔn)確性、唯一性和有效性,將搜索結(jié)果的驗(yàn)證和判斷交由服務(wù)器來(lái)未完成,避免出現(xiàn)盲搜會(huì)出現(xiàn)的搜索結(jié)果重復(fù)和無(wú)效的情況發(fā)生,從而大大提高用戶的搜索效率。 2.智能化口味分析 在網(wǎng)絡(luò)音樂(lè)時(shí)代海量的音樂(lè)信息已經(jīng)改變了大眾的聽(tīng)歌習(xí)慣,一天聽(tīng)個(gè)幾十上百首新歌都不是問(wèn)題。無(wú)論是音樂(lè)排行榜、媒體推薦還是口碑宣傳,都屬于小范圍的傳播途徑,這些傳統(tǒng)的歌曲信息獲取方式已經(jīng)無(wú)法滿足大眾大量獲取新鮮歌曲的需要。新一代音樂(lè)播放器應(yīng)該實(shí)時(shí)采集用戶的聽(tīng)歌習(xí)慣,實(shí)時(shí)分析出用戶的喜好,在短時(shí)間內(nèi)即可將大量滿足用戶喜好的歌曲推薦出來(lái),用戶無(wú)須人工操作即可不斷聽(tīng)到新鮮的好歌,常聽(tīng)常新 3.雖然網(wǎng)絡(luò)音樂(lè)播放已經(jīng)成為主流,但很多用戶仍習(xí)慣于在本地收藏和管理音樂(lè)文件。本地音樂(lè)管理所遇到的主要難題就是音樂(lè)信息混亂,絕大多數(shù)從網(wǎng)上下載的音樂(lè)文件名都是簡(jiǎn)化的英文或數(shù)字,讓人無(wú)法辨識(shí)出正確的歌曲名。日積月累這些音樂(lè)文件就會(huì)給日常管理帶來(lái)極大麻煩。識(shí)別服務(wù)則可以完美解決這一問(wèn)題,它可以自動(dòng)采集音樂(lè)旋律上傳至服務(wù)器,憑借服務(wù)器系統(tǒng)強(qiáng)大的識(shí)別能力,通過(guò)音樂(lè)旋律即可準(zhǔn)確誤別出正確的音樂(lè)信息,然后再自動(dòng)對(duì)本地音樂(lè)文件進(jìn)行信息更正,將音樂(lè)文件重命為正確的中文或英文歌曲名等。歌曲數(shù)量再多都能在極短的時(shí)間內(nèi)批量完成誤別操作,識(shí)別服務(wù)可以說(shuō)是現(xiàn)在本地音樂(lè)管理的不可或缺的幫手 上面所說(shuō)的幾種功能都是下一代音樂(lè)播放器應(yīng)該具有的功能,只有音樂(lè)播放器客戶端軟件的不斷創(chuàng)新發(fā)展,未來(lái)人們欣賞音樂(lè)的體驗(yàn)才會(huì)更加精彩。 三、研究步驟、方法及措施: 3.1研究步驟 研究步驟主要分為6個(gè)步驟,包括理論準(zhǔn)備、材料分析、需求分析、、編碼實(shí)現(xiàn)、系統(tǒng)測(cè)試、完善軟件系統(tǒng)。每個(gè)步驟的大致工作如下: 3.1.1理論準(zhǔn)備 此步驟是整個(gè)研究過(guò)程的基礎(chǔ),也是今后研究展開(kāi)的基石,主要是翻閱相關(guān)資料,查詢Android平臺(tái)的歷史和發(fā)展現(xiàn)狀,在理論的基礎(chǔ)上為接下來(lái)的步驟做準(zhǔn)備。3.1.2材料分析 對(duì)現(xiàn)行的Android平臺(tái)手機(jī)播放器進(jìn)行分析并提出相應(yīng)功能。 3.1.3需求分析 在步驟1和2的基礎(chǔ)上對(duì)該課題進(jìn)行需求分析。 3.1.4編碼實(shí)現(xiàn) 此過(guò)程主要是針對(duì)步驟2和3的編碼實(shí)現(xiàn),完成上文描述的功能需求進(jìn)行必要的編碼。當(dāng)然這里是在Android平臺(tái)上實(shí)現(xiàn)的。3.1.5系統(tǒng)測(cè)試 對(duì)基于Android平臺(tái)手機(jī)播放器進(jìn)行基本的軟件測(cè)試,查找并修改常見(jiàn)的BUG。3.1.6后期完善 此步驟主要是對(duì)上述軟件的界面等外設(shè)進(jìn)行修改,以達(dá)到操作方便,友好美觀的效果。3.2研究方法和措施 根據(jù)現(xiàn)有的音樂(lè)播放器,分析用戶喜好,優(yōu)化功能,邀請(qǐng)不同的用戶提出建議,不斷的進(jìn)行完善。 四、研究工作進(jìn)度: 序號(hào) 1 2 3 4 5 6 7 8 時(shí)間 2010.5.11-2010.6.11 2010.6.12-2010.6.30 2010.7.1-2010.7.31 2010.8.1-2010.8.31 2010.9.1-2010.9.30 2010.10.1-2010.10.9 2010.10.9-2010.10.28 內(nèi)容 熟悉課題要求與任務(wù) 查閱相關(guān)文獻(xiàn)資料 熟悉Android系統(tǒng) 構(gòu)建Android平臺(tái)以及熟悉相關(guān)操作 需求分析 完成開(kāi)題報(bào)告 軟件編程 測(cè)試軟件 完善軟件,準(zhǔn)備論文寫作 修改論文,定稿,準(zhǔn)備答辯,材料歸檔 2010.10.28-2010.11.9 2010.11.16-2010.11.10 2010.11.29-2010.12.1 五、主要參考文獻(xiàn): [1] ophone應(yīng)用開(kāi)發(fā)權(quán)威指南 胡幸征著;—北京:電子工業(yè)出版社,2010.1 [2] 深入淺出Google Android/E2Ecloud 工作室編著。—北京:人民郵電出版社,2009.8 [3] Google Android開(kāi)發(fā)入門與實(shí)戰(zhàn)/靳巖,姚尚朗編著。—北京:人民郵電出版社,2009.7 [4] Google Android SDK開(kāi)發(fā)范例大全/余志龍等編著;王世江改編。—北京:人民郵電出版社,2009.7(2009.8重印)[5] Android應(yīng)用框架原理與程序設(shè)計(jì)36技/高煥堂著; 六、指導(dǎo)教師審核意見(jiàn): 指導(dǎo)教師簽字: 年 月 日 七、系、室、部(研究所)評(píng)議意見(jiàn): 1.適合本專業(yè)的畢業(yè)設(shè)計(jì)課題; 2.不適合本專業(yè)的畢業(yè)設(shè)計(jì)課題; 3.其他 系、室、部(研究所)主任簽字: 八、開(kāi)題小組評(píng)審意見(jiàn): 開(kāi)題小組組長(zhǎng)簽字: 2009 年 9 月 27 日 九、系領(lǐng)導(dǎo)(答辯委員會(huì))審核意見(jiàn): 1.通過(guò); 2.完善后通過(guò); 3.未通過(guò) 系領(lǐng)導(dǎo)(答辯委員會(huì))簽字: 2009 年 9 月 28 日 音樂(lè)播放器作文 我有一臺(tái)音樂(lè)播放器,我非常喜歡它,給它取名為小白。這是我的一位好朋友送給我的。小白穿著一身漂亮的“白襯衫”還配著一條黑色的漂亮“短裙子”,再配上優(yōu)美的音樂(lè),簡(jiǎn)直就是個(gè)小姑娘在翩翩起舞。小白是一個(gè)不太規(guī)則的長(zhǎng)方體,其中,它長(zhǎng)7厘米,寬4厘米,厚一厘米左右。小白身上有六個(gè)按鈕,它們分別是:開(kāi)關(guān)按鈕、確定按鈕、待機(jī)按鈕、上翻按鈕、播放按鈕以及下翻按鈕,在播放按鈕正上方有一個(gè)小正方形,上面還有許多小洞洞,我想那應(yīng)該是發(fā)音的吧!小白和一枚雞蛋比起來(lái),可輕多了,它可以帶在身上,不像那些錄音機(jī)這么大,這么重。 小白不但外形漂亮,而且我和它在生活中還是一對(duì)兒形影不離的好朋友呢!每當(dāng)我孤獨(dú)、寂寞的時(shí)候,小白總是陪伴我;每當(dāng)我高興時(shí),我不僅和家人分享快樂(lè),我還和小白一起分享快樂(lè)。小白也需要我,有的時(shí)候,小白沒(méi)電了,它都會(huì)響起“嘟嘟”的警告聲,似乎在說(shuō)“小主人,我的肚子餓了,快給我吃飯?!庇械臅r(shí)候,小白的“裙子”臟了,我都會(huì)去拿點(diǎn)兒紙巾,擦去“裙子”的臟痕,它變得非常漂亮,我真是越來(lái)越喜歡它了。 小白還有許多的功能呢!里面有一個(gè)音樂(lè)播放器,我偶爾會(huì)下載一些歌曲,仿佛給小白增添了幾件新衣裳。考試之前,我總要聽(tīng)上一兩首優(yōu)美的歌曲,放松一下緊張的心情。小白里面還有電影播放,我無(wú)聊時(shí),我都看一些有趣的電影,這樣就可以解悶了。里面還有錄音,我每天都會(huì)錄音,長(zhǎng)大后,我就可以細(xì)細(xì)的回味小時(shí)候的趣事了。小白里面還有一個(gè)電子書,有許多書籍我都可以在電子書里找呢!小白真是無(wú)所不能呀!我愛(ài)你,小白! 音樂(lè)播放器設(shè)計(jì)文檔 在 android平臺(tái)上開(kāi)發(fā)音樂(lè)播放器是一個(gè)全新的挑戰(zhàn)。這次通過(guò) android QQ music 項(xiàng)目實(shí)戰(zhàn),總結(jié)出一些方法和經(jīng)驗(yàn),希望能夠?qū)σ苿?dòng)平臺(tái)的設(shè)計(jì)尤其是多媒體這塊提供一些有價(jià)值的參考和幫助。1.1 項(xiàng)目背景 當(dāng)今社會(huì)的生活節(jié)奏越來(lái)越快,人們對(duì)手機(jī)的要求也越來(lái)越高,由于手機(jī)市場(chǎng)發(fā)展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場(chǎng)上主要有三個(gè)手機(jī)操作系統(tǒng),Windows mobile,symbian,以及谷歌的Android操作系統(tǒng),其中占有開(kāi)放源代碼優(yōu)勢(shì)的Android系統(tǒng)有最大的發(fā)展前景。那么能否在手機(jī)上擁有自己編寫的個(gè)性音樂(lè)播放器呢?能的,谷歌Android系統(tǒng)就能做到。本文的音樂(lè)播放器就是基于谷歌Android手機(jī)平臺(tái)的播放器。 Android:是谷歌于2007年公布的開(kāi)放式源代碼手機(jī)系統(tǒng),它的開(kāi)放性就優(yōu)于其它封閉式的手機(jī)系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機(jī)系統(tǒng)中的所有功能重新編寫。這使得越來(lái)越多的人關(guān)注這個(gè)操作系統(tǒng)。本次作品音樂(lè)播放器就是基于Android平臺(tái)的。 隨著計(jì)算機(jī)的廣泛運(yùn)用,手機(jī)市場(chǎng)的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機(jī)播放器也緊跟著發(fā)展起來(lái),但是很多播放器一味追求外觀花哨,功能龐大,對(duì)用戶的手機(jī)造成了很多資源浪費(fèi),比如CPU,內(nèi)存等的占用率過(guò)高,在用戶需要多任務(wù)操作時(shí),受到了不小的影響,帶來(lái)了許多不便,而對(duì)于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對(duì)以上各種弊端,選擇了開(kāi)發(fā)多語(yǔ)種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶(如聽(tīng)歌,看電影)的需求,除了能播放常見(jiàn)格式的語(yǔ)音視頻文件,高級(jí)功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語(yǔ)言界面。要研究了各種市場(chǎng)上流行的手機(jī)播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點(diǎn)以及各種播放器本身存在的缺陷和特點(diǎn),編寫出功能實(shí)用,使用方便快捷的播放器。目前已經(jīng)實(shí)現(xiàn)的功能有能播放常見(jiàn)音頻文件的功能,如MP3,WAV,等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進(jìn),快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機(jī)播放等模式。 一、引入產(chǎn)品定義描述(Application Definition Statement) 相信大多數(shù)設(shè)計(jì)師都有過(guò)這樣的經(jīng)歷:在產(chǎn)品設(shè)計(jì)過(guò)程中,設(shè)計(jì)師和產(chǎn)品經(jīng)理不斷 pk,各抒己見(jiàn),甚至鬧得臉紅 耳赤、拍桌翻臉,最后項(xiàng)目總結(jié)時(shí)又因達(dá)不到“理想目標(biāo)“雙方深深自責(zé),紛紛表示”缺少交流“。彼此不斷 pk,交流 絕對(duì)足夠,只是我們?nèi)鄙儆行贤ǖ墓ぞ?。如果能在早期建立共識(shí),口水仗爆發(fā)的頻率就會(huì)越少,真正花在產(chǎn)品上 的時(shí)間也就越多。這一次,我們決定更早地切入,在最開(kāi)始的產(chǎn)品規(guī)劃層面,引入“產(chǎn)品定義描述”(關(guān)于 ap-plicationdefinition statement,請(qǐng)參考《iPhone Human Interface Guidelines》)。 注意: ADS 的定義也是一個(gè)迭代的過(guò)程,外部環(huán)境的變化、后續(xù)過(guò)程產(chǎn)生的問(wèn)題,都可能對(duì)原 ADS 產(chǎn)生影響,需 要重新評(píng)估、修正,甚至否定再來(lái),但無(wú)論如何,必須確保整個(gè)團(tuán)隊(duì)對(duì) ADS 有一個(gè)共同的認(rèn)識(shí)。 二、細(xì)分場(chǎng)景,從場(chǎng)景推導(dǎo)需求,從需求推導(dǎo)設(shè)計(jì) 從源頭的戰(zhàn)略層面上建立了統(tǒng)一的認(rèn)知,我們接下來(lái)開(kāi)展的工作就有根據(jù)了。既然核心是解決“移動(dòng)場(chǎng)景聽(tīng)歌“的問(wèn) 題,我們必須首先弄清楚什么是”移動(dòng)場(chǎng)景“?移動(dòng)環(huán)境和 PC 環(huán)境差異甚大,碎片時(shí)間的使用更為突出。用戶一天 是怎么活動(dòng)的呢?每次拿起手機(jī)聽(tīng)音樂(lè)都是什么時(shí)間?上班的公車上、走路、晚上睡覺(jué)前?在這些點(diǎn)上用戶都會(huì)做 些什么?簡(jiǎn)單的腦暴可以羅列各個(gè)可能的使用場(chǎng)景,但還比較粗糙。場(chǎng)景的構(gòu)想需要建立在高度的認(rèn)知上,這時(shí)候 用研的切入顯得相當(dāng)關(guān)鍵,用戶特征、喜好、使用習(xí)慣…對(duì)用戶越了解,場(chǎng)景就越能貼近真實(shí)、越能發(fā)現(xiàn)更多的細(xì) 節(jié)。這些都為后續(xù)的設(shè)計(jì)決策提供了有力的依據(jù) 客觀構(gòu)建的場(chǎng)景有很多有意思的發(fā)現(xiàn),比如用戶在播放本地歌曲時(shí),挑選第一首歌往往比較猶豫,但對(duì)后續(xù)播放的 歌曲卻不太在意。從場(chǎng)景仔細(xì)分析和推敲,很容易就可以明確產(chǎn)品的需求,對(duì)應(yīng)上述的發(fā)現(xiàn),推導(dǎo)如下需求:為用 戶提供“馬上聽(tīng)歌”按鈕引導(dǎo)用戶直接聽(tīng)歌。需求的推導(dǎo)因?yàn)橛杏醚械那腥耄苊饬颂嗟膫€(gè)人情感因素。 三、敏捷原型設(shè)計(jì),適應(yīng)與借鑒并行 用研的輸出以及前面的 ADS 定義為功能篩選和設(shè)計(jì)取舍提供了強(qiáng)有力的決策依據(jù)。在需求框架大致決定的時(shí)候,我們接下來(lái)就進(jìn)行方案設(shè)計(jì)了。正所謂“一圖勝千言”,原型有時(shí)候會(huì)比面面俱到的文檔更直觀。不同的階段,我們 會(huì)進(jìn)行不同精度的原型設(shè)計(jì): 在原型迭代的過(guò)程中,需要注意 android平臺(tái)的 UI 尷尬。與其他平臺(tái)(iPhone、symbian、windows mobile)不同,an-droid 更加開(kāi)放,不同的廠商不同的 ROM 版本界面規(guī)范并不統(tǒng)一。如果簡(jiǎn)單地將其他平臺(tái)的設(shè)計(jì)規(guī)范移植過(guò)來(lái),產(chǎn)品體驗(yàn)可能會(huì)和整個(gè)系統(tǒng)“格格不入”。借鑒了 android平臺(tái)的一些優(yōu)秀 app(比如 twitter 和 new york times)的 設(shè)計(jì)策略,我們決定“適應(yīng)與借鑒并行“:在大的基礎(chǔ)體驗(yàn)上,保證與系統(tǒng)體驗(yàn)一致,尊重平臺(tái)使用習(xí)慣;在細(xì)節(jié)體 驗(yàn)上,盡量克服系統(tǒng)的操作困難,保證局部體驗(yàn)的流暢。 四、視覺(jué)方案 在整個(gè)設(shè)計(jì)過(guò)程中,我們嘗試了多套風(fēng)格方案,比如“夢(mèng)幻光影”、“清爽夏日”、“木質(zhì)桌面”“藍(lán)色海洋”等等,由于 beta1 開(kāi)發(fā)時(shí)間有限,最后選擇了偏深綠色主色調(diào)的“夢(mèng)幻光影”作為默認(rèn)皮膚,這里奉上其他未曾謀面的方案,供 參考。 4.1 主要界面模塊劃分 視覺(jué)方案的第一步是對(duì)界面各模塊和控件進(jìn)行作出符合審美原理和需要的的合理劃分和尺寸設(shè)定,這里重點(diǎn)會(huì)落在 正在播放界面和歌曲列表界面兩塊,雖然兩個(gè)界面功能和承載的信息都不相同,但是在造作上兩個(gè)界面跳轉(zhuǎn)和切換 是緊密關(guān)聯(lián)的,在各模塊劃分和空間比例上兩個(gè)需要統(tǒng)籌安排,一方面考慮上下同樣尺寸的“標(biāo)題行”和底部“控制行 / tab 行”一方面要考慮歌曲列表界面的列表選擇合適的行高和行數(shù)。在保證每一行歌曲信息能夠有足夠的空間顯示 整個(gè)界 從上圖區(qū)域劃分和比例可以看出,播放器界面,封面/歌手圖片的中心點(diǎn)在整個(gè)界面的高度是 296,相對(duì)于面的高 480,這一比例基本是處在 0.618:1 的黃金分隔點(diǎn)上。4.2 正在播放界面 用戶使用音樂(lè)播放器,最大的關(guān)注點(diǎn)一般會(huì)落在正在播放/播放器界面上,這塊在視覺(jué)上是整個(gè)產(chǎn)品的核心區(qū)域,在很大程度上代表了整款軟件的品質(zhì)、品位和風(fēng)格信息表達(dá)。而專輯封面/歌手頭像又是正在播放界面的視覺(jué)中心,因此這塊在設(shè)計(jì)上花了比較重的筆墨,用細(xì)膩的光照效果與晶瑩剔透的質(zhì)感精心營(yíng)造了一種符合我們 QQ 音樂(lè)在手 機(jī)移動(dòng)操作平臺(tái)上的氣質(zhì)的效果。 4.3 系統(tǒng)菜單 icon 菜單選項(xiàng) icon 是另外一個(gè)視覺(jué)信息傳達(dá)比較重要的地方,對(duì)整體風(fēng)格的形成起著重要作用,這里做了兩種效果的 嘗試,一種 A 方案:是空心邊框形式,看起來(lái)彈出菜單很輕盈,一屏 6 個(gè)選項(xiàng)帶文字不會(huì)覺(jué)得擁擠,缺點(diǎn)是單個(gè) 圖標(biāo)的輪廓有的地方不連貫,有可能會(huì)造成辨識(shí)度降低。另外最后選用的方案 B 是實(shí)心剪影的形式,這種表現(xiàn)方式 整個(gè) icon 看起來(lái)很整體,比較飽滿,識(shí)別度較高,不過(guò)如果一屏圖標(biāo)過(guò)多的話可能會(huì)稍有擁擠的感覺(jué),但如果以 縮小的方式處理,對(duì)于手指觸摸操作來(lái)說(shuō)是不合理的,這里 icon 作了圓角處理和鏤空實(shí)心均衡化處理,能在視覺(jué) 感受上弱化一下可能會(huì)產(chǎn)生的擁擠感。 4.4 出現(xiàn)“水波紋”的問(wèn)題 色彩顯示效果上 Android 系統(tǒng)的手機(jī)由于硬件和技術(shù)上的限制和問(wèn)題,會(huì)在某些情況下產(chǎn)生令人抓狂的水波紋問(wèn)題,在嘗試的過(guò)程中大致總結(jié)了容易造成水波紋的漸變使用,如上圖左邊兩個(gè)圖塊:如果使用規(guī)則的徑向漸變,程序貼 圖后極容易出現(xiàn)水波紋,另一種情況是如右邊的兩圖塊:漸變色差值過(guò)小,就是說(shuō)漸變特別的細(xì)膩不顯著的話也很 容易在切圖程序貼圖后出現(xiàn)明顯的水波紋。所以后面在配色和設(shè)計(jì)過(guò)程中可以據(jù)此避免盡量這樣的情況出現(xiàn)。 4.5 最終選用方案: 五、后記 (1)通過(guò)對(duì)Android手機(jī)平臺(tái)的音樂(lè)播放器軟件的開(kāi)發(fā),使我對(duì)Android音樂(lè)播放器系統(tǒng)的整體設(shè)計(jì)有一個(gè)深入的了解,對(duì)整個(gè)流程也會(huì)有一個(gè)清晰的認(rèn)識(shí)。開(kāi)發(fā)Android音樂(lè)播放器,要抓住開(kāi)發(fā)的核心部分,音樂(lè)播放器大體由播放主界面、播放列表、菜單、播放設(shè)置、文件瀏覽、歌曲搜索六大核心組成,只要掌握了這六部分的開(kāi)發(fā),音樂(lè)播放器就能初具規(guī)模。而其它的功能都是在這六個(gè)功能的基礎(chǔ)上去補(bǔ)充添加的,但是這是功能的確是必不可少的功能,否則就不能算是音樂(lè)播放器了。 (2)音樂(lè)播放器系統(tǒng)實(shí)現(xiàn)了播放器的基本功能:播放,暫停、停止、上/下一首、音量調(diào)節(jié)、歌詞顯示、播放模式、歌曲搜索、文件瀏覽器、播放列表查詢等功能。運(yùn)用的系統(tǒng)平臺(tái)是現(xiàn)今最熱門的Android系統(tǒng),是一個(gè)開(kāi)源的基于Linux系統(tǒng)的手機(jī)平臺(tái)。是以Java語(yǔ)言編寫+SQLite數(shù)據(jù)庫(kù)支持+SharePreference配置文件的組合方式進(jìn)行數(shù)據(jù)管理。實(shí)現(xiàn)了音樂(lè)播放器的系統(tǒng)編程。 (3)本次程序設(shè)計(jì),對(duì)播放器的系統(tǒng)結(jié)構(gòu)框架做了精心的構(gòu)思與設(shè)計(jì),采用主要開(kāi)發(fā)工具是Eclipse3.5+Java語(yǔ)言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面結(jié)合,才使整個(gè)音樂(lè)播放器系統(tǒng)得以實(shí)現(xiàn)。 (4)總之,經(jīng)過(guò)幾個(gè)月的Android系統(tǒng)技術(shù)知識(shí)的學(xué)習(xí)和對(duì)音樂(lè)播放器的構(gòu)思與設(shè)計(jì),使我對(duì)Android系統(tǒng)有了一定的了解,讓我對(duì)Android系統(tǒng)上的開(kāi)發(fā)流程和開(kāi)發(fā)模式有了深入的了解,這對(duì)我以后的Android項(xiàng)目開(kāi)發(fā)有很大的幫助。參 考 書 籍 《Java API文檔》 《Android 系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解》 作者:韓超,梁泉 著 《Android SDK開(kāi)發(fā)范例大全》 作者:郭宏志 著 《Android Google API開(kāi)發(fā)文檔》 作者:Google官方 《Android Application Development》 出版社: O’Reilly 《Java編程思想think of java》 作者:Bruce Eckel 《手機(jī)軟件研發(fā)培訓(xùn)教材》 出版社:極地星空3G通信學(xué)院 參 考 文 獻(xiàn) [1] 張孝祥著. java就業(yè)培訓(xùn)教程[M].北京:清華大學(xué)出版社,2007.[2] 余志龍編著.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2009-7-1.[3] E2ECloud工作室著.深入淺出Google Android[M].北京:人民郵電出版社,2009-08-1.[4] 靳巖 姚尚朗著.Google Android開(kāi)發(fā)入門與實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2009-07-01.[5] 高昂著.支持動(dòng)態(tài)語(yǔ)言的Android平臺(tái)[M].北京:人民郵電出版社,2009-05-07.[6] eoe.Android開(kāi)發(fā)社區(qū).http://. 2010-04-10.[9] 高煥堂編.Android 應(yīng)用框架原理與程式設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2008-10-03 [10] 楊豐盛主編.Android 應(yīng)用開(kāi)發(fā)揭秘[M].西安:機(jī)械工業(yè)出版社,2010-01-25 [11] XML解析方式DOM、SAX之比較.http://wghjay.javaeye.com/blog/519955.2009-11-18.名詞術(shù)語(yǔ): JDK Java Development Kit Android 基于Linux操作系統(tǒng)的手機(jī)平臺(tái) SDK Android Software Development Kit ADT Android Development Tool Anroid開(kāi)發(fā)工具 IDE Intergrate Design Environment 集成開(kāi)發(fā)環(huán)境 ADB Android Debug Bridge 調(diào)試橋 AVD Android Virtual Devices Android虛擬設(shè)備 DDMS Dalvik Debug Monitor Service 調(diào)試監(jiān)視服務(wù) AIDL Android Interface Description Language Android接口描述語(yǔ)言 xmlns XML NamePace XML命名空間第二篇:音樂(lè)播放器項(xiàng)目報(bào)告
第三篇:音樂(lè)播放器報(bào)告
第四篇:音樂(lè)播放器作文
第五篇:電信-音樂(lè)播放器