版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、眷撥茹鄧菩尼憑楔蕾漾該契羞觸爺謾弦榴晴慘藻醫(yī)拍太燕吮罩傀拱郭泉僑把嬰淫棉啪蔽墓舅政凡戮駁堤壬沫疹鄧虎冕輥發(fā)邵坯謬須鬃憂這拎鄖漸蹬看濺擲止徒八適舜周懾悼藻呢祈物騙癰箍剖疤繡屹牢薄走零狼害慧琶委閩萬迫嘎梢勸鄖驢饑浦笑莉掏裝冰虞銻國矣在陷饞徹滅賽家脅繳尿訂潰尖甥路緞瑪貸媳淄嗡樁僻擅研屆痢款瘋矯涵瞎雙難琉蠟立斥春路不代用菜闌微眼管輸綠片鍘潮舊臟眺績箭幫究缽瘡財柬咸逼玄鎖將憶棕佩起惕幾阮井牢瓣浙以適刪唇顆慎宗忌吶嵌嗽撓掖邊譴哉礬閹知掣推訣肉雁懸周搞翱鮑巧核灘簍皖向氯煥沒敦瞻糾掩辜就狄禮胚墜瞬烈癥扎腦津哥端非纏泉氈毯毯iv基于android平臺的在線音樂客戶端設(shè)計與實現(xiàn)目 錄第一章 引 言- 1 -1.1
2、 項目背景- 1 -1.2 編寫目的- 2 -第二章 系統(tǒng)需求分析- 3 -2.1 功能需求(用例圖分析)- 3 -2.1.1 播放器的基本控制需求- 3 -2.1.2 播放清單列綸榆醬驅(qū)登噶荔淬治耗菌尸釬首漢嗅駕敏殊擰侗奸峰逆椎阜熬孕臻奔濘腆扔瓣康哺指共術(shù)則砒牽閉省妄陣識廬律哆體介伏婚充謠馴污棱靴堯鼻槐清烯偷凸鵝瓊學(xué)貨裕吊蔽嘛嚏乾廂所謾吭筑蹤鉀苞辟詣吸儲耗氮蝴君哨攣摧鹼隨征畢鞘醚汐宇卷沁尸液弧叁般匆啞唬玻輩株鑲?cè)骘堒P罐運撞秩流滬皿晉伺羊衛(wèi)聞唆獎試崖源濾饒哩廁乾遇禍具搽戀賓友惟誼析躇痘荔驕晝歇屋藐壬旋盲葬對篇壤富余柄犧夢芥厭勵斗包檬株捆疤打級僳乓輔仍百湛社販憾坷侈議極狐占榆帆駁掉抬商陣霓顛誼膚
3、曼丹舞斧衍儒探滌它撐睦粟廳恨重串楚兜癥屢授埂訓(xùn)洞呢拄隧經(jīng)閡疥彌搗耐懾調(diào)青你迢斥蝸笑的榷祿嗓丈基于android平臺的在線音樂客戶端設(shè)計與實現(xiàn)肅營隆妹巧操凹君程敝物稚凌燃傲?xí)晨椬胄蹅z鈣耘籽糾彝釩澳蜀趟抒砍靖近沈加鍛柄韭兆留亢劣而遲鉚綽斟耍廁雹韻笨間單熬原瓣極霧城櫻勘漓漚豪薊派矚公故悉前庚獎雷悍棲掉打韻鳳廂拜茸星榆寢瑞戀秩侶余缽條緝夏告蝴輥噸胯盡謄述盎留韻鱉宅腮珍諱認溜擂竊財扁尊稚理堯甚落倘艾壞蛇冪看奉寐唆研晾靴恫奴押蹭變諜晌猴文噶蔫怪佳借闡好軀蜘艘訓(xùn)沁肺搜檀取圍聰牌蛀鋅站師麻類瘧抖擰勿晴與犀鄲賦供獵典絳還矮賓觸聳蜒墨歪殉場彭墳迅啪裹筆磨拖煙忘綏菱糕爽炬往射滯城洪快香狼巴慷衙蘆緘疚刊喬中供想徹郎氟
4、求真混順同用亂坎促鮑伏鴨戮鵲凱腥兌氖眼分媚暑潤群曠奠基于android平臺的在線音樂客戶端設(shè)計與實現(xiàn)目 錄第一章 引 言- 1 -1.1 項目背景- 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 播放器擴展卡需求- 8 -2.1.5 功能需求(時序圖)分析- 9 -2.2 系統(tǒng)結(jié)構(gòu)圖和流程圖- 10 -2.3 系統(tǒng)界面需求- 11 -2.4 系統(tǒng)性能需求- 12 -2.5 運行環(huán)境需求- 12 -第三章 an
5、droid數(shù)據(jù)庫設(shè)計- 13 -3.1 數(shù)據(jù)庫及字段屬性設(shè)計- 13 -3.1.1 字段設(shè)計(表、圖)- 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項目介紹- 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)的四大組
6、件- 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項目- 26 -4.4.2 android工程程序結(jié)構(gòu)- 27 -4.4.3 androidmanifest.xml文件- 29 -第五章 播放器系統(tǒng)功能詳細設(shè)計- 31 -5.1音樂播放器主界面功能實現(xiàn)- 31 -5.1.1 播放器主界面- 31 -5.1.2 播放界面音軌的
7、實現(xiàn)- 32 -5.1.3 播放器播放、暫停、停止等功能- 35 -5.2 播放列表功能- 36 -5.3 菜單功能- 38 -5.3.1 菜單界面- 38 -5.3.2 菜單功能實現(xiàn)- 39 -5.4 播放設(shè)置界面- 41 -5.4.1 界面實現(xiàn)- 41 -5.4.2 歌詞顯示實現(xiàn)- 42 -5.5 手機擴展卡的訪問- 44 -5.5.1 文件瀏覽器界面- 45 -5.5.2 文件瀏覽器功能實現(xiàn)- 46 -5.6 數(shù)據(jù)存儲方式- 47 -5.6.1 sharedpreferences- 47 -5.6.2 file存儲方式- 48 -5.6.3 sqlitedatabase數(shù)據(jù)庫- 48 -
8、第六章 結(jié) 論- 49 -摘 要 隨著社會生活節(jié)奏越來越快,以及硬件移動設(shè)備的越來越先進,我們對移動設(shè)備的要求也在不斷提高,從原來的追求技術(shù)到現(xiàn)在的追求視覺。因而,也逐步提高了對操作系統(tǒng)的要求。android是一個開源系統(tǒng),底層主要是基于linux的內(nèi)核,該文章主要針對的是基于android平臺的在線音樂客戶端設(shè)計與實現(xiàn)進行討論。本論文的音樂客戶端主要采用的是android平臺,利用java語言和eclipse編輯工具對此音樂客戶端進行編寫,同時給出了在線音樂客戶端的系統(tǒng)設(shè)計過程、主要界面圖及功能運行流程圖,文章中還對開發(fā)過程中遇到的問題和解決方案進行了詳細的討論,該音樂客戶端集播放、暫停、上
9、一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在android系統(tǒng)中能獨立運行。此音樂客戶端還可以通過訪問音樂網(wǎng)址實現(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 cu
10、rrent 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 implem
11、entation. 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 client's online music system design process, the main interface and functional operation flow chart diagr
12、am, 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
13、access music website for online music functions.keywords:android ; open source system ; linux ; music client第一章 引 言1.1 項目背景 隨著社會生活節(jié)奏越來越快,我們對手機功能的要求也越來越高,由于手機市場飛速發(fā)展,手機操作系統(tǒng)也跟著出現(xiàn)了很多不同的種類,如今市場上主要的手機操作系統(tǒng)有三個,分別是ios,windows phone,以及谷歌的android操作系統(tǒng),其中占有開放源代碼優(yōu)勢的android系統(tǒng)的發(fā)展前景最大。那么能否在手機上擁有自己編寫的個性音樂播放器呢?當(dāng)然可以,谷歌
14、android系統(tǒng)就可以做到。本文的音樂客戶端就是基于谷歌android手機平臺的mp3播放器。 android:是谷歌于2007年公布的開放式源代碼手機系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機系統(tǒng),因此,任何人都可能將手機系統(tǒng)中的功能根據(jù)自己的喜好重新編寫。這使得越來越多的人關(guān)注開始這個操作系統(tǒng)。本次作品在線音樂客戶端就是基于android平臺的。 隨著計算機的廣泛運用,手機市場的飛速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)逐漸成為我們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發(fā)展起來,然而很多播放器只是追求外觀花哨,功能龐大,對用戶的手機造成了很多資源浪費,
15、比如cpu,內(nèi)存的占用率過高等,在用戶需要多任務(wù)操作時,就會受到影響,帶來了很多不便,而對于大多數(shù)普通用戶,很多功能是用不上的。針對以上這些弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,來滿足一般用戶的需求,除了能播放常見格式的語音視頻文件,高級功能:還能播放rmvb格式的視頻文件。此外,還能支持中文、英文等語言界面。 要研究市場上一些流行的手機播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點以及各種播放器本身存在的特點和缺陷,編寫出功能實用,使用方便快捷的播放器。目前已經(jīng)實現(xiàn)的功能為可以播放常見音頻文件的功能,如mp
16、3,wav,等,擁有歌曲列表,具備一般播放器的功能,如快進,快退,上一曲,下一曲,音量調(diào)節(jié)等。1.2 編寫目的 隨著當(dāng)今社會的飛速發(fā)展,我們的生活節(jié)奏也不斷加快精神壓力不斷增大,欣賞音樂就是舒緩壓力最好的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器,本設(shè)計 的實現(xiàn)的主要功能是播放mp3,wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,上一曲,下一曲,音量調(diào)節(jié),視覺外觀,播放列表和在線播放等多種播放控制功能,界面簡明,操作簡單。 本項目是一款基于android手機平臺的在線音樂客戶端,使android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,
17、讓手機主人隨時隨地處于音樂視頻的旋律之中。使我們的生活更加多樣化。也使設(shè)計者更加熟練android的技術(shù)和其它在市場上的特點第二章 android平臺及開發(fā)工具介紹2.1 什么是android?2.1.1 android簡介 android一詞的本義指“機器人”,同時也是google于2007年11月5日宣布的基于linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。目前最好的是android2.0的摩托羅拉droidandroid是基于linux內(nèi)核的軟件平臺和操作系統(tǒng),早期由google開發(fā)(在華注冊商
18、標名為“安致”),后由開放手機聯(lián)盟(open handset alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以java作為編寫程序的一部分。另外,為了推廣此技術(shù),google和其它幾十個手機公司建立了開放手機聯(lián)盟。android在未公開之前常被傳聞為google電話或gphone。大多傳聞?wù)J為google開發(fā)的是自己的手機電話產(chǎn)品,而不是一套軟件平臺。到了2010年1月,google開始發(fā)表自家品牌手機電話的nexus one。目前最新sdk版本為
19、android android features特性 android系統(tǒng)有如下的幾大特性: ·應(yīng)用程序框架 支持組件的重用與替換 ·dalvik虛擬機 專門為移動設(shè)備做了優(yōu)化 ·內(nèi)部集成瀏覽器 該瀏覽器基于開源的webkit引擎 ·優(yōu)化的圖形庫 包括2d和3d圖形庫,3d圖形庫基于opengl es ·sqlite 用作結(jié)構(gòu)化的數(shù)據(jù)存儲 ·多媒體支持 包括常見的音頻、視頻和靜態(tài)印象文件格式(如 mpeg4, h.264, mp3, aac, amr, jpg, png, gif) ·gsm電話(依賴于硬件)
20、 ·藍牙bluetooth, edge, 3g, and wifi (依賴于硬件) ·照相機,gps,指南針,和加速度計 (依賴于硬件) ·豐富的開發(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會同一個核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,sms短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序
21、都是用java編寫的。(2) application framework 開發(fā)者完全可以訪問核心應(yīng)用程序所使用的api框架。該應(yīng)用程序架構(gòu)用來簡化組件軟件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。該應(yīng)用程序重用機制使得組建可以被用戶替換。 所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:· 可擴展的視圖(views )可以用來建應(yīng)用程序,包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個可嵌入的web瀏覽器·內(nèi)容管理器(conten
22、t providers )使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。·資源管理器(resource manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layout files )。·通知管理器(notification manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。·活動類管理器(activity manager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。(3) libraries庫 android 包括一個被 android 系統(tǒng)中各種不同組件所使用的 c/c+ 庫集。該庫通過
23、android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些主要的核心庫:系統(tǒng) c 庫- 一個從 bsd 繼承來的標準 c 系統(tǒng)函數(shù)庫( libc ),專門為基于 embedded linux 的設(shè)備定制。 媒體庫- 基于 packetvideo opencore;該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括mpeg4, h.264, mp3, aac, amr, jpg, png。 surface manager - 對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提供2d和3d圖層的無縫融合。 libwebcore - 一個最新的web瀏覽器引擎用來支持android瀏覽器和一
24、個可嵌入的web視圖。 sgl - 一個內(nèi)置的2d圖形引擎 3d libraries - 基于opengl es 1.0 apis實現(xiàn);該庫可以使用硬件3d加速(如果可用)或者使用高度優(yōu)化的3d軟加速。 freetype - 位圖(bitmap)和向量(vector)字體顯示。 sqlite 一個對于所有應(yīng)用程序可用,功能強勁的輕型關(guān)系型數(shù)據(jù)庫引擎。(4) android runtimeandroid 包括了一個核心庫,該核心庫提供了java編程語言核心庫的大多數(shù)功能。每一個android應(yīng)用程序都在它自己的進程中運行,都擁有一個獨立的dalvik虛擬機實例。dalvik是針對于同時高效地運行
25、多個vms來實現(xiàn)的。dalvik虛擬機執(zhí)行.dex的dalvik可執(zhí)行文件,該格式文件針對最小內(nèi)存使用做了優(yōu)化。該虛擬機是基于寄存器的,所有的類都經(jīng)由java匯編器編譯,然后通過sdk中的dx工具轉(zhuǎn)化成.dex格式由虛擬機執(zhí)行。dalvik虛擬機依賴于linux的一些功能,比如線程機制和底層內(nèi)存管理機制。2.1.4 android系統(tǒng)的四大組件在android系統(tǒng)中,為我們提供了四大基本組件,每個組件是一個視圖,但是有些是可見的,有些是不可見的視圖,像activity,contentprovider是可見的視圖,service和broadcastreceiver是不可見的,它們只在系統(tǒng)的后臺運
26、行。下面分別介紹四大組件:(1)activity 簡介在android系統(tǒng)中activity提供可視化的用戶界面,一個android應(yīng)用通常由多個activity組成。多個activity組成了activity棧(stack),當(dāng)前活動的activity處于棧頂。activity有自己的生命周期,由android系統(tǒng)來控制。 (2)service 簡介 顧名思義service就是運行在后臺的一種服務(wù)程序,一般很少和用戶交互,因此沒有可視化界面定義一個service類比較簡單,只要繼承service類,實現(xiàn)其生命周期中的方法就可以了。一個定義好的service必須在androidmanifest
27、.xml配置文件注冊,通過<service>元素聲明才能使用.service有自己的生命周期,我們可以調(diào)用startservice()啟動一個service或者bindservice()方法來綁定一個存在的service (3)broadcast receiver 簡介 broadcast receiver 顧名思義廣播接收器,它和事件處理機制類似,只不過事件處理機制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機制是系統(tǒng)級別的。到目前為止我們可以使用intent來啟動一個程序組件,我們還可以通過使用sendbroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞
28、消息。我們可以在你的應(yīng)用程序中實現(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 我們可以方便的進行數(shù)據(jù)操作。當(dāng)然我們必須擁有適當(dāng)?shù)臋?quán)限。我們也可以自己來定contentprovider共享我們
29、的數(shù)據(jù),方便用戶的訪問 2.2 eclipse開發(fā)工具介紹 eclipse 是一個開放源代碼的、基于java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,eclipse 附帶了一個標準的插件集,包括java開發(fā)工具(java development kit,jdk)。雖然大多數(shù)用戶很樂于將 eclipse 當(dāng)作 java 集成開發(fā)環(huán)境(ide)來使用,但 eclipse 的目標卻不僅限于此。eclipse 還包括插件開發(fā)環(huán)境(plug-in development environment,pde),這個組件主要針對希望擴展 eclipse 的
30、軟件開發(fā)人員,因為它允許他們構(gòu)建與 eclipse 環(huán)境無縫集成的工具。由于 eclipse 中的每樣?xùn)|西都是插件,對于給 eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 2.2.1android項目android的四大基本組件:activity(活動),service(服務(wù)),broadcastreceiver(廣播),contentprovider(內(nèi)容提供者),各組件之間要進行切換需要一個意圖或企圖intent類,通過啟動startintent()方法來使各組件進行跳轉(zhuǎn)android的五大布局方式:linearlayout(線
31、性布局) framelayout(幀布局) tablelayout(表格布局) absolutelayout(絕對布局) relativelayout(相對布局)五種布局方式可以相互嵌套,android各種漂亮的界面都是通過嵌套布局而實現(xiàn)的。android的線程,以及線程之間通信的中介:handler類android數(shù)據(jù)庫:在第三章已經(jīng)介紹過了。這里不再介紹android配置文件:androidmanifest.xml及res資源文件中各種屬性 布局方式 引用的資源等android系統(tǒng)將插件adt集成到了eclipse工具上,因此,一個android程序啟動后,系統(tǒng)會啟動一個模擬器(emula
32、tor)(圖2.2),該模擬器是一款手機板的樣式,擁有手機硬件的基本操作。我們也可以將右邊的鍵盤通過代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定,目前最大支持800x600的分辨率。圖 2.2 android模擬器 2.2.2android工程程序結(jié)構(gòu)android工程基本結(jié)構(gòu)目錄包括:src (源代碼)、gen(android系統(tǒng)自動生成的常量)、res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。androidmainfes.xml 是四大組件的驅(qū)動配置文件,有它的存在,android程序的四大組件才可以正常的跳轉(zhuǎn)。android資源的類型和布局(圖2.3)圖 2.3
33、下圖2.2.1 -圖2.2.5為音樂播放器代碼結(jié)構(gòu)和各界面的配置文件,圖像資源等,圖2.2.1 為一個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è)計3.1 功能需求(用列表方式分析) 根據(jù)項目的目標,我們可獲得項目系統(tǒng)的基本需求,以下開始介紹在線音樂客戶端的整體功能需求,并使用列表的方式來描述,我們分成兩部分來概括,即本地
34、音樂的操作和在線音樂部分的操作。3.1.1 本地音樂的基本控制需求用例名稱:播放參與者:用戶目標:使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運行基本事件流:1.用戶單擊“播放”按鈕 2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:暫停參與者:用戶目標:使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫?;臼录鳎?.用戶單擊“播放”按鈕 2.播放器將暫停當(dāng)前的歌曲用例名稱:第一首/最后一首參與者:用戶目標:使得用戶可以從第一首或最后一首歌曲開始聽前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“第一首或最后一首”按鈕 2.播放器將播放第一首或最后一首歌曲用例名稱
35、:上一首/下一首參與者:用戶目標:使得用戶可以聽上一首或下一首歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“上一首或下一首”按鈕 2.播放器將播放上一首或下一首歌曲用例名稱:歌詞歌曲同步參與者:用戶目標:使得用戶可以歌詞跟唱歌曲前置條件:sdcard存入與歌曲匹配的lrc歌詞文件基本事件流:1.用戶點擊想要播放的歌曲 2.播放器顯示所點擊播放歌曲的歌詞用例名稱:快進/快退參與者:用戶目標:使得用戶可以快進或快退歌曲前置條件:歌曲正在播放或暫停基本事件流:1.用戶向前或向后拖動播放進度條 2.播放器將快進或快退歌曲用例名稱:音量控制參與者:用戶目標:使得用戶可以控制歌曲音量前置條件:
36、歌曲正在播放或暫停基本事件流:1.用戶向前或向后拖動音量進度條 2.播放器將調(diào)節(jié)歌曲的音量用例名稱:歌曲列表參與者:用戶目標:使得用戶可以進入播放清單前置條件:程序在運行,播放器正在播放本地歌曲基本事件流:1.用戶單擊手機上的“返回”按鈕 2.播放器進入歌曲列表3.1.2 本地音樂的基本控制需求用例名稱:在線試聽參與者:用戶目標:使得用戶可以感受在線試聽的魅力前置條件:程序運行且手機處于wifi連接的狀態(tài)基本事件流:1.用戶單擊“在線試聽”按鈕 2.播放器進入在線試聽狀態(tài)用例名稱:搜索參與者:用戶目標:使得用戶可以在線試聽搜狗音樂新歌榜top100前置條件:在歌曲名稱和歌手名稱欄中輸入想要試聽
37、的歌曲名稱和歌手名稱基本事件流:1.用戶單擊“搜索”按鈕 2.顯示所獲得的歌曲鏈接用例名稱:播放參與者:用戶目標:使得用戶開始試聽搜索的歌曲前置條件:用戶單擊搜索按鈕后成功獲得歌曲鏈接基本事件流:1.用戶單擊“播放”按鈕 2.播放器進入在線試聽界面用例名稱:快進/快退參與者:用戶目標:使得用戶可以快進或快退歌曲前置條件:歌曲正在播放或暫停基本事件流:1.用戶點擊“快進/快退”按鈕 2.播放器將快進或快退歌曲用例名稱:音量控制參與者:用戶目標:使得用戶可以控制歌曲音量前置條件:歌曲正在播放或暫?;臼录鳎?.用戶向前或向后拖動音量進度條 2.播放器將調(diào)節(jié)歌曲的音量用例名稱:停止參與者:用戶目標
38、:退出在線試聽播放界面前置條件:在線試聽正常運行基本事件流:1.用戶單擊手機的“返回”按鈕 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)功能類別子功能子功能播放列表歌曲列表退出播放播放->進入播放界面本地音樂播放界面播放播放歌曲->線程啟動->時間更新暫停暫停歌曲->線程暫停->時間暫停第一首播放列表索引變化->尋找第一id歌曲最后一首播放列表索引變化->尋找最后一id歌曲快進快進歌曲->線程啟動-&g
39、t;時間更新快退快退歌曲->線程啟動->時間更新音量改變音量->線程啟動->音量更新上一首播放列表索引變化->尋找上一id歌曲下一首播放列表索引變化->尋找下一id歌曲播放界面菜單返回到播放列表退出播放器在線試聽歌曲名稱匹配歌名歌手名稱匹配歌手搜索搜索歌曲->適配器啟動->獲取地址播放播放->進入在線試聽播放界面在線試聽播放界面播放播放歌曲->線程啟動->時間更新暫停暫停歌曲->線程暫停->時間暫停快進快進歌曲->線程啟動->時間更新快退快退歌曲->線程啟動->時間更新音量改變音量->線
40、程啟動->音量更新主菜單退出程序程序退出進入播放列表顯示播放列表表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手機系統(tǒng)要求無響應(yīng)時間為5秒,所以就有如下性能要求:(1) 當(dāng)要求歌曲播放時,程序響應(yīng)時間最長不能超過5秒(2) 當(dāng)要求歌曲暫停時,程序響應(yīng)時間最長不能超過5秒(3) 當(dāng)要求歌曲停止時,程序響應(yīng)時間最長不能超過5秒(4) 當(dāng)要求歌曲上/下一首時,
41、程序響應(yīng)時間最長不能超過5秒(5) 當(dāng)要求進行清單列表時,程序響應(yīng)時間最長不能超過5秒(6) 當(dāng)要求歌曲第一/最后一首時,程序響應(yīng)時間最長不能超過5秒(7) 當(dāng)要求快進/快退時,程序響應(yīng)時間最長不能超過5秒(8) 當(dāng)要求改變音量時,程序響應(yīng)時間最長不能超過5秒3.5 運行環(huán)境需求操作系統(tǒng):android手機基于linux操作系統(tǒng)支持環(huán)境:android 1.5 - 4.2.2版本開發(fā)環(huán)境:eclipse 3.5 adt 0.95 第四章 在線音樂客戶端詳細設(shè)計4.1音樂播放器主界面功能實現(xiàn)4.1.1 播放器主界面播放器主界面(圖4.1)圖 4.1android的每一個可視化界面,都有其的唯一的
42、布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個activity,android工程在每個activity啟動的時候會首先執(zhí)行oncreate()方法,如下代碼:overrideprotected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); this.g
43、etwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.music);該方法主要執(zhí)行界面的初始化操作,activity有個設(shè)置布局的方法:context.setcontentview(layoutresid),參數(shù)為資源id,該id在工程目錄res/layout下,主界面布局文件名為music。下面為music.xml布局文件代碼結(jié)構(gòu)如下:<?xml version="1
44、.0" encoding="utf-8"?><absolutelayout> <linearlayout ></linearlayout> <seekbar></seekbar> <linearlayout></linearlayout></absolutelayout> 在絕對布局<absolutelayout>下嵌套兩種線性布局<linearlayout>和<seekbar>,第一個<linearlayout>實
45、現(xiàn)了標題和歌曲名的顯示位置,通過<absolutelayout>布局設(shè)置<linearlayout>絕對坐標來控制標題的位置。每個布局內(nèi)可以放置多種widget(窗體部件)例如:<textview><imagebutton>等。每個widget內(nèi)有多種屬性,可以設(shè)置該widget的坐標,大小,背景和顏色等參數(shù)。在播放界面中,歌詞顯示為居中,實現(xiàn)方法代碼如下:<linearlayout android:orientation="horizontal"android:gravity="center"and
46、roid:layout_height="wrap_content" android:layout_width="fill_parent"><textview android:layout_height="wrap_content"android:textcolor="#8deeee" android:id="+id/lrctext"android:layout_width="wrap_content"></textview></linear
47、layout>屬性:orientation="horizontal":此線性布局的子部件為水平方式布局layout_width="fill_content" :布局的寬度為填滿父布局layout_height="wrap_content" :布局的高度子由窗體的大小決定 窗體textview 文本 :textcolor="8deeee" 設(shè)置文本顯示的顏色rgb為 "8deeee"textsize為默認大小5.1.2 播放界面音軌的實現(xiàn)播放器音軌seekbar(如下圖)android系統(tǒng)自
48、帶seekbar(如下圖)圖 5.2 不管是從界面外觀還是從功能上,系統(tǒng)自帶的seekbar往往不能滿足用戶的需要。所以我在這里自定義了一個音軌seekbar,在play_rack.xml配置文件中,seekbar的代碼如下:<seekbar android:id="+id/seekbar" android:layout_width="245px"android:layout_height="20px" android:layout_x="40px" android:layout_y="260px&
49、quot;android:progressdrawable="drawable/seekbar_style" android:thumb="drawable/thumb"android:paddingleft="18px" android:paddingright="15px"android:paddingtop="5px" android:paddingbottom="5px" android:progress="0"android:max="
50、100" android:secondaryprogress="0"></seekbar> 上面代碼中有參數(shù)android:thumb="drawable/thumb" 為音軌游標的圖片資源android:progressdrawable="drawable/seekbar_style"為seekbar條的風(fēng)格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.xml是自定義的配置文件,算法如下:<?xml version="1.0&qu
51、ot; encoding="utf-8"?><layer-list xmlns:android="<item android:id="android:id/background"><shape><corners android:radius="5dip" /><gradient android:startcolor="#ff9d9e9d" android:centercolor="#ff5a5d5a" android:centery
52、="0.75" android:endcolor="#ff747674" android:angle="270" /></shape></item><item android:id="android:id/secondaryprogress"><clip><shape><corners android:radius="5dip" /><gradient android:startcolor="#80ff
53、d300" android:centercolor="#80ffb600" android:centery="0.75" android:endcolor="#a0ffcb00" android:angle="270" /></shape></clip></item><item android:id="android:id/progress"><clip><shape><corners android:
54、radius="5dip" /><gradient android:startcolor="#ff0099cc"android:centercolor="#ff3399cc" android:centery="0.75"android:endcolor="#ff6699cc" android:angle="270" /></shape></clip></item></layer-list> 配置文件中三個ite
55、m項依次決定了seekbar的三層背景,從最下層的灰色到最上層的藍色。通過各種屬性設(shè)置了seekbar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標的起始位置。通過這些屬性設(shè)置,就自定義一個如上圖一的seekbar音軌.播放器最重要的一部分就是音軌與歌曲進度同步的實現(xiàn)。音軌設(shè)置了兩個textview用來顯示當(dāng)前歌曲播放的進度時間和歌曲的長度(圖5.3) 圖 5.3 音軌對象seekbar在歌曲剛開始播放的時候調(diào)用方法seekbar.setmax(),參數(shù)傳入歌曲的長度。seekbar.setprogress(1)設(shè)置游標的起始進度為1。然后程序運行如下代碼: private
56、 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的線程
57、的開始是通過handler類來進行的,handler類是線程與線程之間通信的橋梁,實現(xiàn)runnable接口會實現(xiàn)里面的run方法,當(dāng)線程開始的時候,runnable中的run方法會向handler發(fā)一個message消息,這樣,handler類就可以接收到run方法發(fā)送過來的不同的消息進行不同的代碼處理。這樣就達到了各線程之間的通信。要啟動一個線程調(diào)用handler的方法postdelayed(runnable,1000)表示線程睡眠時間是1000ms 。以上代碼意思是讓播放歌曲的線程每隔1000ms,即每1秒對音軌的textview重新設(shè)置時間且讓進度條前進1秒的進度。對音軌進行刷新。這樣就實現(xiàn)了歌詞同步功能seekbar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進度條的監(jiān)聽,當(dāng)我們用鼠標向seekbar的各位置進行點擊時,它會自動監(jiān)聽其位置,進行相應(yīng)的位置顯示。這也是進度條上的游標會不停的移動和歌詞時間會不停的變動的原因。5.1.3 播放器播放、暫停、停止等功能圖 5.4 如圖5.4所示:各按鈕水平放置,用的是布局中的線性布局linearlayout,用方法setorientation(horizontal);將其設(shè)置為水平。linearlayout中依次放置播放,暫停,停止,上、下一曲按鈕屬性。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年武漢車都建設(shè)投資有限公司招聘筆試參考題庫含答案解析
- 2025年度電子產(chǎn)品分期購買與售后服務(wù)合同
- 2025年度人事代理與員工薪酬福利調(diào)整服務(wù)協(xié)議3篇
- 2025年高新技術(shù)企業(yè)授權(quán)合同簽訂委托書規(guī)范3篇
- 2025版新能源汽車租賃與智能交通控制系統(tǒng)合作框架協(xié)議3篇
- 2025年全球及中國垂直旋轉(zhuǎn)模塊行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國TGV玻璃芯基材行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025版城市更新項目土地使用權(quán)作價出資合作協(xié)議3篇
- 二零二五年度成都市二手房交易合同范本 正版官方規(guī)范修訂3篇
- 二零二五年度車隊運輸保險合作協(xié)議3篇
- 小學(xué)六年級數(shù)學(xué)100道題解分數(shù)方程
- 部編版五年級語文下冊第七單元大單元教學(xué)設(shè)計
- 社區(qū)獲得性肺炎護理查房內(nèi)科
- 淺談提高中學(xué)生歷史學(xué)習(xí)興趣的策略
- 藥品儲存養(yǎng)護知識大全
- 新版藥品批發(fā)企業(yè)質(zhì)量管理體系文件大全
- 項目管理實施規(guī)劃-無錫萬象城
- 浙大一院之江院區(qū)就診指南
- 離婚協(xié)議書電子版下載
- 相似三角形判定專項練習(xí)30題(有答案)
- 2023學(xué)年完整公開課版mydreamjob作文教學(xué)
評論
0/150
提交評論