基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第1頁
基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第2頁
基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第3頁
基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第4頁
基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)目 錄第一章 引 言- 1 -1.1 項(xiàng)目背景- 1 -1.2 編寫目的- 2 -第二章 系統(tǒng)需求分析- 3 -2.1 功能需求(用例圖分析)- 3 -2.1.1 播放器的基本控制需求- 3 -2.1.2 播放清單列表管理需求- 5 -2.1.3 播放友好性需求- 7 -2.1.4 播放器擴(kuò)展卡需求- 8 -2.1.5 功能需求(時(shí)序圖)分析- 9 -2.2 系統(tǒng)結(jié)構(gòu)圖和流程圖- 10 -2.3 系統(tǒng)界面需求- 11 -2.4 系統(tǒng)性能需求- 12 -2.5 運(yùn)行環(huán)境需求- 12 -第三章 Android數(shù)據(jù)庫設(shè)計(jì)- 13 -3.1 數(shù)據(jù)庫及字段屬性設(shè)計(jì)- 13 -3.1.1 字段設(shè)計(jì)(表、圖)- 13 -3.1.2 音樂播放器E-R圖- 15 -3.2 數(shù)據(jù)庫連接- 15 -3.2.1 創(chuàng)建數(shù)據(jù)庫- 15 -3.2.2 操作數(shù)據(jù)庫- 16 -3.2.3 數(shù)據(jù)顯示- 17 -第四章 Android項(xiàng)目介紹- 18 -4.1 什么是Android?- 18 -4.1.1 Android簡介- 18 -4.1.2 Android Features特性- 18 -4.1.3 Android基本框架(Android Architecture)- 19 -4.1.4 Android系統(tǒng)的四大組件- 22 -4.2 搭建Android開發(fā)環(huán)境- 23 -4.3 Android常用工具的使用- 25 -4.3.1 命令行的使用- 25 -4.3.2 Dalvik Debug Monitor Service (DDMS)的使用- 26 -4.4 Android 音樂播放器的工程- 26 -4.4.1 Android項(xiàng)目- 26 -4.4.2 Android工程程序結(jié)構(gòu)- 27 -4.4.3 AndroidManifest.xml文件- 29 -第五章 播放器系統(tǒng)功能詳細(xì)設(shè)計(jì)- 31 -5.1音樂播放器主界面功能實(shí)現(xiàn)- 31 -5.1.1 播放器主界面- 31 -5.1.2 播放界面音軌的實(shí)現(xiàn)- 32 -5.1.3 播放器播放、暫停、停止等功能- 35 -5.2 播放列表功能- 36 -5.3 菜單功能- 38 -5.3.1 菜單界面- 38 -5.3.2 菜單功能實(shí)現(xiàn)- 39 -5.4 播放設(shè)置界面- 41 -5.4.1 界面實(shí)現(xiàn)- 41 -5.4.2 歌詞顯示實(shí)現(xiàn)- 42 -5.5 手機(jī)擴(kuò)展卡的訪問- 44 -5.5.1 文件瀏覽器界面- 45 -5.5.2 文件瀏覽器功能實(shí)現(xiàn)- 46 -5.6 數(shù)據(jù)存儲(chǔ)方式- 47 -5.6.1 SharedPreferences- 47 -5.6.2 File存儲(chǔ)方式- 48 -5.6.3 SQLiteDatabase數(shù)據(jù)庫- 48 -第六章 結(jié) 論- 49 -摘 要 隨著社會(huì)生活節(jié)奏越來越快,以及硬件移動(dòng)設(shè)備的越來越先進(jìn),我們對(duì)移動(dòng)設(shè)備的要求也在不斷提高,從原來的追求技術(shù)到現(xiàn)在的追求視覺。因而,也逐步提高了對(duì)操作系統(tǒng)的要求。Android是一個(gè)開源系統(tǒng),底層主要是基于Linux的內(nèi)核,該文章主要針對(duì)的是基于Android平臺(tái)的在線音樂客戶端設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行討論。本論文的音樂客戶端主要采用的是Android平臺(tái),利用Java語言和Eclipse編輯工具對(duì)此音樂客戶端進(jìn)行編寫,同時(shí)給出了在線音樂客戶端的系統(tǒng)設(shè)計(jì)過程、主要界面圖及功能運(yùn)行流程圖,文章中還對(duì)開發(fā)過程中遇到的問題和解決方案進(jìn)行了詳細(xì)的討論,該音樂客戶端集播放、暫停、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在Android系統(tǒng)中能獨(dú)立運(yùn)行。此音樂客戶端還可以通過訪問音樂網(wǎng)址實(shí)現(xiàn)在線聽音樂的功能。關(guān)鍵詞:Android ; 開源系統(tǒng) ; linux ; 音樂客戶端ABSTRACT With the increasingly rapid pace of social life, as well as hardware and more advanced mobile devices, we are moving equipment requirements are also rising, from the original to the current pursuit pursuit of technological vision. Thus, also gradually improve the operating system requirements. Android is an open source system, the bottom is mainly based on the Linux kernel, and the main article is based on the Android platform for online music clients to discuss design and implementation. In this thesis, the main clients of music using the Android platform, the use of the Java language and Eclipse editing tools for the preparation of this music client, and gives the clients online music system design process, the main interface and functional operation flow chart diagram, articles the development process also encountered problems and solutions were discussed in detail, the client sets the music play, pause, previous, next, volume control, lyrics display and other functions, good performance, in Android system can operate independently. This music client can also access music website for online music functions.KeyWords:Android ; Open source system ; linux ; Music Clientiii第一章 引 言1.1 項(xiàng)目背景 隨著社會(huì)生活節(jié)奏越來越快,我們對(duì)手機(jī)功能的要求也越來越高,由于手機(jī)市場(chǎng)飛速發(fā)展,手機(jī)操作系統(tǒng)也跟著出現(xiàn)了很多不同的種類,如今市場(chǎng)上主要的手機(jī)操作系統(tǒng)有三個(gè),分別是ios,windows phone,以及谷歌的Android操作系統(tǒng),其中占有開放源代碼優(yōu)勢(shì)的Android系統(tǒng)的發(fā)展前景最大。那么能否在手機(jī)上擁有自己編寫的個(gè)性音樂播放器呢?當(dāng)然可以,谷歌Android系統(tǒng)就可以做到。本文的音樂客戶端就是基于谷歌Android手機(jī)平臺(tái)的MP3播放器。 Android:是谷歌于2007年公布的開放式源代碼手機(jī)系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機(jī)系統(tǒng),因此,任何人都可能將手機(jī)系統(tǒng)中的功能根據(jù)自己的喜好重新編寫。這使得越來越多的人關(guān)注開始這個(gè)操作系統(tǒng)。本次作品在線音樂客戶端就是基于Android平臺(tái)的。 隨著計(jì)算機(jī)的廣泛運(yùn)用,手機(jī)市場(chǎng)的飛速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)逐漸成為我們生活中必不可少的一部分了。于是各種手機(jī)播放器也緊跟著發(fā)展起來,然而很多播放器只是追求外觀花哨,功能龐大,對(duì)用戶的手機(jī)造成了很多資源浪費(fèi),比如CPU,內(nèi)存的占用率過高等,在用戶需要多任務(wù)操作時(shí),就會(huì)受到影響,帶來了很多不便,而對(duì)于大多數(shù)普通用戶,很多功能是用不上的。針對(duì)以上這些弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,來滿足一般用戶的需求,除了能播放常見格式的語音視頻文件,高級(jí)功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語言界面。 要研究市場(chǎng)上一些流行的手機(jī)播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點(diǎn)以及各種播放器本身存在的特點(diǎn)和缺陷,編寫出功能實(shí)用,使用方便快捷的播放器。目前已經(jīng)實(shí)現(xiàn)的功能為可以播放常見音頻文件的功能,如MP3,WAV,等,擁有歌曲列表,具備一般播放器的功能,如快進(jìn),快退,上一曲,下一曲,音量調(diào)節(jié)等。1.2 編寫目的 隨著當(dāng)今社會(huì)的飛速發(fā)展,我們的生活節(jié)奏也不斷加快精神壓力不斷增大,欣賞音樂就是舒緩壓力最好的方式之一,本項(xiàng)目的目的是開發(fā)一個(gè)可以播放主流音樂文件格式的播放器,本設(shè)計(jì) 的實(shí)現(xiàn)的主要功能是播放Mp3,Wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,上一曲,下一曲,音量調(diào)節(jié),視覺外觀,播放列表和在線播放等多種播放控制功能,界面簡明,操作簡單。 本項(xiàng)目是一款基于Android手機(jī)平臺(tái)的在線音樂客戶端,使Android手機(jī)擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂視頻的旋律之中。使我們的生活更加多樣化。也使設(shè)計(jì)者更加熟練Android的技術(shù)和其它在市場(chǎng)上的特點(diǎn)第二章 Android平臺(tái)及開發(fā)工具介紹2.1 什么是Android?2.1.1 Android簡介 Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。目前最好的是Android2.0的摩托羅拉DroidAndroid是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),早期由Google開發(fā)(在華注冊(cè)商標(biāo)名為“安致”),后由開放手機(jī)聯(lián)盟(Open Handset Alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以Linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個(gè)手機(jī)公司建立了開放手機(jī)聯(lián)盟。Android在未公開之前常被傳聞為Google電話或gPhone。大多傳聞?wù)J為Google開發(fā)的是自己的手機(jī)電話產(chǎn)品,而不是一套軟件平臺(tái)。到了2010年1月,Google開始發(fā)表自家品牌手機(jī)電話的Nexus One。目前最新SDK版本為Android Android Features特性 Android系統(tǒng)有如下的幾大特性: 應(yīng)用程序框架 支持組件的重用與替換 Dalvik虛擬機(jī) 專門為移動(dòng)設(shè)備做了優(yōu)化 內(nèi)部集成瀏覽器 該瀏覽器基于開源的WebKit引擎 優(yōu)化的圖形庫 包括2D和3D圖形庫,3D圖形庫基于OpenGL ES SQLite 用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ) 多媒體支持 包括常見的音頻、視頻和靜態(tài)印象文件格式(如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM電話(依賴于硬件) 藍(lán)牙Bluetooth, EDGE, 3G, and WiFi (依賴于硬件) 照相機(jī),GPS,指南針,和加速度計(jì) (依賴于硬件) 豐富的開發(fā)環(huán)境 包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件2.1.3 Android基本框架(Android Architecture)圖 2.1 Android Architecture(1) ApplicationsApplication Android會(huì)同一個(gè)核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是用JAVA編寫的。(2) Application FrameWork 開發(fā)者完全可以訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序架構(gòu)用來簡化組件軟件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。該應(yīng)用程序重用機(jī)制使得組建可以被用戶替換。 所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括: 可擴(kuò)展的視圖(Views )可以用來建應(yīng)用程序,包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個(gè)可嵌入的web瀏覽器內(nèi)容管理器(Content Providers )使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layout files )。通知管理器(Notification Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息?;顒?dòng)類管理器(Activity Manager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。(3) Libraries庫 Android 包括一個(gè)被 Android 系統(tǒng)中各種不同組件所使用的 C/C+ 庫集。該庫通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些主要的核心庫:系統(tǒng) C 庫- 一個(gè)從 BSD 繼承來的標(biāo)準(zhǔn) C 系統(tǒng)函數(shù)庫( libc ),專門為基于 embedded linux 的設(shè)備定制。 媒體庫- 基于 PacketVideo OpenCORE;該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。 Surface Manager - 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無縫融合。 LibWebCore - 一個(gè)最新的web瀏覽器引擎用來支持Android瀏覽器和一個(gè)可嵌入的web視圖。 SGL - 一個(gè)內(nèi)置的2D圖形引擎 3D libraries - 基于OpenGL ES 1.0 APIs實(shí)現(xiàn);該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。 FreeType - 位圖(bitmap)和向量(vector)字體顯示。 SQLite 一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎。(4) Android RuntimeAndroid 包括了一個(gè)核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功能。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik是針對(duì)于同時(shí)高效地運(yùn)行多個(gè)VMs來實(shí)現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由JAVA匯編器編譯,然后通過SDK中的dx工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。Dalvik虛擬機(jī)依賴于linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。2.1.4 Android系統(tǒng)的四大組件在Android系統(tǒng)中,為我們提供了四大基本組件,每個(gè)組件是一個(gè)視圖,但是有些是可見的,有些是不可見的視圖,像Activity,ContentProvider是可見的視圖,Service和BroadcastReceiver是不可見的,它們只在系統(tǒng)的后臺(tái)運(yùn)行。下面分別介紹四大組件:(1)Activity 簡介在Android系統(tǒng)中Activity提供可視化的用戶界面,一個(gè)Android應(yīng)用通常由多個(gè)Activity組成。多個(gè)Activity組成了Activity棧(Stack),當(dāng)前活動(dòng)的Activity處于棧頂。Activity有自己的生命周期,由Android系統(tǒng)來控制。 (2)Service 簡介 顧名思義Service就是運(yùn)行在后臺(tái)的一種服務(wù)程序,一般很少和用戶交互,因此沒有可視化界面定義一個(gè)Service類比較簡單,只要繼承Service類,實(shí)現(xiàn)其生命周期中的方法就可以了。一個(gè)定義好的Service必須在AndroidManifest.xml配置文件注冊(cè),通過元素聲明才能使用.Service有自己的生命周期,我們可以調(diào)用startService()啟動(dòng)一個(gè)Service或者bindService()方法來綁定一個(gè)存在的Service (3)Broadcast Receiver 簡介 Broadcast Receiver 顧名思義廣播接收器,它和事件處理機(jī)制類似,只不過事件處理機(jī)制是程序組件級(jí)別的(例如,某個(gè)按鈕的單擊事件),而廣播事件處理機(jī)制是系統(tǒng)級(jí)別的。到目前為止我們可以使用Intent來啟動(dòng)一個(gè)程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個(gè)系統(tǒng)級(jí)別的事件廣播來傳遞消息。我們可以在你的應(yīng)用程序中實(shí)現(xiàn)Broadcast Receiver來監(jiān)聽和響應(yīng)這些廣播的Intent (4)ContentProvider簡介 Content Provider 用來保存和檢索數(shù)據(jù),并且使應(yīng)用程序之間相互訪問數(shù)據(jù)成為可能。它是跨應(yīng)用程序共享數(shù)據(jù)的唯一方法。 Android 為常用的數(shù)據(jù)類型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的Content Provider。它們被定義在vider包下面。通過這樣定義好的ContentProvider 我們可以方便的進(jìn)行數(shù)據(jù)操作。當(dāng)然我們必須擁有適當(dāng)?shù)臋?quán)限。我們也可以自己來定ContentProvider共享我們的數(shù)據(jù),方便用戶的訪問 2.2 eclipse開發(fā)工具介紹 Eclipse 是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)境(IDE)來使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 2.2.1Android項(xiàng)目Android的四大基本組件:Activity(活動(dòng)),Service(服務(wù)),BroadcastReceiver(廣播),ContentProvider(內(nèi)容提供者),各組件之間要進(jìn)行切換需要一個(gè)意圖或企圖Intent類,通過啟動(dòng)StartIntent()方法來使各組件進(jìn)行跳轉(zhuǎn)Android的五大布局方式:LinearLayout(線性布局) FrameLayout(幀布局) TableLayout(表格布局) AbsoluteLayout(絕對(duì)布局) RelativeLayout(相對(duì)布局)五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過嵌套布局而實(shí)現(xiàn)的。Android的線程,以及線程之間通信的中介:Handler類Android數(shù)據(jù)庫:在第三章已經(jīng)介紹過了。這里不再介紹Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性 布局方式 引用的資源等Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個(gè)Android程序啟動(dòng)后,系統(tǒng)會(huì)啟動(dòng)一個(gè)模擬器(Emulator)(圖2.2),該模擬器是一款手機(jī)板的樣式,擁有手機(jī)硬件的基本操作。我們也可以將右邊的鍵盤通過代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定,目前最大支持800X600的分辨率。圖 2.2 android模擬器 2.2.2Android工程程序結(jié)構(gòu)Android工程基本結(jié)構(gòu)目錄包括:src (源代碼)、gen(Android系統(tǒng)自動(dòng)生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml 是四大組件的驅(qū)動(dòng)配置文件,有它的存在,Android程序的四大組件才可以正常的跳轉(zhuǎn)。Android資源的類型和布局(圖2.3)圖 2.3 下圖2.2.1 -圖2.2.5為音樂播放器代碼結(jié)構(gòu)和各界面的配置文件,圖像資源等,圖2.2.1 為一個(gè)Android工程所必須的結(jié)構(gòu),圖2.2.2為該播放器的.Java文件,圖2.2.3為播放器所用到的字符串,字體大小,字的顏色等配置文件,圖2.2.4為 該播放器的各種界面的布局配置文件,圖2.2.5為該播放器的圖片資源。圖 2.2.1 圖2.2.2 圖2.2.3 圖2.2.4 圖2.2.5第3章 在線音樂客戶端總體設(shè)計(jì)3.1 功能需求(用列表方式分析) 根據(jù)項(xiàng)目的目標(biāo),我們可獲得項(xiàng)目系統(tǒng)的基本需求,以下開始介紹在線音樂客戶端的整體功能需求,并使用列表的方式來描述,我們分成兩部分來概括,即本地音樂的操作和在線音樂部分的操作。3.1.1 本地音樂的基本控制需求用例名稱:播放參與者:用戶目標(biāo):使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運(yùn)行基本事件流:1.用戶單擊“播放”按鈕 2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:暫停參與者:用戶目標(biāo):使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫?;臼录鳎?.用戶單擊“播放”按鈕 2.播放器將暫停當(dāng)前的歌曲用例名稱:第一首/最后一首參與者:用戶目標(biāo):使得用戶可以從第一首或最后一首歌曲開始聽前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“第一首或最后一首”按鈕 2.播放器將播放第一首或最后一首歌曲用例名稱:上一首/下一首參與者:用戶目標(biāo):使得用戶可以聽上一首或下一首歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“上一首或下一首”按鈕 2.播放器將播放上一首或下一首歌曲用例名稱:歌詞歌曲同步參與者:用戶目標(biāo):使得用戶可以歌詞跟唱歌曲前置條件:sdcard存入與歌曲匹配的lrc歌詞文件基本事件流:1.用戶點(diǎn)擊想要播放的歌曲 2.播放器顯示所點(diǎn)擊播放歌曲的歌詞用例名稱:快進(jìn)/快退參與者:用戶目標(biāo):使得用戶可以快進(jìn)或快退歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶向前或向后拖動(dòng)播放進(jìn)度條 2.播放器將快進(jìn)或快退歌曲用例名稱:音量控制參與者:用戶目標(biāo):使得用戶可以控制歌曲音量前置條件:歌曲正在播放或暫停基本事件流:1.用戶向前或向后拖動(dòng)音量進(jìn)度條 2.播放器將調(diào)節(jié)歌曲的音量用例名稱:歌曲列表參與者:用戶目標(biāo):使得用戶可以進(jìn)入播放清單前置條件:程序在運(yùn)行,播放器正在播放本地歌曲基本事件流:1.用戶單擊手機(jī)上的“返回”按鈕 2.播放器進(jìn)入歌曲列表3.1.2 本地音樂的基本控制需求用例名稱:在線試聽參與者:用戶目標(biāo):使得用戶可以感受在線試聽的魅力前置條件:程序運(yùn)行且手機(jī)處于wifi連接的狀態(tài)基本事件流:1.用戶單擊“在線試聽”按鈕 2.播放器進(jìn)入在線試聽狀態(tài)用例名稱:搜索參與者:用戶目標(biāo):使得用戶可以在線試聽搜狗音樂新歌榜TOP100前置條件:在歌曲名稱和歌手名稱欄中輸入想要試聽的歌曲名稱和歌手名稱基本事件流:1.用戶單擊“搜索”按鈕 2.顯示所獲得的歌曲鏈接用例名稱:播放參與者:用戶目標(biāo):使得用戶開始試聽搜索的歌曲前置條件:用戶單擊搜索按鈕后成功獲得歌曲鏈接基本事件流:1.用戶單擊“播放”按鈕 2.播放器進(jìn)入在線試聽界面用例名稱:快進(jìn)/快退參與者:用戶目標(biāo):使得用戶可以快進(jìn)或快退歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶點(diǎn)擊“快進(jìn)/快退”按鈕 2.播放器將快進(jìn)或快退歌曲用例名稱:音量控制參與者:用戶目標(biāo):使得用戶可以控制歌曲音量前置條件:歌曲正在播放或暫停基本事件流:1.用戶向前或向后拖動(dòng)音量進(jìn)度條 2.播放器將調(diào)節(jié)歌曲的音量用例名稱:停止參與者:用戶目標(biāo):退出在線試聽播放界面前置條件:在線試聽正常運(yùn)行基本事件流:1.用戶單擊手機(jī)的“返回”按鈕 2.播放器將退出在線試聽播放界面3.2 流程圖和系統(tǒng)結(jié)構(gòu)圖3.2.1音樂播放器的系統(tǒng)流程圖(圖3.2.1)圖3.2.1 流程圖3.2.2系統(tǒng)功能表(表3.1)和系統(tǒng)功能結(jié)構(gòu)圖(圖3.2.2)功能類別子功能子功能播放列表歌曲列表退出播放播放-進(jìn)入播放界面本地音樂播放界面播放播放歌曲-線程啟動(dòng)-時(shí)間更新暫停暫停歌曲-線程暫停-時(shí)間暫停第一首播放列表索引變化-尋找第一ID歌曲最后一首播放列表索引變化-尋找最后一ID歌曲快進(jìn)快進(jìn)歌曲-線程啟動(dòng)-時(shí)間更新快退快退歌曲-線程啟動(dòng)-時(shí)間更新音量改變音量-線程啟動(dòng)-音量更新上一首播放列表索引變化-尋找上一ID歌曲下一首播放列表索引變化-尋找下一ID歌曲播放界面菜單返回到播放列表退出播放器在線試聽歌曲名稱匹配歌名歌手名稱匹配歌手搜索搜索歌曲-適配器啟動(dòng)-獲取地址播放播放-進(jìn)入在線試聽播放界面在線試聽播放界面播放播放歌曲-線程啟動(dòng)-時(shí)間更新暫停暫停歌曲-線程暫停-時(shí)間暫??爝M(jìn)快進(jìn)歌曲-線程啟動(dòng)-時(shí)間更新快退快退歌曲-線程啟動(dòng)-時(shí)間更新音量改變音量-線程啟動(dòng)-音量更新主菜單退出程序程序退出進(jìn)入播放列表顯示播放列表表3.1 功能表圖3.2.2 系統(tǒng)功能結(jié)構(gòu)圖3.3 系統(tǒng)界面需求 播放器界面要求布局合理,顏色舒適,控制按鈕友好,為了減少開發(fā)工程量,圖片素材多數(shù)為網(wǎng)絡(luò)尋找的素材(圖3.3)圖3.3 播放器界面說明:左側(cè)為本地音樂播放界面 右側(cè)為在線試聽播放界面3.4 系統(tǒng)性能需求根據(jù)Android手機(jī)系統(tǒng)要求無響應(yīng)時(shí)間為5秒,所以就有如下性能要求:(1) 當(dāng)要求歌曲播放時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(2) 當(dāng)要求歌曲暫停時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(3) 當(dāng)要求歌曲停止時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(4) 當(dāng)要求歌曲上/下一首時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(5) 當(dāng)要求進(jìn)行清單列表時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(6) 當(dāng)要求歌曲第一/最后一首時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(7) 當(dāng)要求快進(jìn)/快退時(shí),程序響應(yīng)時(shí)間最長不能超過5秒(8) 當(dāng)要求改變音量時(shí),程序響應(yīng)時(shí)間最長不能超過5秒3.5 運(yùn)行環(huán)境需求操作系統(tǒng):Android手機(jī)基于Linux操作系統(tǒng)支持環(huán)境:Android 1.5 - 4.2.2版本開發(fā)環(huán)境:Eclipse 3.5 ADT 0.95 第四章 在線音樂客戶端詳細(xì)設(shè)計(jì)4.1音樂播放器主界面功能實(shí)現(xiàn)4.1.1 播放器主界面播放器主界面(圖4.1)圖 4.1Android的每一個(gè)可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運(yùn)行時(shí),可以通過代碼對(duì)各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個(gè)Activity,Android工程在每個(gè)activity啟動(dòng)的時(shí)候會(huì)首先執(zhí)行Oncreate()方法,如下代碼:Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.music);該方法主要執(zhí)行界面的初始化操作,Activity有個(gè)設(shè)置布局的方法:Context.setContentView(layoutResID),參數(shù)為資源ID,該Id在工程目錄res/layout下,主界面布局文件名為music。下面為music.xml布局文件代碼結(jié)構(gòu)如下: 在絕對(duì)布局下嵌套兩種線性布局和,第一個(gè)實(shí)現(xiàn)了標(biāo)題和歌曲名的顯示位置,通過布局設(shè)置絕對(duì)坐標(biāo)來控制標(biāo)題的位置。每個(gè)布局內(nèi)可以放置多種Widget(窗體部件)例如:等。每個(gè)Widget內(nèi)有多種屬性,可以設(shè)置該Widget的坐標(biāo),大小,背景和顏色等參數(shù)。在播放界面中,歌詞顯示為居中,實(shí)現(xiàn)方法代碼如下:屬性:orientation=horizontal:此線性布局的子部件為水平方式布局Layout_width=fill_content :布局的寬度為填滿父布局Layout_height=wrap_content :布局的高度子由窗體的大小決定 窗體TextView 文本 :textColor=8deeee 設(shè)置文本顯示的顏色RGB為 8deeeeTextSize為默認(rèn)大小5.1.2 播放界面音軌的實(shí)現(xiàn)播放器音軌SeekBar(如下圖)Android系統(tǒng)自帶SeekBar(如下圖)圖 5.2 不管是從界面外觀還是從功能上,系統(tǒng)自帶的SeekBar往往不能滿足用戶的需要。所以我在這里自定義了一個(gè)音軌SeekBar,在play_rack.Xml配置文件中,SeekBar的代碼如下: 上面代碼中有參數(shù)android:thumb=drawable/thumb 為音軌游標(biāo)的圖片資源android:progressDrawable=drawable/seekbar_style為SeekBar條的風(fēng)格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.Xml是自定義的配置文件,算法如下: 配置文件中三個(gè)Item項(xiàng)依次決定了SeekBar的三層背景,從最下層的灰色到最上層的藍(lán)色。通過各種屬性設(shè)置了SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。通過這些屬性設(shè)置,就自定義一個(gè)如上圖一的SeekBar音軌.播放器最重要的一部分就是音軌與歌曲進(jìn)度同步的實(shí)現(xiàn)。音軌設(shè)置了兩個(gè)TextView用來顯示當(dāng)前歌曲播放的進(jìn)度時(shí)間和歌曲的長度(圖5.3) 圖 5.3 音軌對(duì)象SeekBar在歌曲剛開始播放的時(shí)候調(diào)用方法SeekBar.setMax(),參數(shù)傳入歌曲的長度。SeekBar.setProgress(1)設(shè)置游標(biāo)的起始進(jìn)度為1。然后程序運(yùn)行如下代碼: private Runnable thread_One = new Runnable() / 線程public void run() int currently_Progress = seekBar.getProgress() + 1000; seekBar.setProgress(currently_Progress);currently_Time.setText(getFileTime(mplayer.getCurrentPosit ion();showLrcTwo(lrc_time, lrc_word);handler.postDelayed(thread_One, 1000); Android的線程的開始是通過Handler類來進(jìn)行的,Handler類是線程與線程之間通信的橋梁,實(shí)現(xiàn)Runnable接口會(huì)實(shí)現(xiàn)里面的run方法,當(dāng)線程開始的時(shí)候,Runnable中的run方法會(huì)向Handler發(fā)一個(gè)Message消息,這樣,Handler類就可以接收到run方法發(fā)送過來的不同的消息進(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)聽器,該監(jiān)聽器的作用是一直保持著對(duì)進(jìn)度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向SeekBar的各位置進(jìn)行點(diǎn)擊時(shí),它會(huì)自動(dòng)監(jiān)聽其位置,進(jìn)行相應(yīng)的位置顯示。這也是進(jìn)度條上的游標(biāo)會(huì)不停的移動(dòng)和歌詞時(shí)間會(huì)不停的變動(dòng)的原因。5.1.3 播放器播放、暫停、停止等功能圖 5.4 如圖5.4所示:各按鈕水平放置,用的是布局中的線性布局LinearLayout,用方法setOrientation(horizontal);將其設(shè)置為水平。LinearLayout中依次放置播放,暫停,停止,上、下一曲按鈕屬性。配置文件代碼結(jié)構(gòu)如下: android的媒體播放原理:android源程序已經(jīng)為我們封裝好了一個(gè)接口類,叫MediaPlayer。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,通過如下四個(gè)步驟:第一步: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);歌曲數(shù)據(jù)源的獲得:要獲得數(shù)據(jù)源,需要我們提供給接口類一個(gè)歌曲存放路徑,而這個(gè)路徑已經(jīng)被事先放到數(shù)據(jù)庫里了,我們只需要進(jìn)行數(shù)據(jù)庫進(jìn)行操作。將里面的路徑取出。這里將調(diào)用PlayRackActivity的一個(gè)方法query();代碼算法如下

溫馨提示

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

評(píng)論

0/150

提交評(píng)論