Android系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)_第1頁
Android系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)_第2頁
Android系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)_第3頁
Android系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)_第4頁
Android系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、本科畢業(yè)設(shè)計(jì)(論文)Android 系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā)系統(tǒng)手機(jī)課程表應(yīng)用程序開發(fā) 學(xué)學(xué) 院院 信息工程學(xué)院信息工程學(xué)院 專專 業(yè)業(yè) 測控技術(shù)與儀器測控技術(shù)與儀器 (光機(jī)電一體化方向)(光機(jī)電一體化方向) 年級班別年級班別 20112011 級(級(1 1)班)班 學(xué)學(xué) 號號 學(xué)生姓名學(xué)生姓名 指導(dǎo)教指導(dǎo)教師 20152015 年年 6 月月注:API:16 及以上Android 版本:4.1.2 及以上程序功能較為簡單,代碼也不大規(guī)范,可能還存在 BUG,給你們借鑒一下還是可以的,相信你們可以設(shè)計(jì)得更好,師兄先畢業(yè)了,拜!源代碼跟 apk 安裝包百度云盤在地址:鏈接: http:/ 密

2、碼: ckps(如果鏈接失效了,網(wǎng)上還是有其他好多同類型的程序,就不要來找我了哈?。┱?要要隨著移動互聯(lián)網(wǎng)的高速發(fā)展,以 Android 和 ios 為首的智能手機(jī)系統(tǒng)日益普及,Android 智能系統(tǒng)以其開源和低價(jià)的特性在市場競爭中占據(jù)有利地位。國內(nèi)外很多知名移動設(shè)備廠商紛紛投身其中,他們對于 Android 智能手機(jī)的開發(fā)熱情,使得 Android 系統(tǒng)的普及人群快速增加,同時(shí) Android 系統(tǒng)的多樣性,易用性及其高性價(jià)比對于用戶產(chǎn)生極大的吸引力,這幾年 Android 智能系統(tǒng)更是得到了社會廣泛的應(yīng)用和認(rèn)同。本論文概括介紹了 Android 系統(tǒng)的整體結(jié)構(gòu)及其相關(guān)開發(fā)技術(shù)基礎(chǔ)和搭建

3、 Android系統(tǒng)應(yīng)用程序的開發(fā)環(huán)境,并對系統(tǒng)進(jìn)行總體設(shè)計(jì),根據(jù)系統(tǒng)需求分析,確立系統(tǒng)的開發(fā)思想,設(shè)計(jì)系統(tǒng)的流程,再根據(jù)系統(tǒng)流程劃分系統(tǒng)模塊,同時(shí)討論了使用編程語言 Java 設(shè)計(jì)開發(fā)基于 Android 系統(tǒng)的手機(jī)課程表的部分技術(shù)實(shí)現(xiàn)方法,這些技術(shù)方法包括:基于 Android 系統(tǒng)的手機(jī)課程表的 SQLite 數(shù)據(jù)庫的設(shè)計(jì)和創(chuàng)建,用戶界面設(shè)計(jì)以及功能設(shè)計(jì)。我將在文中對各個(gè)技術(shù)要點(diǎn)進(jìn)行具體闡述。經(jīng)過運(yùn)行調(diào)試后表明,系統(tǒng)可以滿足用戶的各項(xiàng)需求。關(guān)鍵詞:關(guān)鍵詞:Android,Java,SQLite,手機(jī)課程表注:本設(shè)計(jì)(論文)題目來源于自選。AbstractWith the rapid de

4、velopment of mobile Internet, headed by IOS and Android smart phone system is becoming more and more popular, the Android system with characteristics of its open source and low price in market competition to occupy a favorable position. Domestic and foreign many well-known mobile equipment manufactu

5、rers have to join them, they for the development of Android smartphone enthusiasm, making the popularity of Android population increased rapidly, also the diversity of the Android system, easy and high price for the user produced great attraction. In the past few years Android intelligent system is

6、obtained the widespread application and identity.This paper summarized introduced the overall structure of the Android system development and related technical foundation and build Android application development environment, and for the overall system design, according to the system demand analysis

7、, establish the idea of system development, system design process, then according to the system process module of the system. We also discuss the use of Java programming language design and development method based on Android mobile phone timetable to part of the technology. These methods include: B

8、ased on the Android mobile phone timetable of SQLite database to design and create, the user interface design and function design. I will elaborate on the main points of the technology in the text. After running and debugging, the system can meet the needs of users.Key words: Android, Java,SQLite, m

9、obile phone Curriculum目 錄1 緒論.11.1 什么是手機(jī)課程表.11.2 開發(fā)背景及目的.11.3 論文主要工作.21.4 論文整體結(jié)構(gòu).22 Android 開發(fā)技術(shù)介紹 .32.1 Android 概述 .32.2 Android 系統(tǒng)的四大組件 .42.3 Android 系統(tǒng)架構(gòu).72.3.1 Android 系統(tǒng)架構(gòu)概述 .72.3.2 Android 應(yīng)用程序 .82.3.3 Android 應(yīng)用程序架構(gòu) .82.3.4 Android 系統(tǒng)庫和 Android 運(yùn)行時(shí) .92.3.5 Linux 內(nèi)核 .92.3.6 Android 系統(tǒng)架構(gòu)研究 .92.

10、4 Eclipse 簡介 .102.5 XML 簡介 .103 系統(tǒng)設(shè)計(jì).123.1 系統(tǒng)需求分析.123.2 系統(tǒng)流程設(shè)計(jì).123.3 系統(tǒng)模塊劃分.133.3.1 課程編輯模塊 .143.3.2 程序顯示模塊.143.3.3 信息設(shè)置模塊.144 搭建環(huán)境與新建工程.164.1 操作系統(tǒng)與軟件.164.2 安裝步驟.164.3 Android 課程表的工程 .184.3.1 Android 工程結(jié)構(gòu).184.3.2 AndroidManifest.xml 文件 .195 數(shù)據(jù)庫設(shè)計(jì).215.1 概要分析.215.2 數(shù)據(jù)庫分析.215.3 SQLite 數(shù)據(jù)表設(shè)計(jì)與創(chuàng)建 .215.3.1

11、數(shù)據(jù)表的設(shè)計(jì) .215.3.2 SQLite 數(shù)據(jù)庫的創(chuàng)建.226 界面設(shè)計(jì).276.1 界面分析.276.2 歡迎界面.276.3 主界面.286.4 課程編輯面.296.5 設(shè)置界面.317 功能設(shè)計(jì).347.1 課程表顯示功能.347.1.1 顯示學(xué)期與周數(shù) .347.1.2 顯示課程 .357.2 課程編輯功能.387.2.1 編輯模式 .387.2.2 “確定”事件 .397.2.3 “刪除”事件 .407.3 課程提醒功能.427.3.1 定時(shí)發(fā)送廣播 .427.3.2 接收廣播 .437.3.3 發(fā)出提醒 .43結(jié)論.45參考文獻(xiàn).46致 謝 .4711緒緒 論論11 什么是手機(jī)

12、課程表什么是手機(jī)課程表對于課程表,從幼兒園小學(xué)時(shí)代就已經(jīng)開始被廣泛使用,相信大家應(yīng)該都不會對它感到陌生,課程表就是幫助學(xué)生和老師管理課程的表格。以前的課程表出現(xiàn)在黑板上,不過是固定的,我們還需要移動版的課程表以方便我們隨時(shí)隨地查詢課程,最早的移動版課程表是以紙質(zhì)的方式存在,隨著基于 android和 ios 等智能移動系統(tǒng)的智能手機(jī)的發(fā)展,課程表也逐漸從紙上移動到我們的手機(jī)屏幕上,更加方便地為人們管理課程,記錄課程的相關(guān)信息,而這些手機(jī)屏幕上的課程表,即是我們所要開發(fā)的手機(jī)課程表。12 開發(fā)背景及目的開發(fā)背景及目的在中國,智能手機(jī)已經(jīng)成為人們?nèi)粘I钪斜夭豢缮俚囊徊糠郑鶕?jù)市場研究機(jī)構(gòu) eMa

13、rketer 發(fā)布的關(guān)于未來三年智能手機(jī)市場趨勢的報(bào)告,新興市場仍是智能手機(jī)市場主要增長來源,2014 年中國智能手機(jī)用戶量首次突破 5 億,預(yù)計(jì) 2018 年可能超 7 億。智能手機(jī)在高校人群中更是得到了普及,其中,基于Android 系統(tǒng)的智能手機(jī)憑借其優(yōu)秀的系統(tǒng)性能,較為低廉的價(jià)格以及良好的用戶體驗(yàn)迅速得到了收入能力較低的大學(xué)學(xué)生的青睞,大學(xué)學(xué)生中,使用 Android手機(jī)的比例大大高于 ios 等其他智能系統(tǒng)的手機(jī),故而我們選擇在 android 系統(tǒng)上進(jìn)行開發(fā)。在小學(xué)和中學(xué)時(shí)代,我們上課只需在固定的教室和固定的時(shí)間并且只需坐在教室等老師來就夠了,但是在大學(xué)時(shí)代就大大不同了,大學(xué)課程多

14、且雜,而且上課地點(diǎn)和上課時(shí)間都不是固定的,一周內(nèi)出現(xiàn)重復(fù)課程的情況較少,所以要將一張基本沒有什么規(guī)律的課程表完整地記憶下來是一件很艱難的事,每次上課時(shí),總有很多同學(xué)在上課的路上突然才想起不知道在哪個(gè)教室上課,于是不得不每次拿出手機(jī)打給其他同學(xué)詢問,或者有些同學(xué)選擇將一個(gè)紙質(zhì)的課程表裝在衣服口袋里,非常不方便??紤]到 Android 手機(jī)在大學(xué)中的使用率非常高,于是我就想到了開發(fā)一個(gè)基于 Android 的課程表程序。將課程表放進(jìn)我們的智能手機(jī)里,只需大家需要按照具體上課時(shí)間、課程名稱等將自己的課程信2息記錄到手機(jī)的課程表中,為整個(gè)學(xué)期的每一天添加下課程安排,就可以一勞永逸。再也不用擔(dān)心忘記明天

15、要上什么課或者走在路上突然忘了等一下要上什么課,在什么地方上啊,上課時(shí)間又是在什么時(shí)候啊,隨時(shí)隨地,方便你我他?;谝陨线@些考慮,我認(rèn)為有必要開發(fā)一款基于 Android 系統(tǒng)的課程表程序,配合上可以讓用戶自己編輯及保存上課時(shí)間以及地點(diǎn)的功能,從而避免忘記上課等尷尬事情發(fā)生。13 論文主要工作論文主要工作在 JDK 開發(fā)環(huán)境下,運(yùn)用 Java 語言,使用 Eclipse 和 Android SDK 等開發(fā)工具開發(fā)一款基于 Android 系統(tǒng)的課程表程序。本軟件除了可以及時(shí)的顯示課程信息外,還可以對上課地點(diǎn)和上課時(shí)間進(jìn)行編輯修改,并且在課后提前一天對課程進(jìn)行提醒。本程序可以在同時(shí)在 Andro

16、id sdk 的模擬器上和我的手機(jī)(版本:紅米 1s4g,android4.4 系統(tǒng))運(yùn)行,達(dá)到需求的運(yùn)行效果。14 論文整體結(jié)構(gòu)論文整體結(jié)構(gòu)本論文第 1 章為“緒論”,介紹了本次設(shè)計(jì)的背景與目的,對論文整體進(jìn)行簡介;第 2 章對 Android 開發(fā)技術(shù)進(jìn)行了概述;然后第 3 章對系統(tǒng)進(jìn)行了設(shè)計(jì);接下來第 4 章則演示了環(huán)境的搭建與 Android 工程創(chuàng)建;搭建完環(huán)境,建立好工程,之后第 57 章,基于 MVC(Model/View/Controller)設(shè)計(jì)模式,對數(shù)據(jù)庫,程序界面,程序功能進(jìn)行了詳細(xì)設(shè)計(jì)。32Android 開發(fā)技術(shù)介紹開發(fā)技術(shù)介紹2.1Android 概述概述Andr

17、oid 是一個(gè)基于 Linux 的開源操作系統(tǒng),主要應(yīng)用于智能手機(jī)、智能手表以及平板電腦等移動智能設(shè)備,由 Google 和開放手機(jī)聯(lián)盟(即 Open Handset Alliance)設(shè)計(jì)開發(fā)。在大中華區(qū)至今尚未有統(tǒng)一中文名稱,而在中國大陸地區(qū)較多人使用“安卓”。Android 來源于硅谷著名“極客”Andy Rubin 創(chuàng)建的Android 公司,Rubin 最初的目標(biāo)是就想把 Android 系統(tǒng)打造成一個(gè)可以對所有軟件開發(fā)人員開放的移動終端平臺。很快這個(gè)公司便受到了青睞,很多人表示打算買下他建立的 Android 公司。在 2005 年的 8 月,Rubin 考慮了 Google 的創(chuàng)

18、始人拉里佩奇提出的合伙意向后,Android 公司就被 Google 就搶先買下了。到了 2007 年 11 月,Google 與包括摩托羅拉、HTC、LG、三星等 84 家手機(jī)廠商、手機(jī)芯片提供商、軟硬件供貨商、移動運(yùn)營商聯(lián)合組成開放手機(jī)聯(lián)盟共同研發(fā)改良 Android 系統(tǒng)。隨后 Google 以 Apache 開源許可證的授權(quán)方式,發(fā)布了 Android 的源代碼。第一部 Android 智能手機(jī)在 2008 年 10 月被發(fā)布了。而后,Android 逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等電子設(shè)備。2011 年的第一個(gè)季度,Android 全球市場份額首次超過了塞班

19、系統(tǒng),當(dāng)仁不讓成為全球第一。 到 2013 年四季度,搭載 Android 智能系統(tǒng)的手機(jī)全球市場份額已經(jīng)達(dá)到了 78.1%。 2013 年 09 月 24 日谷歌所開發(fā)的智能操作系統(tǒng)Android 在迎來了它的 5 歲生日,并且這個(gè)時(shí)候全世界搭載這款智能系統(tǒng)的設(shè)備數(shù)量已經(jīng)超過了 10 億臺。與其他的手機(jī)操作系統(tǒng)相比,Android 操作系統(tǒng)有以下 4 個(gè)突出的優(yōu)點(diǎn):(1)開放性:Android 系統(tǒng)同時(shí)包含了底層操作系統(tǒng)以及移動電話所需的全部軟件,不存在專有權(quán)障礙,開發(fā)平臺允許任何移動終端廠商加入到 Android聯(lián)盟中來,并允許不同廠商可以根據(jù)自己的需求對平臺進(jìn)行定制和擴(kuò)展,無需任何授權(quán)許

20、可費(fèi)用;(2)所有應(yīng)用程序平等:在 Android 系統(tǒng)中,無論是系統(tǒng)核心應(yīng)用,還是第三方應(yīng)用,它們都是完全平等的,用戶可以隨意地將自己手機(jī)中的任意應(yīng)用程序替換成其他所需的應(yīng)用程序,而不用擔(dān)心只能使用自己不喜歡的程序;4(3)應(yīng)用程序間無界限:開發(fā)人員可以很方便地把 Web 上的網(wǎng)絡(luò)數(shù)據(jù)與本地的聯(lián)系人、日歷、位置等信息結(jié)合起來,應(yīng)用程序還可聲明這些信息數(shù)據(jù)可供其他程序使用;(4)快速方便的應(yīng)用程序開發(fā):Android 平臺還為開發(fā)人員提供了海量的實(shí)用庫以及開發(fā)工具,可以讓開發(fā)人員快速的開發(fā)自己的應(yīng)用。2.2Android 系統(tǒng)的四大組件系統(tǒng)的四大組件Android 系統(tǒng)四大基本組件包括 Act

21、ivity(活動),Service(服務(wù)),BroadcastReceiver(廣播接收器)跟 Content Provider(內(nèi)容提供者)。(1)Activity(活動)一個(gè) Activity 作為一個(gè)應(yīng)用程序的組件,負(fù)責(zé)提供一個(gè)屏幕,屏幕上面可以顯示一些 view 同時(shí)可以監(jiān)聽并處理 view 上的事件,用戶可以跟其來交互以完成某項(xiàng)任務(wù),例如拍照、撥號、下載、發(fā)短信等。它是 android 程序的基本功能單元。每一個(gè) activity 被賦予一個(gè)窗口,在上面可以繪制用戶界面。窗口通常填滿整個(gè)屏幕,但也可以小于屏幕而漂浮在其它窗口之上。一個(gè)應(yīng)用程序一般由多個(gè) activitie 組成,他們

22、之間通常是松耦合關(guān)系。通常,會有一個(gè) activity 被指定為mainactivity,作為啟動應(yīng)用程序時(shí)呈現(xiàn)給用戶的那個(gè) activity。每一個(gè) activity 都可以啟動另一個(gè) activity 用來完成不同的動作。每一次另一個(gè) activity 被啟動,前一個(gè) activity 就會被停止,但是系統(tǒng)將停止的activity 保存在一個(gè)棧(“back stack”)上。當(dāng)一個(gè)新 activity 啟動,它被推送到棧頂,取得用戶焦點(diǎn)。Back Stack 符合簡單“后進(jìn)先出”原則,所以,當(dāng)用戶完成當(dāng)前 activityc 操作后點(diǎn)擊后退按鈕,它會被彈出棧并且被銷毀,然后前一個(gè) acti

23、vity 將恢復(fù)并重新獲得用戶焦點(diǎn)。當(dāng)一個(gè) activity 因?yàn)榱硪粋€(gè)新 activity 啟動而停止時(shí),它會收到這種狀態(tài)轉(zhuǎn)變的通知并調(diào)用 activity 生命周期對應(yīng)的回調(diào)函數(shù)。一個(gè) activity 有許多回調(diào)函數(shù),根據(jù) activity 狀態(tài)的變化,無論系統(tǒng)創(chuàng)建、停止、恢復(fù)或者銷毀該activity,開發(fā)者均可以重寫其中的方法以完成該狀態(tài)下需要完成的工作。例如,當(dāng)停止的時(shí)候(onStop), activity 需要釋放任何較大的對象,比如網(wǎng)絡(luò)或者數(shù)據(jù)庫連接。當(dāng) activity 恢復(fù)(onRestart),你可以恢復(fù)被中斷的動作和重新獲得所需要的資源。這些狀態(tài)的轉(zhuǎn)換都是 activi

24、ty 的生命周期的一部分。5圖 2.1 activity 生命周期Activity 之間通過 Intent 進(jìn)行通信。在 Intent 的描述結(jié)構(gòu)中,動作和動作對應(yīng)的數(shù)據(jù)是兩個(gè)最為重要的部分。典型的動作類型有:MAIN(activity 門戶)、PICK 、VIEW、EDIT 等。而動作對應(yīng)的數(shù)據(jù)則用 URI 的形式進(jìn)行表示。比6如想要查看某個(gè)人的聯(lián)系方式,就需要?jiǎng)?chuàng)建一個(gè) Intent,其動作類型為 VIEW,同時(shí)還需要一個(gè)表示這個(gè)人的 URI。與 Intent 有關(guān)系的一個(gè)類叫 IntentFilter。相對于 intent 是一個(gè)明確的做某事的請求,一個(gè) intentfilter 則被用于

25、描述一個(gè) activity 能夠操作哪些 intent。如果想要查看某個(gè)人的聯(lián)系方式,則需要聲明創(chuàng)建一個(gè) IntentFilter,這個(gè)IntentFilter 需要明確知道如何去處理動作(VIEW 類型)和表示這個(gè)人的URI。IntentFilter 也需要在 AndroidManifest.xml 文件中定義。通過解析各個(gè)intent,實(shí)現(xiàn)從一個(gè) activity 跳轉(zhuǎn)到另一個(gè) activity 是很簡單的。在需要跳轉(zhuǎn)時(shí),activity 需要調(diào)用 Content.startActivity(Intent intent)方法。然后,Android 系統(tǒng)會在已安裝的應(yīng)用程序中聲明的 Inte

26、ntFilter 中查找,找到其中最為匹配的 Intent 對應(yīng)的 activity。新的 activity 會接收到 intent 的通知,然后開始啟動。當(dāng)startActivity(Intent intent) 方法被調(diào)用時(shí)將會解析 intent 的動作,這個(gè)機(jī)制提供了兩個(gè)很重要的好處:A、Activity 能夠重復(fù)利用從其它組件中以 Intent 的形式產(chǎn)生的一個(gè)請求;B、Activity 可以在任何時(shí)候被一個(gè)具有相同 IntentFilter 的新的 Activity 取代。(2)Service(服務(wù))Android 中 Service(服務(wù))是運(yùn)行在后臺的東西,級別與 activit

27、y 差不多。既然說 service 是運(yùn)行在后臺的服務(wù),那么它就是不可見的,沒有界面的東西。你可以在后臺啟動一個(gè)服務(wù) Service 來記錄你地理信息位置的改變,播放音樂,或者長時(shí)間內(nèi)監(jiān)聽某一種動作。Service 和其他組件一樣,都是在主線程中運(yùn)行,因此不能用它來做耗時(shí)的請求或操作。你可以在服務(wù)中開一個(gè)新線程,在新線程中做耗時(shí)動作。Service 有兩種啟動方式:Context.startService() 和 Context.bindService()。(3)ContentProvider(內(nèi)容提供者)ContentProvider(內(nèi)容提供者)是 Android 中的四大組件之一。主要用

28、來在程序間共享數(shù)據(jù),也就是通過 ContentProvider 把應(yīng)用中的數(shù)據(jù)共享給其他應(yīng)用,其他應(yīng)用可以通過 ContentProvider 對對應(yīng)應(yīng)用中的存儲的數(shù)據(jù)進(jìn)行讀寫。這些數(shù)據(jù)可以存儲在 SQLite 數(shù)據(jù)庫中、文件系統(tǒng)中、或以任何其他合理的方式。7只有需要在程序間傳遞共享數(shù)據(jù)才需要用到 ContentProvider(內(nèi)容提供者)。比如,通訊錄的數(shù)據(jù)需要被多個(gè)程序訪問調(diào)用,所以需要存儲在一個(gè)內(nèi)容提供者里面以讓其他程序訪問,ContentProvider 的最大好處就是統(tǒng)一了數(shù)據(jù)訪問的方式。(4)BroadcastReceive(廣播接收器)Android 應(yīng)用程序可以使用 Broa

29、dcastReceive(廣播接收器)過濾外部的事件,并且只對對應(yīng)的外部事件(如當(dāng)電量變化時(shí)或者電話呼入時(shí))進(jìn)行接收并做出相應(yīng)響應(yīng)。BroadcastReceive 沒有自己的用戶界面,但是,BroadcastReceive可以啟動一個(gè)新的 activity 或者 serice 來響應(yīng)它們收到的廣播,或者用NotificationManager 來通知用戶。NotificationManager 能用例如聲音、背光燈、震動等很多種方式來引起用戶的注意。一般情況是在手機(jī)狀態(tài)欄上放一個(gè)圖標(biāo)與文字說明,而且通知可以被點(diǎn)擊打開并顯示消息。廣播類型分為普通廣播和有序廣播。普通廣播,是通過Context.

30、sendBroadcast(Intent myIntent)發(fā)送的廣播,而有序廣播則是通過Context.sendOrderedBroadcast(intent, receiverPermission)發(fā)送的廣播。2.3Android 系統(tǒng)架構(gòu)系統(tǒng)架構(gòu)2.3.1 Android 架構(gòu)概述 Android 是一個(gè)由底層操作系統(tǒng)、中介架構(gòu)層及應(yīng)用程序所組成的軟件堆棧架構(gòu)。Android 的架構(gòu)由下而上,它底層的核心為嵌入式 Linux2.6 操作系統(tǒng),向上搭配了 Google 公司為 Android 系統(tǒng)開發(fā)的各種類庫以及 Android 運(yùn)行時(shí),再配合再上面的應(yīng)用程序架構(gòu),就可以開發(fā)各種不同的

31、Android 應(yīng)用程序。Android 的架構(gòu)分為 4 層,共包括 5 個(gè)部分:應(yīng)用程序、應(yīng)用程序框架、程序庫、Android 運(yùn)行時(shí)庫和 Linux 內(nèi)核。架構(gòu)如圖 2.2 所示:8圖 2.2 Android 架構(gòu)的五個(gè)部分2.3.2 Android 應(yīng)用程序新版 Android 會和系列核心應(yīng)用程序包一起被發(fā)布,該程序包括 email 客戶端,地圖 ,輸入法,日歷,瀏覽器,聯(lián)系人管理程序等。這些應(yīng)用程序均使用Java 編程語言設(shè)計(jì)編寫。同樣地,Android 程序開發(fā)者也可以使用 Java 語言編寫屬于他們自己的應(yīng)用程序,而這些程序與系統(tǒng)核心應(yīng)用程序處于平等位置,他們之間友好共處。2.3

32、.3 Android 應(yīng)用程序框架該層主要面向 Android 程序開發(fā)者,它是 Android 應(yīng)用程序開發(fā)的基礎(chǔ),所以開發(fā)者大部分的時(shí)間均在和它打交道。其中,該應(yīng)用程序框架層包括了 10個(gè)部分:活動管理器、內(nèi)容提供者、窗口管理器、包管理器、視圖系統(tǒng)、電話管理器、資源管理器、通知管理器、XMPP 服務(wù)以及位置管理器。在 Android SDK 中,開發(fā)人員可以任意使用系統(tǒng)核心應(yīng)用程序使用的 API。并且,任何一個(gè) Android 應(yīng)用程序均可發(fā)布自身的功能模塊,而其他 Android 應(yīng)用程序也可以使用這些已被發(fā)布的功能模塊。在這樣的重用機(jī)制下,用戶就可以很方便地9替換系統(tǒng)本身的各種應(yīng)用程序

33、組件。2.3.4 Android 系統(tǒng)庫和 Android 運(yùn)行時(shí) Android 系統(tǒng)庫包括了 9 個(gè)部分:圖層管理、WebKit、媒體庫、OpenGLEState、SQLite、FreeType、SGL、libc 以及 SSL。Android 運(yùn)行時(shí)則包括核心庫以及 Dalvik 虛擬機(jī),前者兼容了大多數(shù) Java語言所需要調(diào)用的各種功能函數(shù),同時(shí)又包括了 Android 核心庫,比如android.os、android.media、 等等。后者是一種基于寄存器的 java 虛擬機(jī),Dalvik 虛擬機(jī)主要是完成對生命周期的管理、線程的管理、堆棧的管理、安全和異常的管理和垃圾回收等重要功能

34、。2.3.5 Linux 內(nèi)核Android 架構(gòu)底層是 Linux2.6 系統(tǒng)內(nèi)核,負(fù)責(zé)系統(tǒng)的安全管理、進(jìn)程管理、內(nèi)存管理、驅(qū)動模型以及網(wǎng)絡(luò)協(xié)議棧。Linux 內(nèi)核同時(shí)也作為軟件棧和硬件的抽象層。系統(tǒng)驅(qū)動包括:攝像頭驅(qū)動、顯示驅(qū)動、鍵盤驅(qū)動、WiFi 驅(qū)動、flash內(nèi)存驅(qū)動、Audio 驅(qū)動、Binder(IPC)驅(qū)動以及電源管理等。2.3.6 Android 系統(tǒng)架構(gòu)研究下面介紹幾個(gè)課程表程序開發(fā)使用到的功能特征。(1)應(yīng)用程序架構(gòu):處于系統(tǒng)架構(gòu)第二層,其中已包含很多不同的基礎(chǔ)組件,在開發(fā) Android 應(yīng)用程序時(shí),開發(fā)者可以直接調(diào)用這些基礎(chǔ)組件,這樣可以節(jié)省開發(fā)應(yīng)用程序所使用的時(shí)間,

35、提高開發(fā)效率。(2)Dalvik 虛擬機(jī)器:在 Android 平臺上運(yùn)行的 Java 虛擬機(jī),不是 Sun 公司的標(biāo)準(zhǔn) Java 虛擬機(jī)(即 JVM),而是使用谷歌公司自主研發(fā)的代號為 Dalvik的虛擬機(jī),Dalvik 虛擬機(jī)基于寄存器,而 JVM 則基于棧,Dalvik 在保證 API方面的兼容的同時(shí),針對移動設(shè)備進(jìn)行了大幅優(yōu)化,資源占用更小,運(yùn)行效率更高。(3)SQLite 數(shù)據(jù)庫:SQLite 提供結(jié)構(gòu)化的數(shù)據(jù)讀寫。SQLite 是一款相對輕型的數(shù)據(jù)庫,它是專門為嵌入式設(shè)備設(shè)計(jì)的,目前已經(jīng)在很多嵌入式產(chǎn)品中得到了使用,它占用資源非常非常低。能夠夠支持 Windows/Unix /Li

36、nux 等主流操10作系統(tǒng),同時(shí)能夠跟很多編程語言結(jié)合使用,比如 Java,PHP 等,還有 ODBC接口,同樣比起 Oracle,Mysql 來講,它的處理速度比它們都要快。它也無需安裝跟管理配置,它是一個(gè)將數(shù)據(jù)儲存在單一磁盤文件中的完整的數(shù)據(jù)庫,體積很小只有 250KB,但它支持的數(shù)據(jù)庫大小至 2TB。它雖然很小巧,但是支持的 SQL 語句卻毫不遜色于其它開源的數(shù)據(jù)庫。同時(shí)它還支持并發(fā)處理與事務(wù)功能等等。SQLite 同時(shí)也是一套開放性關(guān)聯(lián)式的資料庫,它的特點(diǎn)在于輕量性的設(shè)計(jì)結(jié)構(gòu),更適合在嵌入式設(shè)備比如手機(jī)上使用。2.4 Eclipse 簡介簡介Eclipse 是一個(gè)開源的、基于 Java

37、 語言的可擴(kuò)展的開發(fā)工具平臺。就其本身而言,它僅僅只是一個(gè)框架與一組服務(wù),用于通過安裝插件組件創(chuàng)建開發(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 還同時(shí)包括了插件開發(fā)環(huán)境(即 Plug-in Development Environment,PDE),這個(gè)組件主要針對那些希望擴(kuò)展 Eclipse 的程序開發(fā)人員,它允許開發(fā)人員開發(fā)與 Eclips

38、e 環(huán)境無縫集成的工具。由于 Eclipse 中的每個(gè)功能都是插件實(shí)現(xiàn),對于給 Eclipse 提供功能插件,以及給用戶提供一個(gè)統(tǒng)一的集成開發(fā)環(huán)境而言,所有的工具開發(fā)人員都具有同等的發(fā)揮場地。這種一致性與平等并不是僅限于 Java 開發(fā)工具。即使 Eclipse 是使用 Java 編程語言開發(fā)的,但它的功能用途并不僅限于 Java 語言;例如,Eclipse還支持諸如 COBOL 和 C/C+ 等編程語言的插件,預(yù)計(jì)將會推出更多語言插件。Eclipse 框架還可用作與軟件設(shè)計(jì)開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),例如內(nèi)容管理系統(tǒng)。2.5 XML 簡介簡介XML 是指可擴(kuò)展標(biāo)記語言(即 EXtens

39、ible Makeup Language),用來存儲和傳輸數(shù)據(jù)的工具。XML 的數(shù)據(jù)是一種以純文本格式存儲的數(shù)據(jù),它提供了一種獨(dú)立于硬件和軟件的數(shù)據(jù)存儲方法。11XML 文檔必須含有根元素,該元素是其它所有根元素的父元素。文檔中的各個(gè)元素形成了一棵文檔樹。這棵樹從根部(即根元素)開始,并擴(kuò)展到樹的最底端。所有元素均可擁有各自的子元素。父、子以及同胞等術(shù)語用來描述它們之間的關(guān)系。父元素?fù)碛衅渥釉?。相同層級上的子元素互為同胞(姐妹或兄弟)。所有元素都可以擁有自己的文本?nèi)容和屬性。XML 語言對大小寫敏感,而且 XML 所有元素都必須正確嵌套,必須擁有關(guān)閉標(biāo)簽,其元素的屬性值都必須加引號。XML

40、的命名規(guī)則:元素名稱可以使用除install new software 選擇 add,將會彈出一個(gè)框,18圖 4.2 安裝 ADT 插件點(diǎn)擊 OK,選擇要安裝的軟件,占 next,然后選擇接受協(xié)議,直到安裝成功,重啟 Eclipse 軟件,設(shè)置 Android SDK Home,Window-refrence,圖 4.3 設(shè)置 SDK 路徑19在 SDK location 中輸入 SDK Tools 路徑:D:English appJDKandroidsdk 點(diǎn)擊 OK,這樣 Android 開發(fā)環(huán)境就已經(jīng)搭建成功了。4.3 Android 課程表的工程課程表的工程4.3.1 Android

41、工程結(jié)構(gòu)Android 工程的基本結(jié)構(gòu)包括:src (即源代碼) 、Res(資源文件)、gen(系統(tǒng)自動生成的常量),其中 Res 主要存放圖片資源和程序界面布局配置(.xml)文件。AndroidMainfes.xml 是程序四大組件的配置驅(qū)動文件,當(dāng)它存在時(shí),Android 程序的四大組件才能實(shí)現(xiàn)正常的運(yùn)行和跳轉(zhuǎn)。表表 4.1 Android 資源的類型和布局資源的類型和布局目錄結(jié)構(gòu)資源類型res/anim/XML動畫文件res/drawable/一些位圖文件res/layout/XML布局文件res/values/各種XML資源文件res/xml/任意的XML文件res/raw/直接拷貝

42、到設(shè)備中的原生文件res/menu/XML菜單文件圖 4.4 Android 工程文件結(jié)構(gòu)204.3.2 AndroidManifest.xml 文件Android 的每一個(gè)程序都需要 AndroidManifest.xml 來啟動程序,Android 每一個(gè)新建的工程的目錄均會生成一個(gè) AndroidManifest.xml 文件,該配置文件是保證整個(gè)軟件能夠正常運(yùn)轉(zhuǎn)的核心文件,此文件中含有程序 Android SDK 版本和程序注冊的各個(gè) Activity,當(dāng)程序中的任何一個(gè)組件被觸發(fā)后,系統(tǒng)均會自動去 AndroidManifest.xml 文件中根據(jù)標(biāo)識來作出該有的操作。任何一個(gè)And

43、roidManifest.Xml 文件的格式均為:Android 系統(tǒng)有一個(gè)編碼的規(guī)定,支持的編碼是utf-8,當(dāng)程序中出現(xiàn)亂碼時(shí),我們須將其編碼格式轉(zhuǎn)化為utf-8.在 AndroidManifest.xml 中會在第一行聲明一句:。它是該系統(tǒng)支持的版本和編碼。在第二行定義了我們需要使用的架構(gòu),該架構(gòu)來自 xmlns:android= http:/ namespace)是一個(gè)命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個(gè)配置文件必須有這個(gè) xmlns,否則程序中的所使用的所有資源將無法找到。下面是程序確定的首先要啟動的 Activity 是 StartActivity。21 在

44、 intent-filter 選項(xiàng)中,有 action 和 category 等等屬性,再將 action 定義為ent.action.MAIN,category 的值為ent.category.LAUNCHER,它們是系統(tǒng)的值,程序在解析到這些常用后就可以確定首先要啟動的 Activity。當(dāng)我們需要通過一個(gè)組件觸發(fā)另一個(gè)組件時(shí),我們將設(shè)定 action 和 category 的其它屬性值,系統(tǒng)會根據(jù)我們設(shè)定的屬性值去 AndroidManifest.Xml 的 application 中尋找標(biāo)識,任何一個(gè) Activity 的action 和 c

45、ategory 是唯一,所以程序在任何時(shí)候都能唯一啟動一個(gè) Activity,這樣,不同的 Activity 之間的跳轉(zhuǎn)就實(shí)現(xiàn)了。在 AndroidManifest.Xml 中有一個(gè)根結(jié)點(diǎn),它是我們需要定義的ADT 版本,例如我們將其值設(shè)定為 android:minSdkVersion=16,則表示此Android 工程所用的版本為 4.1,Android 還有 2.3、4.0、4.2、4.3、4.4 等版本。如果我們需要對網(wǎng)絡(luò)進(jìn)行訪問,比如打開一個(gè)網(wǎng)頁,剛我還需要設(shè)置一個(gè)網(wǎng)絡(luò)訪問的權(quán)限 uses-permission,將其值設(shè)置為android.permission.INTERNET,我們的

46、程序就可以訪問網(wǎng)絡(luò)了。當(dāng)然 uses-permission 還有很多其它的權(quán)限,例如瀏覽器數(shù)據(jù)存取權(quán)限,GPS 定位權(quán)限,允許訪問硬件等等。當(dāng)程序的任何一個(gè)組件要用到時(shí),都必須在 AndroidManifest.Xml 文件中聲明。四大組件要使用前都需要聲明,其聲明方式如下:其中聲明 provider 時(shí)還需要聲明其授權(quán) authorities。每一個(gè)組件里面都有很多的屬性,我們會根據(jù)程序具體的需要而定義不同的屬性。225數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)5.1 概要分析概要分析從程序流程來分,用戶在第一次進(jìn)入程序時(shí),在短暫的歡迎頁面后,程序?qū)M(jìn)入主頁面,這個(gè)頁面會給我們顯示課程信息,而這些課程信息從哪里

47、來呢?從我們的數(shù)據(jù)庫來,而且,我們在操作課程編輯界面時(shí),除了 UI 展示以外其他的方式都是在操作數(shù)據(jù)庫,所以,我們有必要對進(jìn)行數(shù)據(jù)庫設(shè)計(jì),以管理我們的課程信息。程序的配置信息主要存放在 preference 中,程序在數(shù)據(jù)顯示時(shí)在 preference中讀取必要的配置信息。 5.2 數(shù)據(jù)庫分析數(shù)據(jù)庫分析數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個(gè)倉庫是在計(jì)算機(jī)存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復(fù)度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并且可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性質(zhì)、規(guī)模,以及

48、所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇。本程序數(shù)據(jù)存取方面主要用到了 SQLite 數(shù)據(jù)庫,SQLite 主要用來存儲課程信息。5.3 SQLite 數(shù)據(jù)表設(shè)計(jì)數(shù)據(jù)表設(shè)計(jì)與創(chuàng)建與創(chuàng)建SQLite 數(shù)據(jù)庫是 Android 系統(tǒng)中非常重要的數(shù)據(jù)存儲方法,它是 Android系統(tǒng)唯一支持的數(shù)據(jù)庫類型,也是 Android 應(yīng)用程序進(jìn)行持久化存儲的三種方式之一。 SQLite 數(shù)據(jù)庫是 SQL 數(shù)據(jù)庫的簡化版,支持大部分 SQL 操作。SQLite 是 Android 應(yīng)用程序中非常常用的一種數(shù)據(jù)存儲手段。5.3.1 數(shù)據(jù)表的設(shè)計(jì)根據(jù)對本程序的需求分析,本程序只需要用到一張數(shù)據(jù)表。該數(shù)

49、據(jù)表主要用來存儲已經(jīng)添加的課程,用戶每添加一個(gè)課程信息就會在23該表中新增一條記錄,并且自動生成一個(gè)唯一的 id,用以區(qū)別每條記錄,該表結(jié)構(gòu)設(shè)計(jì)如下:表表 5.1 數(shù)據(jù)表數(shù)據(jù)表字段名稱數(shù)據(jù)類型是否主鍵說明_idinteger是課程編號namevarchar(30)否課程名稱teachervarchar(25)否老師名稱weekvarchar(30)否課程所在星期day_weekinteger否課程所在星期幾class_startinteger否課程開始節(jié)數(shù)class_endinteger否課程結(jié)束節(jié)數(shù)adrvarchar(25)否上課教室課程信息的 E-R 圖如圖 5.1 所示:課程信息課程編

50、號課程名稱老師名稱上課周數(shù)星期幾開始節(jié)數(shù)圖 5.1 課程信息 E-R 圖該數(shù)據(jù)庫設(shè)計(jì)初衷為保存整個(gè)學(xué)期的課程,這樣實(shí)現(xiàn)整個(gè)學(xué)期的課程排布,包括數(shù)據(jù)的存儲,課程查看都比較方便。5.3.2 SQLite 數(shù)據(jù)庫的創(chuàng)建創(chuàng)建數(shù)據(jù)庫主要用到了 DataBaseHelper 類,該類繼承了 SQLiteOpenHelper結(jié)束節(jié)數(shù)上課教室24類,實(shí)現(xiàn)了數(shù)據(jù)庫、數(shù)據(jù)表的創(chuàng)建。具體方法如下:package com.example.mycourse;import android.content.Context;import android.database.DatabaseErrorHandler;import

51、 android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper / 數(shù)據(jù)庫版本號 private static final int DATABASE_VERSION = 1; / 數(shù)據(jù)庫名 private static final String DATABASE

52、_NAME = MyDB.db; / 數(shù)據(jù)表名 public static final String TABLE_NAME = CourseTable; / 構(gòu)造函數(shù),調(diào)用父類 SQLiteOpenHelper 的構(gòu)造函數(shù) public DatabaseHelper(Context context, String name, CursorFactory factory,int version, DatabaseErrorHandler errorHandler) super(context, name, factory, version, errorHandler); public Datab

53、aseHelper(Context context, String name, CursorFactory factory,int version) super(context, name, factory, version); public DatabaseHelper(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION);Override public void onCreate(SQLiteDatabase db) / 調(diào)用時(shí)間:數(shù)據(jù)庫第一次創(chuàng)建時(shí) onCreate()方法會被調(diào)用 / 這個(gè)方法中主要

54、完成創(chuàng)建數(shù)據(jù)庫后對數(shù)據(jù)庫的操作 / 構(gòu)建創(chuàng)建表的 SQL 語句 StringBuffer sBuffer = new StringBuffer();25 sBuffer.append(CREATE TABLE + TABLE_NAME + (); sBuffer.append(_id integer primary key autoincrement, ); sBuffer.append(name varchar(30),); sBuffer.append(teacher varchar(25),); sBuffer.append(week varchar(30),); sBuffer.app

55、end(day_week integer,); sBuffer.append(class_start integer,); sBuffer.append(class_end integer,); sBuffer.append(adr varchar(25); / 執(zhí)行創(chuàng)建表的 SQL 語句 db.execSQL(sBuffer.toString(); / 即便程序修改重新運(yùn)行,只要數(shù)據(jù)庫已經(jīng)創(chuàng)建過,就不會再進(jìn)入這個(gè) onCreate 方法 Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersi

56、on) db.execSQL(DROP TABLE IF EXISTS + TABLE_NAME); onCreate(db); Android 還另外提供了一個(gè) SQLiteDatabase 類,調(diào)用 SQLiteOpenHelper 類中的 getWritableDatabase()和 getReadableDatabase()方法將返回該類的對象。SQLiteDatabase 類里有一些操作數(shù)據(jù)庫的方法,使用該類可以對數(shù)據(jù)庫進(jìn)行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為 CRUD)。我們可以設(shè)計(jì)一個(gè)類 DBManager

57、,用于封裝 CRUD,讓我們更加方便的操作數(shù)據(jù)庫。下面是數(shù)據(jù)庫添加(Create)操作的例子package com.example.mycourse;import java.util.ArrayList;import android.content.Context;import android.database.Cursor;26import android.database.sqlite.SQLiteDatabase;import android.util.Log;public class DBManager private DatabaseHelper helper; private SQ

58、LiteDatabase db; public DBManager(Context context) helper = new DatabaseHelper(context); db = helper.getWritableDatabase(); /* * 添加課程 insert */ public void add(ArrayList courses) db.beginTransaction(); / 開始事務(wù) try for (Course course : courses) db.execSQL(INSERT INTO + DatabaseHelper.TABLE_NAME+ VALUE

59、S(null, ?, ?, ?, ?, ?, ?, ?), new Object ,course.teacher, course.s, course.day_week, course.class_start,course.class_end, course.adr ); / 帶兩個(gè)參數(shù)的 execSQL()方法,采用占位符?,把參數(shù)值放在后面,順序?qū)?yīng) / 一個(gè)參數(shù)的 execSQL()方法中,用戶輸入特殊字符時(shí)需要轉(zhuǎn)義27 / 使用占位符有效區(qū)分了這種情況 db.setTransactionSuccessful(); / 設(shè)置事務(wù)成功完成 finally db.endT

60、ransaction(); / 結(jié)束事務(wù) 286界面設(shè)計(jì)界面設(shè)計(jì)6.1 界面分析界面分析Android 的每個(gè)可視化界面,都擁有其唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如文字,圖像,顏色的引用,運(yùn)行程序時(shí),可以通過 java 代碼對各配置文件進(jìn)行讀取與修改。這樣就能形成不同的可視化界面和漂亮的視覺效果。課程表每個(gè)界面都是一個(gè) Activity,Android 工程在每個(gè)Activity 啟動的時(shí)候都會首先執(zhí)行 Oncreate()方法,在 Oncreate()里調(diào)用setContentView(int layoutResID)方法加載布局文件(.xml) ,參數(shù)為資源 I

溫馨提示

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

評論

0/150

提交評論