本科畢設論文-基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)_第1頁
本科畢設論文-基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)_第2頁
本科畢設論文-基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)_第3頁
本科畢設論文-基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)_第4頁
本科畢設論文-基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于Android平臺的點歌系統(tǒng)設計與實現(xiàn)摘 要隨著通信設備網(wǎng)絡和計算機科學的不斷發(fā)展,新一代的移動終端用戶對移動設備的功能和性能有了更高的要求。因此,在移動終端開發(fā)出功能強大以及界面美觀操作簡易的手機應用程序具有廣闊的市場前景。本文設計的點歌系統(tǒng)是基于Android平臺而設計的,Android平臺是目前發(fā)展最快、最具市場前景的智能手機操作系統(tǒng)。Android平臺以Linux系統(tǒng)作為平臺的基礎,使用Linux內(nèi)核可以加快軟件移植速度。目前適用于桌面操作系統(tǒng)的點歌系統(tǒng)發(fā)展較快,通常具有強大的音樂點播功能和友好的用戶界面。而手機音樂點播器,由于其應用的特殊性,使其開發(fā)難度有所增加。 本文介紹了基于

2、Android平臺應用程序開發(fā)的關鍵技術,對點歌系統(tǒng)做了詳細的需求分析,并詳細介紹了點歌系統(tǒng)的總體設計,包括架構設計、功能模塊的劃分、配置文件AndroidManifest.xml的設計。 本文通過對基于Android平臺上點歌系統(tǒng)開發(fā)與實現(xiàn)的介紹,希望能為今后開發(fā)出功能更強大的移動設備多媒體播放軟件提供有益的借鑒。該系統(tǒng)采用Android SDK,Eclipse作為開發(fā)工具。關鍵詞:Android;點歌系統(tǒng);音樂播放器摘要IAbstractII1緒論11.1課題背景11.2國內(nèi)外手機操作系統(tǒng)應用開發(fā)情況11.3本文主要工作22 Android系統(tǒng)簡介32.1 Android系統(tǒng)概述32.2

3、Android系統(tǒng)架構42.3 Android開發(fā)環(huán)境配置62.4 Android程序開發(fā)92.4.1 程序開發(fā)組件92.4.2 程序界面開發(fā)122.5 Android系統(tǒng)數(shù)據(jù)存儲方式143 SQLite數(shù)據(jù)庫143.1 SQLite主要語法153.1.1 結構新建153.1.2 結構刪除153.1.3 數(shù)據(jù)操作153.1.4 事務處理163.2 SQLite內(nèi)置函數(shù)163.3 SQLite常用操作173.3.1 數(shù)據(jù)庫文件的打開和關閉173.3.2 數(shù)據(jù)庫文件的查詢184點歌系統(tǒng)的設計與實現(xiàn)214.1 系統(tǒng)功能設計224.1.1 數(shù)據(jù)庫設計224.1.2 功能模塊設計224.2 程序運行截圖

4、285 總結與展望28參考文獻30致謝301緒論1.1課題背景 隨著社會的發(fā)展,經(jīng)濟水平的提高,手機越來越普及。據(jù)工信部統(tǒng)計數(shù)據(jù),2014年一月底中國移動通訊用戶達12.35億,其中4.19億(33.94%)為3G用戶,8.38億(67.80%)為移動互聯(lián)網(wǎng)接入用戶。同時伴隨著移動互聯(lián)網(wǎng)技術的發(fā)展,手機的功能也變得越來越豐富。從原來只具有簡單通信功能的非智能手機到現(xiàn)在具有手機操作系統(tǒng),除通話功能以外,還集上網(wǎng)、聊天、炒股、收發(fā)郵件等功能于一身的智能手機系統(tǒng)?;贏ndroid平臺應用程序的開發(fā)就更加具有市場價值智能手機具有五大特點:具有開放的操作系統(tǒng),可以自由安裝第三方應用,使系統(tǒng)功能得到無限

5、擴展;具有無線接入互聯(lián)網(wǎng)的能力,即在GSM網(wǎng)絡中需要支持GPRS,在CDMA網(wǎng)絡中支持CDMA 1X或3G網(wǎng)絡;具有PDA的功能,包括PIM(個人信息管理)、多媒體應用、瀏覽網(wǎng)頁、日程記事等;功能強大,擴展性強,第三方支持多;人性化,可以根據(jù)個人需要擴展及其功能。隨著Android平臺的高速發(fā)展,Android平臺下手機多媒體技術應用開發(fā)也越來越火。Android平臺對移動設備的程序集中包括一個操作系統(tǒng),一個中間件和一些關鍵性應用。開發(fā)人員可以在平臺系統(tǒng)上快速開發(fā),并可以利用其它開發(fā)人員的工作成果。所以,這為手機開發(fā)創(chuàng)造力更大的靈活性,工作少,周期短,快速成型,并一步到位,同時用戶可以最大限度

6、的自定義自己的手機,以豐富自己手機的功能,增加手機在市場上的競爭力。Android平臺以Linux系統(tǒng)作為平臺的基礎,使用Linux內(nèi)核可以加快軟件移植速度。目前適用于桌面操作系統(tǒng)的點歌系統(tǒng)發(fā)展較快,通常具有強大的音樂點播功能和友好的用戶界面。而手機音樂點播器,由于其應用的特殊性,使其開發(fā)難度有所增加。1.2國內(nèi)外手機操作系統(tǒng)應用開發(fā)情況 隨著移動終端市場競爭的日趨激烈,越來越多的軟件開發(fā)人員加入到手機操作系統(tǒng)應用軟件的開發(fā)中來。能否快速滿足用戶的新需求,吸引新的用戶群,尋求通信業(yè)務發(fā)展的新增值點,提供多樣化、多層次化的業(yè)務,已成為各終端廠商在競爭中求生存、求發(fā)展的首要任務。目前全球比較流行的

7、移動操作系統(tǒng)平臺有蘋果公司的IOS、Google公司的Android、微軟公司的Widows Mobile,諾基亞公司Symbian系統(tǒng)已逐漸被淘汰。目前大部分手機操作系統(tǒng)應用軟件都是基于這幾個操作系統(tǒng)平臺之上開發(fā)的。 根據(jù)IDC2013年11月13日報告顯示,谷歌的Android平臺在全球智能手機出貨量中的比例已經(jīng)突破80,微軟Windows Phone的出貨量也增速驚人,蘋果iOS和黑莓系統(tǒng)的市場份額則有所下降。IDC認為,Android之所以能夠占據(jù)超過80的智能手機市場,主要是借助于其超高的“性價比”。雖然Android平臺的手機價廉,但是其性能卻一點也不低廉。Android平臺簡單實

8、用,無論是功能還是外觀設計,都可以與蘋果一決高下。 根據(jù)基于全球八大移動開發(fā)平臺的調查,400多位開發(fā)者。從近年的數(shù)據(jù)來看,Android是最受歡迎的平臺,有近70%的受訪開發(fā)者最近從事過Android相關開發(fā)。從上述調查情況可以看出,Android操作系統(tǒng)是目前最火、前景最被看好的手機操作系統(tǒng),因此,開發(fā)Android應用軟件具有很好的市場價值。 目前市場上的音樂點播器一般都是在Windows或Linux下的的產(chǎn)品,對它們的使用,都需要承擔一定的商業(yè)費用或簽署相關的附加協(xié)議。而主流的嵌入式播放器都是基于WindowsCE或嵌入式Linux平臺,因而其體積普遍教大, 而且對硬件設備要求較高。因

9、而開發(fā)出一個功能實用,運行速度快,占用空間小,對硬件設備要求較低,基于開源項目的手機音樂點播器就成為本次設計的出發(fā)點,也正是Android平臺開發(fā)價值所在。1.3本文主要工作本文首先介紹了Android操作系統(tǒng)的四層架構及基于Android系統(tǒng)的應用程序開發(fā)方法。接下來以點歌系統(tǒng)的研發(fā)過程為例,詳細闡述了開發(fā)Android系統(tǒng)應用程序的具體過程。本課題具體實現(xiàn)以下功能: 1)數(shù)據(jù)庫設計; 2)能夠添加、刪除、查看歌曲的相關信息; 3)能對歌曲進行點播、編輯等相關操作; 4)設置不同的查詢條件:名稱、作曲、出版時間等。2 Android系統(tǒng)簡介2.1 Android系統(tǒng)概述 Android一詞本

10、意是指“機器人”,是Google公司推出的開源手機操作系統(tǒng)作為Google移動互聯(lián)網(wǎng)戰(zhàn)略的重要組成部分,Android操作系統(tǒng)借助于Google這個強大的推手和開放手機聯(lián)盟的支持,由默默無聞變得備受矚目,各種各樣基于Android系統(tǒng)的設備相繼問世。雖然Android系統(tǒng)從推出到現(xiàn)在不過短短幾年時間,但作為移動終端設備操作系統(tǒng)中的重量級一員,它的影響力越來越大,吸引了越來越多的開發(fā)者、設備生產(chǎn)商和軟件開發(fā)商等加入。作為一個推出不久的移動終端開發(fā)平臺,為何會有如此強大的發(fā)展?jié)摿腿绱搜该偷陌l(fā)展速度,每個人都會有自己的答案??偨Y起來,可能包括以下幾點: 1)系統(tǒng)的開源性和免費性:Android系統(tǒng)

11、是一個對第三方軟件完全開放的平臺,開發(fā)者在編寫Android應用程序時具有更大的自由度。2)移動互聯(lián)網(wǎng)的發(fā)展:Android采用WebKit瀏覽器引擎,與其它系統(tǒng)相比,更強調搜索功能,界面更強大,是一種融入全部Web應用的互聯(lián)網(wǎng)絡平臺。3)相關廠商的大力支持:從組建開放手機聯(lián)盟開始,Google一直向服務提供商、芯片廠商和手機銷售商提供Android平臺的技術支持,幫助他們開發(fā)出更好的Android設備。凡事都具有兩面性,作為一個如此受歡迎的系統(tǒng)也不例外。Android系統(tǒng)也有自身的一些缺點,具體如下:1)技術需要進一步完善:每個系統(tǒng)都不是完美的,Android也不例外,系統(tǒng)自身的一些bug需

12、要進一步完善。尤其是Android系統(tǒng)作為一個開源的系統(tǒng),面臨的攻擊會比其它封閉系統(tǒng)要多,這是Android系統(tǒng)要持續(xù)發(fā)展所必須解決的一個重要問題。2)開放手機聯(lián)盟模式的挑戰(zhàn):Android由開放手機聯(lián)盟開發(fā)、維護和完善,這種模式,是否會對Android未來的發(fā)展、定位起到阻礙作用,這些都不能下定論。3)其他技術的競爭:微軟因為擁有PC操作系統(tǒng)市場最大的占有率,在未來手機與電腦互相聯(lián)動并實現(xiàn)無縫對接方面Windows Mobile相比Android具有先天優(yōu)勢,此外,即使在智能終端自身的操作系統(tǒng)上,iOS系統(tǒng)也是Android的一個勁敵。這些都給Android系統(tǒng)的進一步發(fā)展帶來了巨大挑戰(zhàn),如

13、果能很好的解決這些問題,也將會進一步促進系統(tǒng)的發(fā)展。2.2 Android系統(tǒng)架構Android系統(tǒng)采用了軟件棧的設計結構,從上到下由四層組成,分別是Linux內(nèi)核層、中間層、應用程序框架(Application Framework)和應用層(Applications)。如圖2-1所示。圖2-1 Android系統(tǒng)架構下面對每層進行具體的描述: (一)Linux內(nèi)核:Android系統(tǒng)的內(nèi)核在Linux2.6內(nèi)核的基礎上進行了相應的裁剪和改進,繼承了Linux內(nèi)核安全性、內(nèi)存管理、進程管理、網(wǎng)絡協(xié)議棧和驅動模型等。Linux內(nèi)核同時也為硬件和軟件之間提供了銜接,屏蔽了下層硬件的具體細節(jié)來為上層

14、提供服務。 (二)Android函數(shù)庫:Android包含一個能被不同組件使用的C/C+庫,這些庫通過Android應用程序框架來為上層應用程序提供服務,下面是一些常用的核心庫: 1)libc:系統(tǒng)C庫,從BSD發(fā)展而來的標準C函數(shù)庫,是專門為基于嵌入式Linux設備所定制的。 2)媒體庫:基于PacketVideo OpenCORE,支持多種常用的音頻、視頻格式回訪和錄制,同時支持靜態(tài)圖像文件。 3)Surface Manager:管理顯示子系統(tǒng),為多個應用程序提供2D和3D圖層的無縫融合。 4)SGL:底層的2D圖形引擎。 5)3D libraries:基于OperGL ESI.OAPI實

15、現(xiàn),可以使用硬件3D加速或高度優(yōu)化的軟件3D加速。 6)RreeType:位圖和矢量字體顯示。 7)SQLite:一個對所有應用程序可用的、功能強大的輕量級關系型數(shù)據(jù)庫引擎。 (三)Android運行時:Android運行時環(huán)境由一個核心庫(Core Libraries)和一個D alvik虛擬機組成,核心庫為上層應用程序編程提供了Java語言核心庫的大多數(shù)功能。Dalvik虛擬機是一個不同于其他標準虛擬機的虛擬系統(tǒng),采用寄存器架構,能在一個設備中同時高效運行多個程序。它基于Linux內(nèi)核的一些功能,如多線程機制和內(nèi)存管理機制等。Dalvik虛擬機可以運行Android程序,這些程序需要使用d

16、x工具轉換成.dex類型的可執(zhí)行文件,該格式文件在大小方面往往比同樣的.class文件壓縮成的.jar文件更小,可以降低對內(nèi)存的要求。 (四)應用程序框架:包含編寫核心應用所使用的API接口,開發(fā)者可以使用這些接口來編寫自己的應用程序,該程序的架構設計簡化了組件的重用,任何一個應用程序都可以發(fā)布它的功能塊,同時還可以使用其他程序發(fā)布的功能塊(但是要遵循安全限制)。每個應用都會包括一系列的服務和系統(tǒng),具體如下: 1)豐富而又可擴展的視圖:構建應用程序時可以將這些視圖進行各種組合來形成各式各樣的應用程序界面。常用的視圖包括:列表、網(wǎng)格、文本框、按鈕和內(nèi)嵌的瀏覽器等。 2)內(nèi)容提供器:提供數(shù)據(jù)共享的

17、途徑,如聯(lián)系人數(shù)據(jù)庫。 3)資源管理器:管理非代碼資源,如字符串、圖片和布局文件等并提供這些資源的訪問方式。 4)通知管理器:幫助應用程序在狀態(tài)欄中顯示各自的提示信息,如收到短信 5)活動管理器:管理應用程序的生命周期,還提供導航或回退功能等。 (五)應用程序:包括電話、短信、口歷、地圖、瀏覽器、通訊錄等核心應用程序。2.3 Android開發(fā)環(huán)境配置 由于Java語言具有強大的功能和與平臺無關的特性,并且還具備強制類型安全,因此Google選擇使用Java語言來開發(fā)Android系統(tǒng)下的應用程序。 Eclipse是一個開放源代碼的、基于Java的且具有良好擴展性的開發(fā)平臺。Eclipse本身

18、只是一個框架和一組服務,但是通過加入插件可以構建針對不同語言的開發(fā)環(huán)境,目前支持的主要開發(fā)語言有Java和C/C+?;谝陨蟽?yōu)點選擇使用Eclipse來搭建Android程序的開發(fā)環(huán)境并詳細介紹環(huán)境的配置過程。搭建Android開發(fā)環(huán)境有以下五個主要步驟:下載并安裝JDK;下載并安裝Eclipse;下載Android SDK;下載并安裝ADT插件;配置Android AVD。 1)下載并安裝JDK; JDK是Java SE Development Kit的簡寫,其中包括了Java運行環(huán)境、Java開發(fā)工具和一些Java核心類庫等。在安裝Eclipse之前,必須先下載和安裝JDK。 JDK是由S

19、UN公司開發(fā),因此要下載最新的JDK,只要登錄SUN公司的官網(wǎng),選擇適合自己電腦的版本下載并按照提示安裝即可,如圖2-2所示。圖2-2 下載安裝JDK JDK安裝完成后,還得配置相應的環(huán)境變量才能使用。環(huán)境變量的配置分為兩部分,一是JAVA HOME變量的配置,二是CLASSPATH變量的配置,這兩者的配置方法類似。2)下載并安裝Eclipse;進入http://downloads/頁面,選擇合適的Eclipse版本下載,如圖2-3所示。安裝時注意選擇合適的安裝路徑。圖2-3 下載安裝Eclipse 3)下載Android SDK;Android SDK是Andr

20、oid專用的軟件開發(fā)包工具,包括程序開發(fā)中用到的函數(shù)庫、編譯程序等資源,是開發(fā)Android程序必備的工具之一。SDK的下載網(wǎng)址是http:/developer.A Location框中選擇SDK的解壓路徑,點擊Apply按鈕,最后單擊OK完成。如圖2-4。圖2-4 加載Android SDK4)下載并安裝ADT插件; ADT是為方便Android應用而開發(fā)的插件,包含一系列強大的擴展功能,可以方便、快捷的創(chuàng)建、運行和調試Android程序。安裝ADT的步驟如下:首先,打開Elicpse,選擇Windows-Preference-Help-Software Updates然后選擇Availab

21、le Software接著選擇Add Sites,在彈出的地址框中輸入http:/dl-5)配置Android AVD。 在Android SDK1.5版本以后的開發(fā)中,必須至少創(chuàng)建一個AVD來模擬一套虛擬設備運行Android應用程序。創(chuàng)建AVD有兩種方式,一種是命令行方式,另一種是在Eclipse中創(chuàng)建,無論哪種方式,系統(tǒng)都會在默認文件路徑下自動創(chuàng)建一個Android文件夾來保存與AVD有關的配置信息。這里只介紹在Eclipse中創(chuàng)建AVD的方法,步驟如下:打開Eclipse,單機Android小機器人打開Android SDK and AVD Manager;點擊左側面板的Virtual

22、 Devices,再點擊右側的New;填入Name,選擇Target的API, SD Card大小任意;點擊Create AVD即可完成AVD的創(chuàng)建。如圖2-5。圖2-5 配置AVD2.4 Android程序開發(fā)2.4.1 程序開發(fā)組件 一個Android應用程序通常由以下五個組件中的任意多個組成:活動(Activity )、意圖(Intent )、服務(Service)、廣播接收器(Broadcast Receiver)和內(nèi)容提供器(Content Provider)。 Activity負責應用程序的界面顯示;Intent負責不同組件之間的交互;Service在后臺運行,負責執(zhí)行程序中比較費

23、時的任務;而Content Provider為不同的應用程序之間提供了一種數(shù)據(jù)共享方式。其中Activity組件是每個應用程序所必須用到的,因為任何一個應用程序都必須具備與用戶交互的界面。 (一)Activity:最基本的應用程序組件,通常表示為一個單獨的屏幕。每個Activity都是通過繼承來被實現(xiàn)為一個單獨的活動類,一個應用程序通常由多個Activity組成,每個Activity都具有自己的生命周期。Android系統(tǒng)中通過一個被稱為Activity棧的東西來管理各個Activity之間的關系,當有新的Activity啟動時,它被置于棧頂,之前的Activity被保留在棧中,不再出現(xiàn)在前臺

24、,直到當前的Activity退出為止。打開前一個 Activity可以通過回退來實現(xiàn)。Activity的生命周期如圖2-6所示,主要有以下4種狀態(tài),分別是:1)活動狀態(tài),此時Activity處于棧頂位置并可以與用戶交互,具有可見性。2)暫停狀態(tài),此時的Activity失去了焦點,但是依然保持可見狀態(tài)(非全屏或是透明)并保存所有的信息,在內(nèi)存過低時可能被“銷毀”。3)停止狀態(tài),此時的Activity由于被其他Activity所遮擋而處于不可見狀態(tài),但是依然會保存所有的信息,在系統(tǒng)內(nèi)存過低時會被“銷毀”。4)結束狀態(tài),此時的Activity已經(jīng)被從內(nèi)存中銷毀,下一次啟動時需要重置之前被保存的狀態(tài)。

25、圖2-6 Activity的生命周期 從上圖可以看出,Activity有以下三個循環(huán)過程:1)一個Activity的生命周期從onCreate(Bundle)開始,到onDestroy()結束,在onCreate()中會設置所有的狀態(tài)和資源,在onDestroy()中回收這些資源,例如一個Activity中由于存在比較耗時的任務,會重新開啟一個后臺線程,這個線程可以在onCreate()中創(chuàng)建,在onDestroy()中停止。2)在onStart()到onStop()之間,Activity處于生命周期的前兩個狀態(tài),此時無論該Activity是否能與用戶交互,都具有可見性,可以保存相關的信息。3

26、)從onResume()開始到onPause()結束,Activity處于活動狀態(tài),可以實現(xiàn)和用戶的交互。Activity可以經(jīng)常在resumed和paused狀態(tài)之間切換,如當一個新的Intent被發(fā)送時。Activity的整個生命周期由以下幾個函數(shù)定義,其中每個函數(shù)都可以重載。 public class Activity extends ApplicationContext protected void onCreate(Bundle savedlnstanceState); protected void onStart(); protected void onResume(); prot

27、ected void onPause(); protected void onStop(); protected void onDestroy(); (二)Service:沒有可視化的用戶界面,在后臺運行,通常用來完成比較耗時的工作,并且可以與其它程序進行交互。最典型的Service應用是在后臺播放音樂或是從網(wǎng)絡上下載數(shù)據(jù)。有兩種不同的方式可以來啟動一個Service,第一種方式是通過調用Context.startService()來啟動,調用Context.stopService()來結束,這種方式無論調用了多少次startService()方法,都只需要調用一次stopService()方

28、法來停止服務。第二種方式是建立一個到服務對象的鏈接,通過調用這個鏈接來獲得服務。這個鏈接通過Context.bindService()方法建立,并通過調用Context.unbindService()方法來關閉。多個用戶可以綁定至同一個服務提供對象。一個Service也具有一定的生命周期,如圖2-7所示。圖2-7 service的生命周期 從上圖可以看出,service主要有以下兩個循環(huán)過程: 1)完整的生命周期:從onCreate()開始到onDestroy()結束,在onCreate()函數(shù)中完成初始化,在onDestroy()函數(shù)中釋放所有的資源。例如一個音樂播放程序,可以在onCrea

29、te()中創(chuàng)建音樂播放線程,在onDestroy()中終止這個線程。 2)活躍的生命周期:從onStart()開始,在這個函數(shù)中處理傳遞給startService()的Intent對象。例如對于一個音樂播放程序,會在Intent中找到需要播放的音樂曲目。(三)BroadcastReceiver:用來接收廣播信息,并給出相應的處理結果。這些廣播信息也許來自于系統(tǒng)自身,如電池電量低、拍攝照片、來電話或短信等;也許來自應用程序,比如下載完成時發(fā)送通知來告知用戶。每個應用程序擁有的廣播接收器沒有限制,并且可以對任意感興趣的通知進行響應,廣播接收器也不具有用戶界面。廣播接收器的生命周期很短,只有在廣播消

30、息抵達接收器并且接收器中的onReceive()函數(shù)被調用時處于活躍狀態(tài),一旦onReceive()函數(shù)返回后,廣播接收器就處于失活狀態(tài)。(四)Intent:協(xié)助前面提到的三種組件完成通信過程,一個Intent由動作(Action)、數(shù)據(jù)(Data)、分類(Category)、類型(Type)、組件(Component)和擴展信息(Extra)等內(nèi)容組成,系統(tǒng)根據(jù)Intent中所攜帶的不同描述信息來決定將此Intent交給哪個組件以及該組件獲得Intent后要采取的動作。 (五)Content Provider:為應用程序之間共享數(shù)據(jù)提供了一個統(tǒng)一的接口并隱藏了具體的數(shù)據(jù)來源,Android系

31、統(tǒng)中為一些常見的應用(如聯(lián)系人、音樂、圖像等)定義了相應的Content Provider,調用者通過相應的URI來對數(shù)據(jù)進行訪問。通常Content Provider將一個應用程序的數(shù)據(jù)封裝,并向需要使用該數(shù)據(jù)的其他應用程序賦予權限,這樣就可以使得數(shù)據(jù)在多個程序之間共享。需要注意的是,Content Provider是基于權限控制的,這種做法可以提高數(shù)據(jù)的安全性。2.4.2 程序界面開發(fā) Android系統(tǒng)為開發(fā)者提供了豐富的可視化界面設計組件,包括菜單、對話框、按鈕、文本框等,其中最主要的界面元素包括以下三類。 1)視圖組件(View:是基類Android.view.View的一個實例,用

32、來存儲屏幕上特定矩形內(nèi)的布局和內(nèi)容屬性,由視圖又衍生出了一個子類Widgets(窗體控件),用來處理屏幕區(qū)域的測量和繪制,常用的Widget包括Text, EditText, Button,CheckBox和ScrollView等。2)視圖容器(ViewGroup:是基類Android.view.ViewGroup的一個實例,用來承載和管理一組下層的視圖和其他視圖組,通常稱為View的容器。3)布局管理:Android使用布局管理器來管理應用程序中各用戶界面的組件,這樣做的好處是可以避免因手機分辨率、尺寸等的差異導致編寫的應用程序無法移植,因為布局管理器能根據(jù)運行平臺調整組件的大小。所有的布局

33、管理器都是ViewGroup的子類,圖2-8表示布局管理器中各類的關系。圖2-8 Android布局管理器的類圖 1)LinearLayout(線性布局):該布局中元素之間成線性排列,常用的布局有水平布局和垂直布局。 2)RelativeLayout(相對布局):該布局中元素之間根據(jù)相對位置排列,即在指定一個元素位置時往往會以它的父元素或其它元素的位置作為參照,來決定當前元素的位置,這種布局方式相對隨意,沒有規(guī)律性,但必須保證在使用之前其參照物己經(jīng)存在。 3)AbsoluteLayout(絕對布局):該布局中元素之間根據(jù)坐標排列,即將整個手機劃分成坐標系,通過指定坐標系中的兩個偏移量來決定元素

34、的位置。 4)FrameLayout(幀布局):該布局為每個加入的組件都創(chuàng)建了一個空白區(qū)域(一幀),這些幀會根據(jù)gravity屬性自動對齊,這樣會形成組件疊加的效果。 5)TableLayout(表格布局):該布局中元素之間的排列由表格決定,表格的行和列通過添加TableRow或其他組件來控制,通常加入一個TableRow或是一個組件都代表一行,表格的寬度取決于父容器的寬度,這種布局只是實現(xiàn)方式與表格類似,但元素之間并沒有實際的分界線。Android中提供了兩種方式來利用上面的組件設計布局,一是在XML布局文件中通過設置XML屬性進行控制,二是在Java程序中通過調用函數(shù)進行控制,也可以將這兩

35、種方法組合起來使用。Android推薦使用XML布局文件的方式來控制用戶界面的顯示,這樣做不僅簡單明了,還可以將視圖控制邏輯從代碼中剝離出來,放入一個單獨的文件中進行控制,更好的體現(xiàn)了MVC原則。2.5 Android系統(tǒng)數(shù)據(jù)存儲方式 Android系統(tǒng)一共提供了四種數(shù)據(jù)存儲方式,分別是SharedPreferences(通過鍵值二元組存儲簡單數(shù)據(jù))、文件(存儲較大規(guī)模的數(shù)據(jù))、SQLite數(shù)據(jù)庫(存儲結構化數(shù)據(jù))和ContentProvider(用于應用程序之間的數(shù)據(jù)共享),下面詳細介紹每一種方式的具體使用方法和使用場合。1) SharedPreferences:用鍵/鍵值形式的二元組來存儲

36、數(shù)據(jù),支持的數(shù)據(jù)類型有Boolean, string, float, long和integer,通常用來存儲默認值、實例變量、UI狀態(tài)和用戶設置等。每個應用程序Context均有一個SharedPreferences對象,通過getSharedPreferences()函數(shù)來獲取該對象,通過getBoolean(), getFloat()和getInt()等函數(shù)讀取該對象中存儲的數(shù)據(jù),這些函數(shù)一共有兩個參數(shù),第一個參數(shù)為鍵/鍵值對中的鍵,第二個參數(shù)為指定鍵對應的鍵值,如果該鍵值不存在則以默認的函數(shù)返回值代替。修改SharedPreferences對象中的內(nèi)容需要用到putBoolean() ,

37、putFloat()和putInt()等函數(shù),并且在修改完后還要調用commit()函數(shù),否則修改無效。2)文件操作:Android上層應用程序是用Java語言編寫的,在Java的I/O包中提供了大量的文件讀寫函數(shù),如java.io.BufferedReader, java.io.FileInputStream, java.io.FileOutputStream等,Android對這些函數(shù)都有良好的支持,除此之外,Android還提供了openFileInput和openFileOutput這兩個函數(shù)用來簡化對文件的讀寫操作,與Java I/O包中的函數(shù)所不同的是,這兩個函數(shù)只能操作當前應用程

38、序所在目錄的文件。3)SQLite數(shù)據(jù)庫:SQLite是一種開源的、與底層無關的,輕量級的數(shù)據(jù)庫,最大支持2048GB的數(shù)據(jù)存儲,與其它大多數(shù)SQL數(shù)據(jù)庫不同的是,SQLite沒有獨立的服務進程。SQLite中的數(shù)據(jù)庫文件是跨平臺的,可以在32位和64位系統(tǒng)之間,甚至Big-Endian和Little-Endian兩種不同的架構之間自由的拷貝數(shù)據(jù),SQLite數(shù)據(jù)庫被用在大量的消費類電子產(chǎn)品中。SQLite數(shù)據(jù)庫具有以下特點:1)無需配置:直接解壓可執(zhí)行文件即可運行。2)沒有服務進程:不需要提交到服務器處理后再返回結果。3)單個數(shù)據(jù)文件:將用戶數(shù)據(jù)存儲在一個文件中。4)數(shù)據(jù)文件可跨平臺移植:不

39、受操作系統(tǒng)位數(shù)和架構的限制。5)緊湊:不需要系統(tǒng)提供太大的資源,占用不到1M的內(nèi)存空間就可運行。6)事務性:采用獨立事物處理機制,遵守ACID (Atomicity, Consistency,Isolation, Durability)原則。使用數(shù)據(jù)庫的獨占性和共享鎖處理事務,這樣既允許多個進程并發(fā)讀取數(shù)據(jù)庫中的數(shù)據(jù),又能保證最多只有一個進程寫數(shù)據(jù),可以有效地防止讀臟數(shù)據(jù)、不可重復讀、丟失修改等異常的發(fā)生。 3 點歌系統(tǒng)需求分析 為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,需要對開發(fā)產(chǎn)產(chǎn)品做需求分析。對軟件需求的合理把握是軟件開發(fā)周期中非常重要的一個環(huán)節(jié),本章將對點歌系統(tǒng)做較為全面的需求分析。需求分

40、析的基本任務是定義“系統(tǒng)必須做什么”這個問題。在這一節(jié)中主要就是圍繞“Android手機開的點歌系統(tǒng)必須做什么”這個問題來分析說明的。需求分析的任務還不是確定系統(tǒng)怎樣完成它的工作,而僅僅是確定系統(tǒng)必須完成哪些工作,也就是對目標系統(tǒng)提出完整、準確、清晰、具體的要求。3.1 概述 隨著手機功能的不斷增強,音樂播放器己成為智能手機重要軟件之一。開發(fā)一款符合廣大用戶需求的音樂播放器有很好的市場前景和意義。 1)需求分析目標和任務 本軟件的目標是開發(fā)一款基于Android平臺符合用戶使用需求的點歌系統(tǒng)。本系統(tǒng)支持MP3格式的文件。用戶可以通過播放器從音樂庫里選擇自己喜愛的歌曲,新建播放列表,播放或暫停歌

41、曲,選擇上一首歌曲,下一首歌曲,調整歌曲播放的進度,選擇播放隊列里播放的歌曲等。本軟件要求具有美觀簡潔便于用戶使用的觸摸界面,這也是Android操作系統(tǒng)不同傳統(tǒng)的Windows mobile等系統(tǒng)上應用軟件的優(yōu)勢之一。 2)用戶特點 本軟件最終用戶是購買手機使用點歌系統(tǒng)的普通用戶。 3)假定和約束 本軟件的開發(fā)工作是基于假定手機硬件完好,具有一定存儲空間。3.2 點歌系統(tǒng)需求分析3.2.1 功能需求 作為Android平臺上開發(fā)的應用軟件,它必須具備與用戶交互的界面,界面簡潔美觀易于操作。因此,對點歌系統(tǒng)的功能規(guī)定可從點歌器的界面來劃分。點歌系統(tǒng)的用戶操作界面可分為以下三部分:音樂播放主界面

42、、音樂庫主界面、播放隊列界面。本小節(jié)通過用例圖和用例說明分別對這三個界面進行功能需求分析。 1)音樂播放主界面 音樂播放主界面是用戶進入點歌系統(tǒng)的主界面,即用戶點擊HomeScreen中點歌系統(tǒng)的圖標,便會打開此界面。此界面實現(xiàn)的主要功能包括播放、暫停音樂,選擇播放隊列里上一個歌曲,選擇播放隊列里下一首歌曲,控制音量,定位音樂進度條,顯示歌曲播放進度,進入音樂庫主界面,進入播放隊列主界面。音樂播放主界面用例圖如下圖3-1所示。圖3-1 播放主界面用例圖 下面對音樂播放主界面進行用例說明。 1)播放歌曲,如表3-1所示。表3-1 播放歌曲用例說明參與者用戶概述用戶點擊播放/暫停按鈕,音樂開始播放

43、前置條件音樂播放器已準備好音樂庫已掃描完成用戶從音樂庫或者播放隊列里選擇要播放的歌曲用戶已暫停歌曲詳細描述用戶點擊進入播放主界面用戶點擊播放/暫停按鈕系統(tǒng)開始播放音樂,并刷新播放界面后置條件系統(tǒng)開始播放音樂 2)暫停歌曲用例,如表3-2所示。表3-2 暫停歌曲用例說明參與者用戶概述用戶點擊播放/暫停按鈕,音樂開始播放前置條件播放主界面正在播放音樂詳細描述用戶點擊進入播放主界面用戶點擊播放/暫停按鈕系統(tǒng)暫停播放音樂,并刷新播放界面后置條件音樂已暫停 3)選擇上一首歌曲用例說明,如表3-3所示。表3-3 選擇上一首歌用例說明參與者用戶概述用戶點擊播放播放上一首歌曲按鈕,開始播放上一首歌曲前置條件音

44、樂播放器已準備好音樂庫已掃描完成用戶從音樂庫或者播放隊列里選擇要播放的歌曲播放主界面正在播放音樂詳細描述用戶點擊進入播放主界面用戶點擊播放上一曲按鈕系統(tǒng)加載播放隊列中找到上一首歌曲信息系統(tǒng)開始播放音樂,并刷新播放界面后置條件系統(tǒng)成功播放上一首音樂 4)選擇下一曲用例說明如表3-4所示。表3-4 選擇下一首歌用例說明參與者用戶概述用戶點擊播放播放下一首歌曲按鈕,開始播放下一首歌曲前置條件音樂播放器已準備好音樂庫已掃描完成用戶從音樂庫或者播放隊列里選擇要播放的歌曲播放主界面正在播放音樂詳細描述用戶點擊進入播放主界面用戶點擊播放下一曲按鈕系統(tǒng)加載播放隊列中找到下一首歌曲信息系統(tǒng)開始播放音樂,并刷新播

45、放界面后置條件系統(tǒng)成功播放下一首音樂 5)拖動播放進度條用例說明,如表3-6所示。表3-5 拖動播放進度用例說明參與者用戶概述用戶拖動播放進度條,歌曲定位到新的位置前置條件音樂播放器已準備好音樂庫已掃描完成用戶點擊進入播放主界面jinru播放主界面正在播放音樂詳細描述用戶拖動播放進度條系統(tǒng)定位到歌曲新的位置點歌系統(tǒng)跳到歌曲新的位置,開始播放音樂后置條件歌曲成功定位到新的位置 音樂庫主界面 用戶點擊音樂庫按鈕便可跳轉到音樂庫主界面。音樂庫可認為是便于用戶瀏覽、挑選音樂的倉庫。該界面包含兩個子列表,分別為全部歌曲列表,播放列表。 1)全部歌曲列表 以列表形式顯示SDcard里所有歌曲的名稱及藝術家

46、名,便于用戶瀏覽和挑選歌曲。用戶選中某首歌曲,點擊該條目,軟件便自動跳到音樂播放主界面播放該首歌曲。 2)播放列表 播放列表里包含我的列表和智能列表兩個子條目。在我的列表里用戶可以創(chuàng)建和刪除列表,該列表里包含的條目還有用戶自己創(chuàng)建的列表。智能列表包含新增歌曲列表和最常播放歌曲列表。新增歌曲列表是用戶最近一次存入歌曲的列表。最常播放歌曲列表是軟件根據(jù)統(tǒng)計用戶播放歌曲的次數(shù),統(tǒng)計出的最常播放歌曲的列表。音樂庫主界面用例圖3-2所示。圖3-2 音樂庫主界面用例圖4點歌系統(tǒng)的設計與實現(xiàn)4.1 系統(tǒng)功能設計4.1.1 數(shù)據(jù)庫設計 本系統(tǒng)共設計了兩張數(shù)據(jù)庫表,分別用來存放歌曲信息和分類信息,具體見表4-1

47、和表4-2。表4-1 musictableidprymary keyfilenamenot nullmusic namezuozhedatelei表4-2 fenleitableidprymary keyleinot null4.1.2 功能模塊設計 本系統(tǒng)主要實現(xiàn)了以下功能:能夠添加、刪除、查看歌曲的相關信息;能對歌曲進行點播、編輯等相關操作;設置不同的查詢條件:名稱、作曲、出版時間等。1)主界面設計包含了歌曲界面,播放界面以及添加刪除界面等,主界面部分代碼如下:import java.io.File;import java.util.ArrayList;import .addmusic.b

48、a;import DAO.DBAdapter;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.widget.Spinner;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity Button addmusic; ListView musi

49、clist; ListView leilist; ArrayList al=new ArrayList(); ArrayList al3=new ArrayList(); Spinner sp; Button searchbutton; DBAdapter db; EditText search; BaseAdapter ba; BaseAdapter ba2; Button fenlei; public static String musicname; public void onCreate(Bundle savedInstanceState) super.onCreate(savedIn

50、stanceState); setContentView(R.layout.main); addmusic=(Button) findViewById(R.id.addmusic); sp=(Spinner) findViewById(R.id.sp); searchbutton=(Button) findViewById(R.id.searchbutton); search=(EditText) findViewById(R.id.search); fenlei=(Button) findViewById(R.id.addfenlei); addmusic.setOnClickListene

51、r(new OnClickListener() public void onClick(View v) startActivity(new Intent(addmusic); ); fenlei.setOnClickListener(new OnClickListener() public void onClick(View v) startActivity(new Intent(addfenlei); ); musiclist=(ListView) findViewById(R.id.musiclist); leilist=(ListView) findViewById(R.id.leili

52、st); db=new DBAdapter(getApplicationContext(); db.open(); Cursor cursor=db.getmusic();2) 添加分類 主要是歌曲的分類,由于本人水平有限,本系統(tǒng)設計成了添加歌曲之前先添加分類。添加分類部分代碼如下:public class MainActivity extends Activity Button addmusic; ListView musiclist; ListView leilist; ArrayList al=new ArrayList(); ArrayList al3=new ArrayList();

53、 Spinner sp; Button searchbutton; DBAdapter db; EditText search; BaseAdapter ba; BaseAdapter ba2; Button fenlei; public static String musicname; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); addmusic=(Button) findViewById(R.id.addmusic); sp=(Spinner) findViewById(R.id.sp); searchbut

溫馨提示

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

評論

0/150

提交評論