基于Android手機平臺的音樂播放器策劃書_第1頁
基于Android手機平臺的音樂播放器策劃書_第2頁
基于Android手機平臺的音樂播放器策劃書_第3頁
基于Android手機平臺的音樂播放器策劃書_第4頁
基于Android手機平臺的音樂播放器策劃書_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于android手機平臺的音樂播放器目錄第一章 引 言61.1 項目背景61.2 編寫目的71.3 參考資料7第二章 系統(tǒng)需求分析72.1 功能需求(用例圖分析)72.1.1 播放器的基本控制需求82.1.2 播放清單列表管理需求92.1.3 播放友好性需求112.1.4 播放器擴展卡需求132.1.5 功能需求(時序圖)分析142.2 系統(tǒng)結(jié)構(gòu)圖和流程圖142.3 系統(tǒng)界面需求162.4 系統(tǒng)性能需求172.5 運行環(huán)境需求17第三章 android數(shù)據(jù)庫設(shè)計183.1 數(shù)據(jù)庫及字段屬性設(shè)計183.1.1 字段設(shè)計(表、圖)183.1.2 音樂播放器e-r圖203.2 數(shù)據(jù)庫連接203.2

2、.1 創(chuàng)建數(shù)據(jù)庫203.2.2 操作數(shù)據(jù)庫213.2.3 數(shù)據(jù)顯示223.4 android 音樂播放器的工程314.4.1 android項目314.4.2 android工程程序結(jié)構(gòu)324.4.3 androidmanifest.xml文件34第四章 播放器系統(tǒng)功能詳細(xì)設(shè)計364.1音樂播放器主界面功能實現(xiàn)364.1.1 播放器主界面364.1.2 播放界面音軌的實現(xiàn)374.1.3 播放器播放、暫停、停止等功能404.2 播放列表功能414.3 菜單功能435.3.1 菜單界面445.3.2 菜單功能實現(xiàn)454.4 播放設(shè)置界面465.4.1 界面實現(xiàn)465.4.2 歌詞顯示實現(xiàn)484.5

3、 手機擴展卡的訪問505.5.1 文件瀏覽器界面505.5.2 文件瀏覽器功能實現(xiàn)514.6 數(shù)據(jù)存儲方式525.6.1 sharedpreferences525.6.2 file存儲方式535.6.3 sqlitedatabase數(shù)據(jù)庫53第五章 結(jié) 論55摘 要 當(dāng)今社會的生活節(jié)奏越來越快+android系統(tǒng)上一的款音樂播放器應(yīng)用程序的設(shè)計與實現(xiàn)進行討論。android是一個開源的系統(tǒng),它底層是基于linux的操作系統(tǒng),本論文的音樂播放器采用了android開源系統(tǒng)技術(shù),利用java語言和eclipse編輯工具對播放器進行編寫。同時給出了詳細(xì)的系統(tǒng)設(shè)計過程、部分界面圖及主要功能運行流程圖,

4、本文還對高度過程中遇到的問題和解決方法進行了詳細(xì)的討論,該音樂播放器集播放、暫停、停止、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在android系統(tǒng)中能獨立運行。該播放器還擁有對手機文件瀏覽器的訪問功能、歌曲播放模式、以及歌詞開閉狀態(tài)的友好設(shè)置.mp3的全名是mpeg audio layer-3,是一種聲音文件的壓縮格式,由于本播放器只限于應(yīng)用層程序的探討,所以對具體的壓縮算法不作深究。關(guān)鍵詞:android ; 開源系統(tǒng) ; windows ; 音樂播放器abstractthe pace of life in today's society, with more a

5、dvanced hardware mobile devices for mobile devices, people more and more is also high, the requirements from the previous pursuit to pursue the visual technology, therefore, also gradually improve the system requirements, the paper mainly is to take on a music player from system design and realizati

6、on of the application is discussed. take the system is an open source, it is based on the operating system, use the linux music player of the android open-source system technology, using the java language and editing tools for players to eclipse. presents the detailed design process, the part of the

7、 system and the main functions of operation interface diagram of height, this paper also flow process problems and solving methods are discussed in detail, and the music player episode, pause, stop and a, next, volume adjustment, lyrics display functions, such as performance is good, can operate ind

8、ependently in the android system. this player has access to the file browser phone functions, songs and played pattern, open and close condition of friendly words. mp3 audio mpeg layer - name is 3, is a kind of sound files compressed format, because the players to explore, so the application procedu

9、re for specific compression algorithm not probekeywords:android ; open source system ; windows ; music player47第一章 引 言1.1 項目背景 當(dāng)今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場發(fā)展迅速,使得手機操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場上主要有三個手機操作系統(tǒng),windows mobile,symbian,以及谷歌的android操作系統(tǒng),其中占有開放源代碼優(yōu)勢的android系統(tǒng)有最大的發(fā)展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢?能的,谷歌

10、android系統(tǒng)就能做到。本文的音樂播放器就是基于谷歌android手機平臺的播放器。 android:是谷歌于2007年公布的開放式源代碼手機系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關(guān)注這個操作系統(tǒng)。本次作品音樂播放器就是基于android平臺的。 隨著計算機的廣泛運用,手機市場的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發(fā)展起來,但是很多播放器一味追求外觀花哨,功能龐大,對用戶的手機造成了很多資源浪費,比如cpu,

11、內(nèi)存等的占用率過高,在用戶需要多任務(wù)操作時,受到了不小的影響,帶來了許多不便,而對于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對以上各種弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶(如聽歌,看電影)的需求,除了能播放常見格式的語音視頻文件,高級功能:還能播放rmvb格式的視頻文件。此外,還能支持中文、英文等語言界面。 要研究了各種市場上流行的手機播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點以及各種播放器本身存在的缺陷和特點,編寫出功能實用,使用方便快捷的播放器。目前已經(jīng)實現(xiàn)的功能有能播放常見音頻文件

12、的功能,如mp3,wav,等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進,快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機播放等模式。1.2 編寫目的 現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器,本設(shè)計 的實現(xiàn)的這主要功能是播放mp3,wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,上一曲,下一曲,音量調(diào)節(jié),視覺外觀,播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡明,操作簡單。 本項目是一款基于android手機平臺的音樂播放器,使android手機擁有個性的多媒體播放器,使手

13、機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設(shè)計者更加熟練android的技術(shù)和其它在市場上的特點第二章 系統(tǒng)需求分析2.1 功能需求(用例圖分析) 根據(jù)項目的目標(biāo),我們可獲得項目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴展卡需求。以下分別描述:2.1.1 播放器的基本控制需求圖2.1 播放器基本控制圖用例名稱:播放參與者:用戶目標(biāo):使得用戶可以播放在播放列表中選中的歌曲前置條件:播放器正在運行基本事

14、件流:1.用戶單擊“播放”按鈕 2.播放器將播放列表中的當(dāng)前的歌曲用例名稱:暫停參與者:用戶目標(biāo):使得用戶可以暫停正在播放的歌曲前置條件:歌曲正在播放且未停止和暫?;臼录鳎?.用戶單擊“暫停”按鈕 2.播放器將暫停當(dāng)前的歌曲用例名稱:停止參與者:用戶目標(biāo):使得用戶可以停止正在播放的歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“停止”按鈕 2.播放器將停止當(dāng)前播放的歌曲用例名稱:上一首/下一首參與者:用戶目標(biāo):使得用戶可以聽上一首或下一首歌曲前置條件:歌曲正在播放或暫?;臼录鳎?.用戶單擊“上一首或下一首”按鈕 2.播放器將播放上一首或下一首歌曲用例名稱:播放清單參與者:用戶

15、目標(biāo):使得用戶可以進入播放清單前置條件:程序在運行基本事件流:1.用戶單擊“清單”按鈕 2.播放器進入清單列表2.1.2 播放清單列表管理需求 當(dāng)用戶選中列表中某一項歌曲,就有的需求:圖2.2 播放器清單用例名稱:播放參與者:用戶目標(biāo):使得程序播放選中的歌曲前置條件:程序運行在播放菜單選項中基本事件流:1.用戶單擊“播放”按鈕 2.播放器進入播放狀態(tài)用例名稱:詳細(xì)參與者:用戶目標(biāo):使得程序顯示歌曲詳情前置條件:程序運行在播放菜單選項中基本事件流:1.用戶單擊“詳細(xì)”按鈕 2.顯示歌曲詳細(xì)狀態(tài)用例名稱:增加參與者:用戶目標(biāo):使得程序進入手機擴展sd卡前置條件:程序運行在播放菜單選項中基本事件流:

16、1.用戶單擊“增加”按鈕 2.播放器進入手機擴展sd卡用例名稱:移除/全部移除參與者:用戶目標(biāo):使選中的歌曲被移除前置條件:程序運行在播放菜單選項中基本事件流:1.用戶單擊“移除/全部移除”按鈕 2.播放器移除選中歌曲/全部移除歌曲用例名稱:設(shè)定參與者:用戶目標(biāo):使得程序進入播放器設(shè)定狀態(tài)前置條件:程序運行在播放菜單選項中基本事件流:1.用戶單擊“設(shè)定”按鈕 2.播放器進入設(shè)定界面2.1.3 播放友好性需求圖2.3 播放器設(shè)定用例名稱:播放模式參與者:用戶目標(biāo):使得程序進入播放模式設(shè)定狀態(tài)前置條件:程序運行在播放器設(shè)定界面中基本事件流:1.用戶單擊“順序、隨機、單曲”按鈕 2.播放器進入選中模

17、式播放狀態(tài)用例名稱:歌詞顯示參與者:用戶目標(biāo):使得程序進入播放器歌詞設(shè)置狀態(tài)前置條件:程序運行在播設(shè)定界面基本事件流:1.用戶單擊“歌詞開關(guān)按鈕”按鈕 2.播放器顯示或關(guān)閉歌詞2.1.4 播放器擴展卡需求圖2.4 文件瀏覽器用例名稱:sdcard參與者:用戶目標(biāo):使得程序進入sdcard目錄前置條件:程序運行目錄界面基本事件流:1.用戶單擊“sdcard”選項 2.程序進入sdcard目錄下用例名稱:system參與者:用戶目標(biāo):使得程序進入system目錄前置條件:程序運行目錄界面基本事件流:1.用戶單擊“system”選項 2.程序進入system目錄下2.1.5 功能需求(時序圖)分析音

18、樂播放器的時序圖分析如(圖)2.2 系統(tǒng)結(jié)構(gòu)圖和流程圖(1)音樂播放器的系統(tǒng)流程圖(圖2.5.1)圖2.5.1 流程圖(2)系統(tǒng)功能表(表2.1)和系統(tǒng)功能結(jié)構(gòu)圖(圖2.5.2)功能類別子功能子功能播放列表播放列表菜單退出播放從擴展卡尋找歌曲歌曲菜單播放->進入播放界面刪除->數(shù)據(jù)庫同步更新重命名->數(shù)據(jù)庫同步更新向上、下移動->數(shù)據(jù)庫同步更新播放界面播放播放歌曲->線程啟動->時間更新暫停暫停歌曲->線程暫停->時間暫停停止停止歌曲->線程停止->時間停止上一首播放列表索引變化->尋找上一id歌曲下一首播放列表索引變化->

19、;尋找下一id歌曲播放界面菜單返回到播放列表返回到主菜單從擴展卡尋找歌曲退出播放器隱藏播放界面主菜單退出程序程序退出進入播放列表顯示播放列表表2.1 功能表圖2.5.2 系統(tǒng)功能結(jié)構(gòu)圖2.3 系統(tǒng)界面需求 播放器界面要求布局合理,顏色舒適,控制按鈕友好。圖2.6 播放器界面 說明:左下角為清單按鈕 右下角為程序退出按鈕 藍(lán)色條為音軌 2.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)要

20、求歌曲上/下一首時,程序響應(yīng)時間最長不能超過5秒(5)當(dāng)要求進行清單列表時,程序響應(yīng)時間最長不能超過5秒2.5 運行環(huán)境需求操作系統(tǒng):android手機基于windows操作系統(tǒng)支持環(huán)境:android 2.3 4.0版本開發(fā)環(huán)境:eclipse 3.5 adt 0.95 第三章 android數(shù)據(jù)庫設(shè)計 數(shù)據(jù)結(jié)構(gòu)組織和數(shù)據(jù)庫文件設(shè)計要根據(jù)不同用途,使用要求等,來決定數(shù)據(jù)的整體組織形式等一系列問題。數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個倉庫是在計算機存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復(fù)度、較高的數(shù)據(jù)獨立性和易擴展性,并且

21、可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇3.1 數(shù)據(jù)庫及字段屬性設(shè)計3.1.1 字段設(shè)計(表、圖)file_table 主要是保存歌曲名字、類型、路徑字段說明:id 歌曲id號 filename 歌曲名字 filepath 歌曲路徑 sort 歌曲類型(表3.1、圖3.1.1) android自帶一個mediastore封閉類 專門來存儲媒體信息通過uri external_content_uri 來訪問sdcard中的歌曲詳細(xì)信息。存放媒體信息如title(標(biāo)題)、artist(藝術(shù)

22、家)、album(專輯)、size(大小 )(表3.2、圖3.1.2)屬性數(shù)據(jù)類型允許空主鍵_idintegernot nullprimary keyfilenametextnot nullfilepathtextsortinteger表3.1屬性數(shù)據(jù)類型允許空主鍵_idintegernot nullprimary keytitletextnot nullartisttextalbumtextsizelong表3.2圖3.1.1 歌曲列表圖3.1.2 歌曲詳細(xì)3.1.2 音樂播放器e-r圖音樂播放器 e-r(實體-聯(lián)系:entity-relation圖)圖(圖3.1.3)圖3.1.3 e-r圖

23、3.2 數(shù)據(jù)庫連接 這里將介紹如何進行android數(shù)據(jù)庫連接,android中自帶sqlite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合android這種移動平臺使用。android數(shù)據(jù)庫存儲的位置在data/data/<項目文件夾>/databases/目錄下 android是利用contentprovider作為內(nèi)容提供商,sqliteopenhelper數(shù)據(jù)庫幫助類來進行對數(shù)據(jù)庫的創(chuàng)建和操作。通過context.getcontentresolver()方法直接對數(shù)據(jù)庫進行操作。程序中數(shù)據(jù)庫類為dbhelper extends sqliteopenhelper(繼承關(guān)系),

24、內(nèi)容提供類dbprovider extends contentprovider(繼承關(guān)系)3.2.1 創(chuàng)建數(shù)據(jù)庫 android 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫創(chuàng)建方式。繼承sqliteopenhelper ,實現(xiàn)oncreate 和 onupgrade 兩個方法,有個好處就是便于數(shù)據(jù)庫版本的升級,連接數(shù)據(jù)庫的算法如下:public dbhelper(context context) / 創(chuàng)建數(shù)據(jù)庫super(context, database_name,null, database_version);public void oncreate(sqlitedatabase db) / 創(chuàng)建時調(diào)用 db.e

25、xecsql(database_create);public void onupgrade(sqlitedatabase db, int oldversion, int newversion) / 版本更新時調(diào)用db.execsql("drop table if exists file_table");oncreate(db); override / 在contextprovider運行時自動創(chuàng)建數(shù)據(jù)庫 public boolean oncreate() dbopenhelper= new dbhelper(getcontext(); return true;數(shù)據(jù)庫如果創(chuàng)建

26、不成功則拋出filenotfoundexception異常3.2.2 操作數(shù)據(jù)庫 android對數(shù)據(jù)庫的操作主要有插入、刪除、更新、查詢操作,在進行任何操作時都必須指定一個uri,才能對相應(yīng)的表進行數(shù)據(jù)操作。/數(shù)據(jù)庫刪除操作overridepublic int delete(uri arg0, string arg1, string arg2) sqlitedatabase db = dbopenhelper.getwritabledatabase();try db.delete(filecolumn.table, arg1, arg2); catch (exception ex) ex.p

27、rintstacktrace();return 1;override/數(shù)據(jù)庫插入操作public uri insert(uri uri, contentvalues values) sqlitedatabase db = dbopenhelper.getwritabledatabase();long count = 0;try count = db.insert(filecolumn.table, null, values); catch (exception ex) ex.printstacktrace(); if (count > 0) return uri;else return

28、null;/ 數(shù)據(jù)庫更新操作overridepublic int update(uri uri, contentvalues values, string selection,string selectionargs) sqlitedatabase db = dbopenhelper.getwritabledatabase();int i = 0;try i = db.update(filecolumn.table, values, selection, null);return i; catch (exception ex) return 0;3.2.3 數(shù)據(jù)顯示程序是利用cursor游標(biāo)類

29、指向數(shù)據(jù)表中的某一項,然后進行查詢數(shù)據(jù),用log日志顯示出來override/數(shù)據(jù)庫查詢操作public cursor query(uri uri, string projection, string selection,string selectionargs, string sortorder) sqlitedatabase db = dbopenhelper.getwritabledatabase();/ 依次參數(shù)為:表名,查詢字段,where語句,替換,group by(分組),having(分組條件),order by(排序)cursor cur = db.query(filecol

30、umn.table, projection, selection,selectionargs, null, null, sortorder);return cur;3.4 android 音樂播放器的工程3.4.1 android項目android的四大基本組件:activity(活動),service(服務(wù)),broadcastreceiver(廣播),contentprovider(內(nèi)容提供者),各組件之間要進行切換需要一個意圖或企圖intent類,通過啟動startintent()方法來使各組件進行跳轉(zhuǎn)android的五大布局方式:linearlayout(線性布局) framelayo

31、ut(幀布局) 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)會啟動一個模擬器(emulator)(圖4.7),該模擬

32、器是一款手機板的樣式,擁有手機硬件的基本操作。我們也可以將右邊的鍵盤通過代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定,目前最大支持800x600的分辨率。圖 4.7 android模擬器4.4.2 android工程程序結(jié)構(gòu)android工程基本結(jié)構(gòu)目錄包括:src (源代碼)、gen(android系統(tǒng)自動生成的常量)、res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。androidmainfes.xml 是四大組件的驅(qū)動配置文件,有它的存在,android程序的四大組件才可以正常的跳轉(zhuǎn)。android資源的類型和布局(圖4.7)圖 4.7 下圖4.8.1 -圖4.8.

33、5為音樂播放器代碼結(jié)構(gòu)和各界面的配置文件,圖像資源等,圖4.8.1 為一個android工程所必須的結(jié)構(gòu),圖4.8.2為該播放器的.java文件,圖4.8.3為播放器所用到的字符串,字體大小,字的顏色等配置文件,圖4.8.4為 該播放器的各種界面的布局配置文件,圖4.8.5為該播放器的圖片資源。圖 4.8.1 圖 4.8.2 圖 4.8.3 圖 4.8.4 圖 4.8.5 4.4.3 androidmanifest.xml文件 android系統(tǒng)的任何一個程序啟動都需要androidmanifest.xml來啟動程序,任何一個新建的工程目錄都會自動生成一個androidmanifest.xml

34、文件,此配置文件是整個程序能夠正常運行的核心,它里面包含了android sdk的版本,程序運行的默認(rèn)activity,當(dāng)程序中的任何一個組件觸發(fā)事件后,系統(tǒng)都會自動的去androidmanifest.xml中尋找標(biāo)識來作出相應(yīng)的操作。任何一個androidmanifest.xml文件的格式都應(yīng)為:<?xml version="1.0" encoding="utf-8"?><manifest ><application ><activity ><intent-filter><action/

35、><category/></intent-filter></activity></application><uses-sdk /><uses-permission /></manifest> android系統(tǒng)有一個編碼的規(guī)定,支持的編碼是"utf-8",當(dāng)程序中出現(xiàn)亂碼是,我們須將其編碼格式轉(zhuǎn)化為"utf-8".在 androidmanifest.xml中會在第一行聲明一句:<?xml version="1.0" encoding=&qu

36、ot;utf-8"?>。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來自xmlns:android="xmlns(xml namespace)是一個命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個配置文件必須有這個xmlns,否則程序中的所使用的所有資源將無法找到。在application元素我們定義android:icon="drawable/icon"android:label="string/app_name",android:icon是程序在手機中顯示的圖片,我們運用drawable/

37、icon表示了對res/drawable目錄下的icon.png的引用。string/app_name表示了對res/value目錄下string.xml中定義的app_name參數(shù)的引用。 <activity android:name=".playrackactivity"><intent-filter><action android:name="ent.action.main"/> <category android:name="ent.category.

38、launcher" /></intent-filter></activity>這是系統(tǒng)確定的首先要啟動的activity是playrackactivity。在intent-filter選項中,有action和category等等屬性,我們需要定義action的值為ent.action.main,category的值為ent.category.launcher,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動的activity。當(dāng)我們需要通過一個組件觸發(fā)另一個組件時,我們將設(shè)定action和catego

39、ry的其它屬性值,系統(tǒng)會根據(jù)我們設(shè)定的屬性值去androidmanifest.xml的application 中尋找標(biāo)識,任何一個activity的action和category是唯一,所以程序在任何時候都能唯一啟動一個activity,這樣,不同的activity之間的跳轉(zhuǎn)就實現(xiàn)了。在androidmanifest.xml中有一個根結(jié)點<uses-sdk>,它是我們需要定義的adt版本,例如我們將其值設(shè)定為android:minsdkversion="4",則表示此android工程所用的版本為1.6,android還有1.1、1.5、1.6、2.0、2.1這

40、幾個版本。如果我們需要對網(wǎng)絡(luò)進行訪問,比如打開一個網(wǎng)頁,剛我還需要設(shè)置一個網(wǎng)絡(luò)訪問權(quán)限uses-permission,將其的值設(shè)置為android:name="android.permission.internet,我們就可以訪問網(wǎng)絡(luò)了。當(dāng)然uses-permission還有很多其它的權(quán)限,例如gps定位權(quán)限,瀏覽器數(shù)據(jù)存取權(quán)限com.android.browser.permission.read_history_bookmarks等等。當(dāng)程序的任何一個組件要用到時,都必須在androidmanifest.xml文件中聲明。四大組件要使用前都需要聲明,其聲明方式如下:<serv

41、ice></service><provider></provider><activity></activity><receiver></receiver>其中聲明provider時還需要聲明其授權(quán) authorities。每個組件里面還有很多的屬性,會根據(jù)程序的具體需要定義不同的屬性。過濾器intent-filter 有兩種啟動方式來啟動界面:(1) 顯示方式 顯示方式是在代碼中的直接啟動組件,啟動時會聲明intent,在它的構(gòu)造方法intent(組件1,組件2)中直接指定一個組件的名字,然后調(diào)用方法st

42、artintent(intent)以啟動指定的組件。(2) 隱式方式隱式方式是通過過濾器來過濾完成的,啟動的組件必須滿足action和category的條件才能夠啟動該組件。這些屬性是在androidmanifest.xml文件中聲明的。兩種啟動方式都可以通過程序setaction(action常量)和startactivity(intent)或配置文件兩種方式來實現(xiàn)組件的跳轉(zhuǎn)。第四章 播放器系統(tǒng)功能詳細(xì)設(shè)計4.1音樂播放器主界面功能實現(xiàn)4.1.1 播放器主界面播放器主界面(圖5.1)圖 5.1android的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文

43、件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個activity,android工程在每個activity啟動的時候會首先執(zhí)行oncreate()方法,如下代碼:overridepublic void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate);setcontentview(r.layout.play_rack);該方法主要執(zhí)行界面的初始化操作,activity有個設(shè)置布局的方法:context.setcon

44、tentview(layoutresid),參數(shù)為資源id,該id在工程目錄res/layout下,主界面布局文件名為play_rack。下面為play_rack.xml布局文件代碼結(jié)構(gòu)如下:<?xml version="1.0" encoding="utf-8"?><absolutelayout> <linearlayout ></linearlayout> <seekbar></seekbar> <linearlayout></linearlayout>&

45、lt;/absolutelayout> 在絕對布局<absolutelayout>下嵌套兩種線性布局<linearlayout>和<seekbar>,第一個<linearlayout>實現(xiàn)了標(biāo)題和歌曲名的顯示位置,通過<absolutelayout>布局設(shè)置<linearlayout>絕對坐標(biāo)來控制標(biāo)題的位置。每個布局內(nèi)可以放置多種widget(窗體部件)例如:<textview><imagebutton>等。每個widget內(nèi)有多種屬性,可以設(shè)置該widget的坐標(biāo),大小,背景和顏色等參數(shù)。

46、在播放界面中,歌詞顯示為居中,實現(xiàn)方法代碼如下:<linearlayout android:orientation="horizontal"android:gravity="center"android:layout_height="wrap_content" android:layout_width="fill_parent"><textview android:layout_height="wrap_content"android:textcolor="#8dee

47、ee" android:id="+id/lrctext"android:layout_width="wrap_content"></textview></linearlayout>屬性:orientation="horizontal":此線性布局的子部件為水平方式布局layout_width="fill_content" :布局的寬度為填滿父布局layout_height="wrap_content" :布局的高度子由窗體的大小決定 窗體textview

48、文本 :textcolor="8deeee" 設(shè)置文本顯示的顏色rgb為 "8deeee"textsize為默認(rèn)大小4.1.2 播放界面音軌的實現(xiàn)播放器音軌seekbar(如下圖)android系統(tǒng)自帶seekbar(如下圖)圖 5.2 不管是從界面外觀還是從功能上,系統(tǒng)自帶的seekbar往往不能滿足用戶的需要。所以我在這里自定義了一個音軌seekbar,在play_rack.xml配置文件中,seekbar的代碼如下:<seekbar android:id="+id/seekbar" android:layout_width

49、="245px"android:layout_height="20px" android:layout_x="40px" android:layout_y="260px"android:progressdrawable="drawable/seekbar_style" android:thumb="drawable/thumb"android:paddingleft="18px" android:paddingright="15px"a

50、ndroid:paddingtop="5px" android:paddingbottom="5px" android:progress="0"android:max="100" android:secondaryprogress="0"></seekbar> 上面代碼中有參數(shù)android:thumb="drawable/thumb" 為音軌游標(biāo)的圖片資源android:progressdrawable="drawable/seekbar_sty

51、le"為seekbar條的風(fēng)格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.xml是自定義的配置文件,算法如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="<item android:id="android:id/background"><shape><corners android:radius="5dip&qu

52、ot; /><gradient android:startcolor="#ff9d9e9d" android:centercolor="#ff5a5d5a" android:centery="0.75" android:endcolor="#ff747674" android:angle="270" /></shape></item><item android:id="android:id/secondaryprogress"&

53、gt;<clip><shape><corners android:radius="5dip" /><gradient android:startcolor="#80ffd300" android:centercolor="#80ffb600" android:centery="0.75" android:endcolor="#a0ffcb00" android:angle="270" /></shape></c

54、lip></item><item android:id="android:id/progress"><clip><shape><corners android:radius="5dip" /><gradient android:startcolor="#ff0099cc"android:centercolor="#ff3399cc" android:centery="0.75"android:endcolor="#

55、ff6699cc" android:angle="270" /></shape></clip></item></layer-list> 配置文件中三個item項依次決定了seekbar的三層背景,從最下層的灰色到最上層的藍(lán)色。通過各種屬性設(shè)置了seekbar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。通過這些屬性設(shè)置,就自定義一個如上圖一的seekbar音軌.播放器最重要的一部分就是音軌與歌曲進度同步的實現(xiàn)。音軌設(shè)置了兩個textview用來顯示當(dāng)前歌曲播放的進度時間和歌曲的長

56、度(圖5.3) 圖 5.3 音軌對象seekbar在歌曲剛開始播放的時候調(diào)用方法seekbar.setmax(),參數(shù)傳入歌曲的長度。seekbar.setprogress(1)設(shè)置游標(biāo)的起始進度為1。然后程序運行如下代碼: private runnable thread_one = new runnable() / 線程public void run() int currently_progress = seekbar.getprogress() + 1000; seekbar.setprogress(currently_progress);currently_time.settext(ge

57、tfiletime(mplayer.getcurrentposit ion();showlrctwo(lrc_time, lrc_word);handler.postdelayed(thread_one, 1000); android的線程的開始是通過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)我們用鼠標(biāo)向seekbar的各位置進行點擊時,它會自動監(jiān)聽其位置,進行相應(yīng)的位置顯示。這也是進度條上的游標(biāo)會不停的移動和歌詞時間會不停的變動的原因。4.1.3 播放器播放、暫停、停止等功能圖 5.4 如圖5.4所

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論