音樂播放器開發(fā)文檔_第1頁
音樂播放器開發(fā)文檔_第2頁
音樂播放器開發(fā)文檔_第3頁
音樂播放器開發(fā)文檔_第4頁
音樂播放器開發(fā)文檔_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、音樂播放器開發(fā)計劃書 組長:薛輝 組員:杜學鑫 袁茁 劉一峰 楊碩 李明哲Android音樂播放器 問題定義本軟件是為了用戶智能手機Android而開發(fā)的一套智能軟件,提供在線下載音樂,在線播放音樂,讀取SD卡音樂文件等功能。一、 可行性研究社會可行性分析:3G技術飛速發(fā)展,為滿足人們對音樂的追求,音樂播放器層出不從,然而市面上大多音樂播發(fā)器軟件都太難操作,或者音質不好,不能給用戶以更好體驗,故提出開放一套更加人性化的手機播放器。技術可行性分析:以現(xiàn)階段android技術發(fā)展水平,技術人員的技術配備,以及現(xiàn)有資源文檔的配備來說,實現(xiàn)本軟件是可能的。經濟可行性分析:有本人個人時間以及經費支持,使

2、得開發(fā)此軟件有了資金保障,可以充分利用這一優(yōu)勢,盡快開發(fā)。其他可行性分析:二、 需求分析 隨著3G時代的到來,手機應用越來越普遍,加之國民手機持有量更是爆炸式增長。移動音樂服務正是為這一形勢而發(fā)展起來,本人提出一種多功能手機音樂播放器的應用,主要為了滿足不同人群的音樂需要,并且提高優(yōu)質的音樂服務,于是提出本音樂播放器的主要功能。 需求功能如下:在線下載音樂功能。在線播放音樂顯示聲音波段表示提供讀取SD卡音樂用戶可以定制音樂均衡器,以滿足不同音質需求音量調節(jié) 提供歌詞跟隨音樂滾動更能提供重力感應選擇上、下首歌曲功能 四、概要設計(總體設計):模塊簡要說明在線下載音樂功能本根據用戶輸入音樂文件地址

3、,自動下載在SD卡或者內存中并播放在線播放音樂提供音樂播放的基本功能顯示聲音波段表示根據聲音波段產生震動的波段提供讀取SD卡音樂檢測SD卡,并顯示出音樂文件用戶可以定制音樂均衡器,以滿足不同音質需求提供不等的滑動條,用以控制聲音的質量,均衡器音量調節(jié)由滑動條調節(jié)音質的大小0-100提供歌詞跟隨音樂滾動更能采用多線程以及解析LRC歌詞文件同步播放音樂以及歌詞提供重力感應選擇上、下首歌曲功能采用Android系統(tǒng)的重力感應,以便選擇上下首歌曲進行播放 軟件程序流程圖五:詳細設計那么接下來就開始我們的每一個模塊的詳細設計了:在線下載音樂: 提供一個文本框供用戶輸入網絡音樂文件地址,然后確定下載,并提

4、供進度條顯示,下載完畢后關閉對話框,注意進程之間的問題。在線播放音樂提供音樂播放的基本功能,快進,暫停,播放,快退,同時進度滑塊條需跟隨滑動,用戶也可以滑動滑動條進行調整播放位置。提供讀取SD卡音樂 檢測用戶SD卡,如果沒有,則彈出信息提示,并提示用戶下載網絡音樂,如果檢測有SD卡,則再遍歷是否有可播放文件,如果沒有,則返回。如果有,則顯示出全部音樂文件,并提供點擊播放功能。 用戶可以定制音樂均衡器,以滿足不同音質需求 以一個對話框形式表現(xiàn)出,并提供多項滑動條供用戶調節(jié)音頻,同時更新音樂播放的質量。音量調節(jié)提供提供滑動條供用戶調節(jié)音量,音量范圍在0100之間 提供歌詞跟隨音樂滾動更能解析LRC

5、歌詞文件,并同步歌詞已經播放聲音,注意以多線程方式以及解析xml方式處理 提供重力感應選擇上、下首歌曲功能 根據系統(tǒng)自帶API開啟重力感應功能,同時根據感應的方向選擇切換到上下不同首歌曲,然后播放。 六:編碼、單元測試。 七:綜合測試組織人員對其進行一般性操作測試,針對每一模塊進行,同時編寫測試報告。程序員修正Bug,根據用戶反映,及時調整。如果條件允許,可以變編寫:測試計劃,測試大綱,搭建測試環(huán)境,設計和生成測試用例,測試報告 八:軟件使用培訓以及后期維護組織人員進行軟件使用培訓,并且由程序員或者美工人員制作培訓指南。程序員需熟悉相關模塊,并熟悉文檔,以便進行后期維護。歌詞同步的原理其實很簡

6、單:歌詞顯示是一個線程, 音樂播放時一個線程,通過播放時間將歌詞顯示進度與播放進度同步起來。網絡標準的歌詞格式是LRC. 我們看下一個LRC文檔,其格式就一目了然了.ti:愛ar:小虎隊al:華納國語情濃13首by:愛上你了音樂網02:08.0000:38.00把你的心、我的心串一串02:11.0000:41.00串一株幸運草、串一?同心圓02:16.0000:46.00讓所有期待未?的呼喚02:19.0000:49.00趁青春做?伴03:16.0002:24.0000:53.00?讓年輕越長大越孤單03:19.0002:27.0000:56.00把我的幸運草種在你的夢田03:23.0002:

7、31.0001:01.00讓地球隨我?的同心圓.LRC 格式為 歌詞顯示起始時間歌詞顯示結束時間歌詞內容。了解歌詞同步原理,我們可以想到要做如下工作:1. LRC 解析2. LRC 歌詞顯示3. 歌詞與播放音樂同步4. 歌詞的獲取一 LRC解析這邊我推薦YOYOPlayer 音樂播放開源項目. 源代碼已經非常好的支持了LRC解析. 我拿過來就用了.過程大概如此: 把LRC文件讀到內存里面,用 sentence數(shù)據結構存放. Sentence里面有 Fromtime, Totime, content三個成員變量。顯示的時候需要這些數(shù)據。二. LRC歌詞顯示歌詞的繪制通過重寫 OnDraw方法.繪

8、制的代碼貼出來:long t = tempTime;int index = getNowSentenceIndex(t);if (index = -1) return;Sentence now = list.get(index);float f = (t - now.getFromTime() * 1.0f/ (now.getToTime() - now.getFromTime();if (f 0.98f) f = 0.98f;Shader shader = new LinearGradient(0, 0,now.getContentWidth(mTxtPaint), 0, new int C

9、olor.RED,Color.BLUE , new float f, f + 0.01f ,TileMode.CLAMP);mTxtPaint.setShader(shader);canvas.drawText(now.getContent(), 0, 20, mTxtPaint);上面的代碼很簡單,關鍵一個函數(shù)是getNowSentenceIndex(t). 通過播放時間來獲得歌詞的索引. 我們看下getNowSentenceIndex()如何實現(xiàn)./* 得到當前正在播放的那一句的下標 不可能找不到,因為最開頭要加一句 自己的句子 ,所以加了以后就不可能找不到了* return 下標*/pr

10、ivate int getNowSentenceIndex(long t) for (int i = 0; i list.size(); i+) if (list.get(i).isInTime(t) return i;/ throw new RuntimeException(竟然出現(xiàn)了找不到的情況!);return -1;還有一個歌詞漸變的效果,其關鍵代碼在與對畫筆的設置,如下.Shader shader = new LinearGradient(0, 0,now.getContentWidth(mTxtPaint), 0, new int Color.RED,Color.BLUE , ne

11、w float f, f + 0.01f ,TileMode.CLAMP);mTxtPaint.setShader(shader);三. 歌詞與播放音樂同步音樂播放的時候,同時啟動歌詞顯示線程. 將音樂播放的時間設置到歌詞View的成員變量中, 以達到同步的目的。private class MyHandler extends Handler Overridepublic void handleMessage(Message msg) / Log.v(#hahah, + mp.getCurrentPosition();/ 重畫lrcView.mLyric.setTime(mp.getCurren

12、tPosition();lrcView.invalidate();四. 歌詞的獲取歌詞的獲取是通過百度搜索出來的. 具體代碼如下,很好看懂,關鍵代碼如下:GetMethod get = new GetMethod( + URLEncoder.encode(filetype:lrc + key, GBK);get.addRequestHeader(Host, );get.addRequestHeader(User-Agent, Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/ Firefox/2.0.0.11);get.addRequestHeader(Accept, text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5);get

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論