歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

[計算機軟件及應(yīng)用]Android影月播放器

  • 資源ID:28459738       資源大?。?span id="s0eplgg" class="font-tahoma">1.44MB        全文頁數(shù):46頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

[計算機軟件及應(yīng)用]Android影月播放器

鄭州升達(dá)經(jīng)貿(mào)管理學(xué)院學(xué)士學(xué)位論文 第 42 頁鄭州升達(dá)經(jīng)貿(mào)管理學(xué)院學(xué)士學(xué)位論文基于Android平臺的音樂播放器的開發(fā)The Development of Mobile Music Player Based on Android platform system摘 要當(dāng)今社會的生活節(jié)奏越來越快,隨著硬件移動設(shè)備的越來越先進(jìn),人們對移動設(shè)備的要求也越來越高,從以前的追求技術(shù)到現(xiàn)在的追求視覺,因此,也逐步的提高了對系統(tǒng)的要求,本文主要是對Android系統(tǒng)上音樂播放器應(yīng)用程序的設(shè)計與實現(xiàn)進(jìn)行討論。本論文的音樂播放器采用了Android開源系統(tǒng)技術(shù),利用Java語言和Eclipse編輯工具對播放器進(jìn)行編寫,同時給出了詳細(xì)的系統(tǒng)設(shè)計過程、部分界面圖及主要功能運行流程圖,本文還對開發(fā)過程中遇到的問題和解決方法進(jìn)行了詳細(xì)的討論,該音樂播放器集播放、暫停、停止、上一首、下一首、音量調(diào)節(jié)、歌詞顯示等功能于一體,性能良好,在Android系統(tǒng)中能獨立運行。該播放器還擁有對手機文件瀏覽器的訪問功能、歌曲播放模式、以及歌詞開閉狀態(tài)的友好設(shè)置。【關(guān)鍵詞】Android;開源系統(tǒng) Linux;音樂播放器AbstractThe pace of life in todays society, with more advanced 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 realization 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 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 independently 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. 【KeyWords】Android ; open source system ; Linux ; music player目 錄摘 要IAbstractI目 錄II0 引言11 Android項目介紹21.1 Android簡介21.1.1 Android簡介21.1.2 Android Features特性21.1.3 Android基本框架(Android Architecture)31.1.4 Android系統(tǒng)的四大組件41.2 搭建Android開發(fā)環(huán)境51.3 Android 音樂播放器的工程71.3.1 Android項目71.3.2 Android工程程序結(jié)構(gòu)81.3.3 AndroidManifest.xml文件92 系統(tǒng)分析122.1 功能需求122.1.1 播放器的基本控制需求122.1.2 播放清單列表管理需求132.1.3 播放友好性需求132.1.4 播放器擴展卡需求142.1.5 時序圖分析(如圖2-5)162.1.6 系統(tǒng)流程圖(如圖2-6)172.2 系統(tǒng)界面需求182.3 系統(tǒng)性能需求182.4 運行環(huán)境需求183 Android數(shù)據(jù)庫設(shè)計203.1 數(shù)據(jù)庫概念和邏輯設(shè)計203.1.1 總體E-R圖(如圖3-1)203.1.2 數(shù)據(jù)庫邏輯設(shè)計213.2 數(shù)據(jù)庫連接214 系統(tǒng)實現(xiàn)224.1 音樂播放器主界面的實現(xiàn)224.1.1 播放器主界面224.1.2 播放界面音軌的實現(xiàn)264.1.3 播放器播放、暫停、停止等功能實現(xiàn)294.2 播放列表功能304.3 菜單功能324.3.1 菜單界面334.3.2 菜單功能實現(xiàn)344.4 播放設(shè)置界面364.4.1 界面實現(xiàn)(如圖4-10)364.4.2 歌詞顯示實現(xiàn)384.5 手機擴展卡的訪問394.5.1 文件瀏覽器界面394.5.2 文件瀏覽器功能實現(xiàn)414.6 數(shù)據(jù)存儲方式414.6.1 SharedPreferences424.6.2 File存儲方式424.6.3 SQLiteDatabase數(shù)據(jù)庫435 結(jié)論44致 謝45參考文獻(xiàn)460 引言 Android是谷歌于2007年公布的開放式源代碼手機系統(tǒng),它的開放性就優(yōu)于其它封閉式的手機系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關(guān)注這個操作系統(tǒng)。本次作品音樂播放器就是基于Android平臺的。隨著計算機的廣泛運用,手機市場的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已經(jīng)漸漸成為人們生活中必不可少的一部分了。于是各種手機播放器也緊跟著發(fā)展起來,但是很多播放器一味追求外觀花哨,功能龐大,對用戶的手機造成了很多資源浪費,比如CPU,內(nèi)存等的占用率過高,在用戶需要多任務(wù)操作時,受到了不小的影響,帶來了許多不便,而對于大多數(shù)普通用戶,許多功能用不上,形同虛設(shè)。針對以上各種弊端,選擇了開發(fā)多語種的音頻視頻播放器,將各種性能優(yōu)化,繼承播放器的常用功能,滿足一般用戶(如聽歌,看電影)的需求,除了能播放常見格式的語音視頻文件,高級功能:還能播放RMVB格式的視頻文件。此外,還能支持中文、英文等語言界面。要研究了各種市場上流行的手機播放器,了解它們各自的插件及編碼方式,還有各種播放器播放的特別格式文件,分析各種編碼的優(yōu)缺點以及各種播放器本身存在的缺陷和特點,編寫出功能實用,使用方便快捷的播放器。目前已經(jīng)實現(xiàn)的功能有能播放常見音頻文件的功能,如MP3,WAV等,擁有播放菜單,能選擇播放清單,具備一般播放器的功能,如快進(jìn),快退,音量調(diào)節(jié)等。播放模式也比較完善,有單曲,順序,循環(huán),隨機播放等模式。在本論文中第一章介紹了Android項目的運行環(huán)境和Android基本框架,搭建Android環(huán)境,命令行的使用以及音樂播放器項目的工程結(jié)構(gòu)和.xml配置文件的使用與作用;第二章介紹了系統(tǒng)需求分析該播放器的功能、界面、性能、運行環(huán)境以及系統(tǒng)結(jié)構(gòu)圖和流程圖;第三章說明了Android的數(shù)據(jù)庫設(shè)計包括字段設(shè)計以及數(shù)據(jù)庫的創(chuàng)建,操作和連接;第四章具體闡述了音樂播放器的系統(tǒng)功能的詳細(xì)設(shè)計包括主界面(播放界面)功能,菜單功能,播放設(shè)置界面,手機擴展卡以及數(shù)據(jù)存儲方式;第五章結(jié)論了開發(fā)過程、心得體會以及開發(fā)中遇到的問題,解決的方法,最后是個人的開發(fā)小感想。1 Android項目介紹1.1 Android簡介1.1.1 Android簡介Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),早期由Google開發(fā)(在華注冊商標(biāo)名為“安致”),后由開放手機聯(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版本為Android 4.0.3。1.1.2 Android Features特性 Android系統(tǒng)有如下的幾大特性:l 應(yīng)用程序框架 支持組件的重用與替換l Dalvik虛擬機 專門為移動設(shè)備做了優(yōu)化l 內(nèi)部集成瀏覽器 該瀏覽器基于開源的WebKit引擎l 優(yōu)化的圖形庫 包括2D和3D圖形庫,3D圖形庫基于OpenGL ESl SQLite 用作結(jié)構(gòu)化的數(shù)據(jù)存儲l 多媒體支持 包括常見的音頻、視頻和靜態(tài)印象文件格式(如 MPEG4、H.264、MP3、AAC、 AMR、JPG、PNG、 GIF)l GSM電話(依賴于硬件)l 藍(lán)牙Bluetooth,EDGE,3G and WiFi (依賴于硬件)l 照相機,GPS,指南針,和加速度計 (依賴于硬件)l 豐富的開發(fā)環(huán)境 包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件1.1.3 Android基本框架(Android Architecture)Android平臺的基本框架如圖1-1所示。圖1-1 Android基本框架圖(1)ApplicationsApplication Android會同一個核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是用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)組成,包括:l 可擴展的視圖(Views)可以用來建應(yīng)用程序,包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至包括一個可嵌入的web瀏覽器l 內(nèi)容管理器(Content Providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。l 資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layout files)。l 通知管理器(Notification Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。l 活動類管理器(Activity Manager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。(3)Libraries庫Android 包括一個被 Android 系統(tǒng)中各種不同組件所使用的 C/C+ 庫集。該庫通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些主要的核心庫:系統(tǒng) C 庫- 一個從 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 - 對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提供2D和3D圖層的無縫融合。 LibWebCore - 一個最新的web瀏覽器引擎用來支持Android瀏覽器和一個可嵌入的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)用程序都在它自己的進(jìn)程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對于同時高效地運行多個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)存管理機制。(5)Linux內(nèi)核Android 的核心系統(tǒng)服務(wù)依賴于 Linux 2.6 內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。 Linux 內(nèi)核也同時作為硬件和軟件堆棧之間的硬件抽象層。未來發(fā)展老牌智能手機軟件平臺制造商Symbian發(fā)言人則表示:Google的Android只不過是另一個linux,symbian對其它軟件與其形成的競爭并不感到擔(dān)心。除了北美之外,Symbian在其它地區(qū)智能手機市場都占有大部分市場份額。與iPhone相似,Android采用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網(wǎng)功能,用戶能夠在手機上查看電子郵件、搜索網(wǎng)址和觀看視頻節(jié)目等,比iPhone等其他手機更強調(diào)搜索功能,界面更強大,可以說是一種融入全部Web應(yīng)用的單一平臺。1.1.4 Android系統(tǒng)的四大組件在Android系統(tǒng)中,為我們提供了四大基本組件,每個組件是一個視圖,但是有些是可見的,有些是不可見的視圖,像Activity,ContentProvider是可見的視圖,Service和BroadcastReceiver是不可見的,它們只在系統(tǒng)的后臺運行。下面分別介紹四大組件:(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.xml配置文件注冊,通過<service>元素聲明才能使用.Service有自己的生命周期,我們可以調(diào)用startService()啟動一個Service或者bindService()方法來綁定一個存在的Service 。(3)Broadcast Receiver 簡介Broadcast Receiver 顧名思義廣播接收器,它和事件處理機制類似,只不過事件處理機制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機制是系統(tǒng)級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞消息。我們可以在你的應(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。它們被定義在Android.provider包下面。通過這樣定義好的ContentProvider 我們可以方便的進(jìn)行數(shù)據(jù)操作。當(dāng)然我們必須擁有適當(dāng)?shù)臋?quán)限。我們也可以自己來定ContentProvider共享我們的數(shù)據(jù),方便用戶的訪問。1.2 搭建Android開發(fā)環(huán)境任何事物要運行,都要有它的環(huán)境,Android也有它的環(huán)境才能夠運行,下面介紹Android的開發(fā)環(huán)境配置。搭建開發(fā)環(huán)境需要的軟件:1) 操作系統(tǒng):window XP或linux2) 軟件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)3) IDE環(huán)境:Eclipse IDE+ADT Eclipse3.3以上4) JDK:Java Runtime Environment虛擬機 、(JDK)Java Development kit安裝步驟如下:第一步:安裝Java虛擬機sun-java6-jdk版本。第二步:安裝Eclipse3.5工具,到官網(wǎng)http:/www.eclipse.org/downloads/,選擇版本下載后進(jìn)行安裝。(如圖1-2)Eclipse工具的版本如圖1-2所示:圖1-2 Eclipse工具的版本圖第三步:安裝Android SDK:首先要下載SDK,可以在這個網(wǎng)址下載Http:/developer.A ,選擇相應(yīng)的系統(tǒng)進(jìn)行安裝。sdk下載的地址圖如圖1-3所示:圖1-3 sdk下載的地址圖第四步:安裝Android ADT插件。運行Eclipse,選擇help->install new software 選擇add,將會彈出一個【Add Site】對話框?!続dd Site】對話框如圖1-4:圖1-4 【Add Site】對話框圖點擊OK,選擇要安裝的軟件,占next,然后選擇接受協(xié)議,直到安裝成功,重啟Eclipse軟件,設(shè)置Android SDK Home,Window->refrence。設(shè)置Android SDK Home界面如圖1-5所示:圖1-5 設(shè)置Android SDK Home界面圖在SDK location中輸入SDK Tools路D:AndroidsoftwareAndroid-sdk-windows 點擊OK,這樣Android環(huán)境就已經(jīng)搭建成功了。1.3 Android 音樂播放器的工程1.3.1 Android項目Android的四大基本組件:Activity(活動),Service(服務(wù)),BroadcastReceiver(廣播),ContentProvider(內(nèi)容提供者),各組件之間要進(jìn)行切換需要一個意圖或企圖Intent類,通過啟動StartIntent()方法來使各組件進(jìn)行跳轉(zhuǎn)Android的五大布局方式:LinearLayout(線性布局) FrameLayout(幀布局) TableLayout(表格布局) AbsoluteLayout(絕對布局) RelativeLayout(相對布局)五種布局方式可以相互嵌套,Android各種漂亮的界面都是通過嵌套布局而實現(xiàn)的。Android的線程,以及線程之間通信的中介:Handler類Android配置文件:AndroidManifest.Xml及res資源文件中各種屬性布局方式引用的資源等。Android系統(tǒng)將插件ADT集成到了Eclipse工具上,因此,一個Android程序啟動后,系統(tǒng)會啟動一個模擬器(Emulator)(圖1-6),該模擬器是一款手機板的樣式,擁有手機硬件的基本操作。我們也可以將右邊的鍵盤通過代碼屬性設(shè)置將其隱藏,界面的大小可自由設(shè)定,目前最大支持800*600的分辨率。圖1-6 模擬器圖1.3.2 Android工程程序結(jié)構(gòu)Android工程基本結(jié)構(gòu)目錄包括:src (源代碼)、gen(Android系統(tǒng)自動生成的常量)、Res(資源文件):主要存放程序界面的布局配置(.xml)文件和圖片資源。AndroidMainfes.xml 是四大組件的驅(qū)動配置文件,有它的存在,Android程序的四大組件才可以正常的跳轉(zhuǎn)。Android資源的類型和布局(圖1-7)圖1-7 資源類型和布局圖下圖1-8 到圖1-12為音樂播放器代碼結(jié)構(gòu)和各界面的配置文件,圖像資源等,圖1-8 為一個Android工程所必須的結(jié)構(gòu),圖3-9為該播放器的.Java文件,圖1-10為播放器所用到的字符串,字體大小,字的顏色等配置文件,圖1-11為 該播放器的各種界面的布局配置文件,圖1-12為該播放器的圖片資源。圖1-8音樂播放器代碼結(jié)構(gòu)和各界面的配置文件,圖像資源等如圖1-9到圖1-12:圖1-9圖1-10圖1-11圖1-121.3.3 AndroidManifest.xml文件 Android系統(tǒng)的任何一個程序啟動都需要AndroidManifest.xml來啟動程序,任何一個新建的工程目錄都會自動生成一個AndroidManifest.xml文件,此配置文件是整個程序能夠正常運行的核心,它里面包含了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/><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="utf-8"?>。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來自xmlns:Android=http:/schemas.Axmlns(XML namespace)是一個命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個配置文件必須有這個xmlns,否則程序中的所使用的所有資源將無法找到。在application元素我們定義Android:icon="drawable/icon"Android:label="string/app_name",Android:icon是程序在手機中顯示的圖片,我們運用drawable/icon表示了對res/drawable目錄下的icon.png的引用。string/app_name表示了對res/value目錄下string.Xml中定義的app_name參數(shù)的引用。<activity Android:name=".PlayRackActivity"><intent-filter><action Android:name="Android.intent.action.MAIN"/><category Android:name="Android.intent.category.LAUNCHER" /></intent-filter></activity>這是系統(tǒng)確定的首先要啟動的Activity是PlayRackActivity。在intent-filter選項中,有action和category等等屬性,我們需要定義action的值為Android.intent.action.MAIN,category的值為Android.intent.category.LAUNCHER,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動的Activity。當(dāng)我們需要通過一個組件觸發(fā)另一個組件時,我們將設(shè)定action和category的其它屬性值,系統(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="10",則表示此Android工程所用的版本為2.3,Android還有1.1、1.5、1.6、2.0、2.1、2.2、2.3、3.0、4.0這幾個版本。如果我們需要對網(wǎng)絡(luò)進(jìn)行訪問,比如打開一個網(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文件中聲明。四大組件要使用前都需要聲明,其聲明方式如下:<service></service><provider></provider><activity></activity><receiver></receiver>其中聲明provider時還需要聲明其授權(quán) authorities。每個組件里面還有很多的屬性,會根據(jù)程序的具體需要定義不同的屬性。過濾器intent-filter 有兩種啟動方式來啟動界面。1) 顯示方式顯示方式是在代碼中的直接啟動組件,啟動時會聲明Intent,在它的構(gòu)造方法Intent(組件1,組件2)中直接指定一個組件的名字,然后調(diào)用方法startIntent(intent)以啟動指定的組件。2) 隱式方式隱式方式是通過過濾器來過濾完成的,啟動的組件必須滿足action和category的條件才能夠啟動該組件。這些屬性是在AndroidManifest.Xml文件中聲明的。兩種啟動方式都可以通過程序setAction(ACTION常量)和startActivity(intent)或配置文件兩種方式來實現(xiàn)組件的跳轉(zhuǎn)。2 系統(tǒng)分析2.1 功能需求根據(jù)項目的目標(biāo),我們可獲得項目系統(tǒng)的基本需求,以下從不同角度來描述系統(tǒng)的需求,并且使用用例圖來描述,系統(tǒng)的功能需求,我們分成四部分來概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器擴展卡需求。以下分別描述。2.1.1 播放器的基本控制需求播放器基本功能如圖2-1所示:圖2-1 播放器基本功能圖從圖中可以看出,參與者皆是用戶,擁有播放,暫停,上一首,下一首等10個功能,前提都是播放器運行中。2.1.2 播放清單列表管理需求播放清單列表如圖2-2所示:圖2-2 播放器清單列表圖從圖中看出播放列表功能的參與者依然是用戶,這表達(dá)了客戶體驗的要求,當(dāng)用戶選中列表中的一首歌時,會有一個列表選項,具備播放,詳細(xì),加入鈴聲庫,增加(到其他播放列表),移除等7項功能。2.1.3 播放友好性需求播放友好性的需求如圖2-3所示:圖2-3 播放友好性需求圖當(dāng)用戶選擇系統(tǒng)設(shè)定時,有兩項基本功能,播放模式和歌詞顯示。播放模式有常見的單曲循環(huán),順序播放,隨機播放的選項。歌詞顯示具備智能開關(guān)選項。2.1.4 播放器擴展卡需求播放器擴展卡的實現(xiàn)需求如圖2-4所示:圖2-4 播放器擴展卡的實現(xiàn)需求圖用戶在大量瀏覽文件時需要具備文件瀏覽器功能,當(dāng)瀏覽文件時會會出現(xiàn)瀏覽SDcard或System(手機內(nèi)存)選項,其中對.Mp3和.Wav格式的文件需要實現(xiàn)添加功能。2.1.5 時序圖分析(如圖2-5)圖2-5 時序圖音樂播放器具備了播放界面,播放列表,菜單,文件瀏覽,播放設(shè)置五大基本功能,這五大功能相互依賴,并有互相跳轉(zhuǎn),方便用戶進(jìn)行播放的一些需求。2.1.6 系統(tǒng)流程圖(如圖2-6)圖2-6 系統(tǒng)流程圖流程圖能看出整個系統(tǒng)功能的執(zhí)行流程,和邏輯選擇執(zhí)行能力。圖1-7 系統(tǒng)功能結(jié)構(gòu)圖系統(tǒng)功能結(jié)構(gòu)圖顯示了整個系統(tǒng)所有的功能及功能與功能之間的關(guān)系2.2 系統(tǒng)界面需求播放器界面要求布局合理,顏色舒適,控制按鈕友好,要求整體有一個主要的元素標(biāo)準(zhǔn),統(tǒng)一的主題思想,該主題表達(dá)了藍(lán)色年代的回憶2.3 系統(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)要求歌曲上/下一首時,程序響應(yīng)時間最長不能超過5秒5) 當(dāng)要求進(jìn)行清單列表時,程序響應(yīng)時間最長不能超過5秒2.4 運行環(huán)境需求操作系統(tǒng):Android手機基于Linux操作系統(tǒng)支持環(huán)境:Android 1.5 - 2.3.3版本開發(fā)環(huán)境:Eclipse 3.5 ADT 0.953 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ù)獨立性和易擴展性,并且可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇。3.1 數(shù)據(jù)庫概念和邏輯設(shè)計3.1.1 總體E-R圖(如圖3-1)圖 3-1 E-R圖3.1.2 數(shù)據(jù)庫邏輯設(shè)計file_table 主要是保存歌曲名字、類型、路徑字段說明:Id 歌曲id號 fileName 歌曲名字 filePath 歌曲路徑 sort 歌曲類型Android自帶一個MediaStore封閉類專門來存儲媒體信息,通過Uri EXTERNAL_CONTENT_URI 來訪問SDcard中的歌曲詳細(xì)信息。存放媒體信息如TITLE(標(biāo)題)、ARTIST(藝術(shù)家)、ALBUM(專輯)、SIZE(大小 )3.2 數(shù)據(jù)庫連接這里將介紹如何進(jìn)行Android數(shù)據(jù)庫連接,Android中自帶SQLite數(shù)據(jù)庫,這是一個十分小型的數(shù)據(jù)庫,這樣正適合Android這種移動平臺使用。Android數(shù)據(jù)庫存儲的位置在data/data/<項目文件夾>/databases/目錄下 Android是利用ContentProvider作為內(nèi)容提供商,SQLiteOpenHelper數(shù)據(jù)庫幫助類來進(jìn)行對數(shù)據(jù)庫的創(chuàng)建和操作。通過Context.getContentResolver()方法直接對數(shù)據(jù)庫進(jìn)行操作。程序中數(shù)據(jù)庫類為DBHelper extends SQLiteOpenHelper(繼承關(guān)系),內(nèi)容提供類DBProvider extends ContentProvider(繼承關(guān)系)。4 系統(tǒng)實現(xiàn)4.1 音樂播放器主界面的實現(xiàn)4.1.1 播放器主界面播放器主界面的最終效果圖如圖4-1所示。圖4-1 主界面最終效果圖Android的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進(jìn)行讀取。這樣就可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個Activity,Android工程在每個activity啟動的時候會首先執(zhí)行Oncreate()方法,如下代碼:OverridePublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.play_rack);該方法主要執(zhí)行界面的初始化操作,Activity有個設(shè)置布局的方法:Context.setContentView(layoutResID),參數(shù)為資源ID,該Id在工程目錄res/layout下,主界面布局文件名為play_rack。下面為play_rack.xml布局文件代碼結(jié)構(gòu)如下:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout><LinearLayout ></LinearLayou><SeekBar></SeekBar><LinearLayout></LinearLayout></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ù)。在播放界面中,歌詞顯示為居中,實現(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="#8deeee" Android:id="+id/lrcText"Android:layout_width="wrap_content"></TextView></LinearLayout>屬性:orientation="horizontal":此線性布局的子部件為水平方式布局Layout_width="fill_content" :布局的寬度為填滿父布局Layout_height="wrap_content" :布局的高度子由窗體的大小決定 窗體TextView 文本 :textColor="8deeee" 設(shè)置文本顯示的顏色RGB為 "8deeee"TextSize為默認(rèn)大小4.1.2 播放界面音軌的實現(xiàn)播放器音軌SeekBar(如下圖)Android系統(tǒng)自帶SeekBar(如下圖)不管是從界面外觀還是從功能上,系統(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"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="100"Android:secondaryProgress="0"></SeekBar>上面代碼中有參數(shù)Android:thumb="drawable/thumb" 為音軌游標(biāo)的圖片資源Android:progressDrawable="drawable/seekbar_style"為SeekBar條的風(fēng)格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.Xml是自定義的配置文件,算法如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:Android="http:/schemas.A<item Android:id="Android:id/background"><shape><corners Android:radius="5dip" /><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"><clip><shape><corners Android:radius="5dip" /><gradient Android:startColor="#80ffd300"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:radius="5dip" /><gradient Android:startColor="#ff0099CC"Android:centerColor="#ff3399CC"Android:centerY="0.75"Android:endColor="#ff6699CC"Android:angle="270" /></shape></clip></item></layer-list>配置文件中三個Item項依次決定了SeekBar的三層背景,從最下層的灰色到最上層的藍(lán)色。通過各種屬性設(shè)置了SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結(jié)束的顏色,游標(biāo)的起始位置。通過這些屬性設(shè)置,就自定義一個如上圖一的SeekBar音軌.播放器最重要的一部分就是音軌與歌曲進(jìn)度同步的實現(xiàn)。音軌設(shè)置了兩個TextView用來顯示當(dāng)前歌曲播放的進(jìn)度時間和歌曲的長度(圖4-2)圖4-2 進(jìn)度條圖音軌對象SeekBar在歌曲剛開始播放的時候調(diào)用方法SeekBar.setMax(),參數(shù)傳入歌曲的長度。SeekBar.setProgress(1)設(shè)置游標(biāo)的起始進(jìn)度為1。然后程序運行如下代碼:private Runnable thread_One = new Runnable() / 線程public void run() intcurrently_Progress=seekBar.getProgress()+1000; seekBar.setProgress(currently_Progress);currently_Time.setText(getFileTime(mplayer.getCurrentPosition();showLrcTwo(lrc_time, lrc_word);handler.postDelayed(thread_One, 1000);Android的線程的開始是通過Handler類來進(jìn)行的,Handler類是線程與線程之間通信的橋梁,實現(xiàn)Runnable接口會實現(xiàn)里面的run方法,當(dāng)線程開始的時候,Runnable中的run方法會向Handler發(fā)一個Message消息,這樣,Handler類就可以接收到run方法發(fā)送過來的不同的消息進(jìn)行不同的代碼處理。這樣就達(dá)到了各線程之間的通信。要啟動一個線程調(diào)用Handler的方法postDelayed(Runnable,1000)表示線程睡眠時間是1000ms 。以上代碼意思是讓播放歌曲的線程每隔1000ms,即每1秒對音軌的TextView重新設(shè)置時間且讓進(jìn)度條前進(jìn)1秒的進(jìn)度。對音軌進(jìn)行刷新。這樣就實現(xiàn)了歌詞同步功能SeekBar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進(jìn)度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向SeekBar的各位置進(jìn)行點擊時,它會自動監(jiān)聽其位置,進(jìn)行相應(yīng)的位置顯示。這也是進(jìn)度條上的游標(biāo)會不停的移動和歌詞時間會不停的變動的原因。4.1.3 播放器播放、暫停、停止等功能實現(xiàn)功能實現(xiàn)最終效果如圖4-3:圖 4-3 播放實現(xiàn)效果圖 如圖5.4所示:各按鈕水平放置,用的是布局中的線性布局LinearLayout,用方法setOrientation(horizontal);將其設(shè)置為水平。LinearLayout中依次放置播放,暫停,停止,上、下一曲按鈕屬性。配置文件代碼結(jié)構(gòu)如下:<LinearLayout><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton><ImageButton ></ImageButton></LinearLayout>Android的媒體播放原理:Android源程序已經(jīng)為我們封裝好了一個接口類,叫MediaPlayer。該接口在執(zhí)行行需要一個數(shù)據(jù)源,通過如下四個步驟:第一步:MediaPlayer.reset();復(fù)位操作,為以后的媒體準(zhǔn)備播放作準(zhǔn)備。 第二步:傳入歌曲數(shù)據(jù)源,這里也是一個數(shù)據(jù)流 MediaPlayer.setDataSource(String path);參數(shù)需要傳一個路徑,該接口類在收到路徑后將其轉(zhuǎn)化為數(shù)據(jù)源。第三步:準(zhǔn)備播放數(shù)據(jù)源,調(diào)用方法MediaPlayer.Prepare();第四步:MediaPlayer.Start();播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序 有關(guān),需要用MediaPlayer.Stop()方法讓其停止或MediaPlayer.Start();讓其啟動;歌曲數(shù)據(jù)源的獲得:要獲得數(shù)據(jù)源,需要我們提供給接口類一個歌曲存放路徑,而這個路徑已經(jīng)被事先放到數(shù)據(jù)庫里了,我們只需要進(jìn)行數(shù)據(jù)庫進(jìn)行操作。將里面的路徑取出。這里將調(diào)用PlayRackActivity的一個方法query();代碼算法如下:public String query() ContentResolver cr = getContentResolver();Uri uri = DBProvider.CONTENT_URI;String projection = "path" ;String selection = "fileName=?"String selectionArgs = selectName ;Cursor c=cr.query(uri,projection,selection, selectionArgs, null);if (c.moveToFirst() String path = c.getString(0);return path;return null;方法getContentResolver是包Android.content.ContextWrapper里面的方法,它會自動的調(diào)用ContentProvider中的關(guān)聯(lián)數(shù)據(jù)庫,我們需用這個方法就可以操作數(shù)據(jù)庫。數(shù)據(jù)庫操作需要一個Uri 。Uri類似一個網(wǎng)絡(luò)連接的Url。Uri是數(shù)據(jù)庫唯一的標(biāo)識,不同的Uri可以操作不同的數(shù)據(jù)庫表。在查詢數(shù)據(jù)庫時需要傳入一個當(dāng)前播放的歌曲名字,通過歌曲名字來查詢歌曲的路徑。4.2 播放列表功能播放列表界面(如圖4-4)圖 4-4 播放

注意事項

本文([計算機軟件及應(yīng)用]Android影月播放器)為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!