第一篇:Android 課程設(shè)計報告
課 程 設(shè) 計
課程名稱: 嵌入式技術(shù)課程設(shè)計 設(shè)計題目: 基于Android系統(tǒng)的小查詢工具 學(xué) 院: 信息工程與自動化學(xué)院 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 年 級: 2010級 學(xué)生姓名: 指導(dǎo)教師: 日 期: 2013/7/8
教 務(wù) 處 制
課 程 設(shè) 計 任 務(wù) 書
信息工程與自動化 學(xué)院 計算機(jī)科學(xué)與技術(shù) 專業(yè) 2010 年級 學(xué)生姓名:
課程設(shè)計題目: 基于Android系統(tǒng)的小查詢工具 課程設(shè)計主要內(nèi)容:
通過本課程設(shè)計,使學(xué)生鞏固軟件工程的基本概念、原理,熟悉安卓應(yīng)用開發(fā)環(huán)境和技術(shù),學(xué)會完成一個移動終端應(yīng)用軟件的分析、設(shè)計、編碼測試和安裝,將理論與實(shí)際相結(jié)合,強(qiáng)化學(xué)生的項目開發(fā)和團(tuán)隊意識,提高學(xué)生分析能力和創(chuàng)新能力
基本理論
1、Android系統(tǒng)的開發(fā)方法及基本原理
2、JavaEE應(yīng)用程序設(shè)計開發(fā)技術(shù) 實(shí)驗(yàn)方法與基本要求
要求學(xué)生掌握Windows環(huán)境下Android系統(tǒng)開發(fā)的一般方法,AndroidSdk 集成開發(fā)環(huán)境的構(gòu)建及JavaEE應(yīng)用程序的開發(fā)。整個設(shè)計過程必須由學(xué)生自己獨(dú)立完成,課程設(shè)計按二人一組,分組進(jìn)行全過程的設(shè)計。
設(shè)計內(nèi)容
1、Windows環(huán)境下構(gòu)建Android系統(tǒng)的開發(fā)環(huán)境
2、基于Android模擬手機(jī),設(shè)計手機(jī)應(yīng)用程序
3、將程序下載的Android手機(jī)上應(yīng)用
設(shè) 計 指 導(dǎo) 教 師(簽字): 教學(xué)基層組織負(fù)責(zé)人(簽字):
年 月 日
目錄
一、課程設(shè)計的目的及要求...................................3 1.1 課程設(shè)計的目的.......................................3 1.2 課程設(shè)計要求………………………………………………………………………3
二、Android應(yīng)用程序開發(fā)背景....................................................................3 2.1開發(fā)背景...............................................3 2.2開發(fā)環(huán)境...............................................4
三、Android應(yīng)用程序開發(fā)環(huán)境搭建............................5 3.1所需軟件的下載…………………………………………………………………… 5 3.2相應(yīng)軟件的安裝.........................................5
四、“小查詢工具”的設(shè)計與實(shí)現(xiàn)???????????????10 1.總體設(shè)計??????????????????????? 10 1)界面設(shè)計?????????????????????10 2)功能設(shè)計?????????????????????12 2.詳細(xì)設(shè)計??????????????????????? 12 1)模塊設(shè)計?????????????????????12 2)編碼實(shí)現(xiàn)?????????????????????12 3.手機(jī)上運(yùn)行截圖???????????????????? 14
五、總結(jié)與體會???????????????????????16
基于Android系統(tǒng)的小查詢工具設(shè)計
一、課程設(shè)計的目的及要求 1.1 課程設(shè)計的目的
1)復(fù)習(xí)、鞏固Java語言的基礎(chǔ)知識,進(jìn)一步加深對Java語言的理解和掌握;搭建一個完整的安卓開發(fā)環(huán)境。
2)課程設(shè)計為學(xué)生提供了一個既動手又動腦,獨(dú)立實(shí)踐的機(jī)會,將課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生的分析解決實(shí)際問題的能力,提高學(xué)生適應(yīng)實(shí)際,實(shí)踐編程的能力;
3)培養(yǎng)學(xué)生在項目開發(fā)中團(tuán)隊合作精神,創(chuàng)新意識及能力。
1.2 課程設(shè)計要求
1)通過Eclipse搭建一個完整的安卓開發(fā)環(huán)境。
2)在安卓開發(fā)環(huán)境上編寫一個簡單的安卓軟件,并且能夠在手機(jī)上運(yùn)行。
二、Android應(yīng)用程序開發(fā)背景 2.1開發(fā)背景
1.智能手機(jī)的市場
(1)功能多樣化的智能手機(jī)挑戰(zhàn)全球PC出貨量
移動互聯(lián)網(wǎng)時代的來臨,直接促進(jìn)了搭載智能操作系統(tǒng)、具有強(qiáng)大擴(kuò)展性的智能手機(jī)、平板電腦等移動終端產(chǎn)業(yè)的蓬勃發(fā)展。來自美國最大的風(fēng)險投資機(jī)構(gòu)KPCB的數(shù)據(jù)顯示,全球智能手機(jī)出貨量正在以遠(yuǎn)高于臺式電腦、筆記本電腦出貨量的速度快速增長,該機(jī)構(gòu)預(yù)計2013年全球智能手機(jī)出貨量將達(dá)到4.13億,超過臺式電腦與筆記本電腦出貨量的總和。
(2)智能手機(jī)的用戶使用數(shù)量正在高速增長。據(jù)市場調(diào)研機(jī)構(gòu)Gartner信息,2011年全球智能手機(jī)的總出貨量將會達(dá)到4.68億部,相比2010年實(shí)現(xiàn)了57.7%的增長,而谷歌Android操作系統(tǒng)將會在今年之內(nèi)成為全球最大的智能手機(jī)操作系統(tǒng)。另外,全球市場調(diào)研機(jī)構(gòu)IDC預(yù)計未來5年中國手機(jī)市場上,智能手機(jī)替代傳統(tǒng)功能手機(jī)的趨勢將日益明顯,未來5年中國智能手機(jī)市場復(fù)合增長率將達(dá)到34.1%,人們對IT設(shè)備智能化的向往是這一增長率能夠?qū)崿F(xiàn)的主要因素,并且與其他國家相比,中國智
在path變量(已存在不用新建)添加變量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin(注意變量值之間用“;”隔開)
檢驗(yàn)環(huán)境變量是否配置成功:“開始”-->“運(yùn)行”-->輸入“javac”-->“Enter”,如果能正常打印用法說明配置成功!
選擇目標(biāo)工具所在的文件夾跳出安裝工具的目錄
勾選目錄點(diǎn)擊Next,即可開始安裝;安裝的詳細(xì)目錄:
安裝完成后,可以在Preference處查找到:
4.安裝SDK(SDK解壓即可使用)
安裝好以后,通過SDK下載開發(fā)所需的源文件包:
這個操作只有在聯(lián)網(wǎng)的時候才能進(jìn)行下載。
四、“小查詢工具”的設(shè)計與實(shí)現(xiàn)
1.總體設(shè)計
1)界面設(shè)計
主界面:
02)功能設(shè)計
對于這次課程設(shè)計編寫的小查詢工具,我們需要它能夠幫助我們完成的功能為:手機(jī)歸屬地查詢、身份證信息查詢、區(qū)號郵編城市查詢。對于小查詢工具的每個查詢功能,當(dāng)用戶點(diǎn)擊相應(yīng)的功能時,它能夠幫助用戶查詢用戶所需要的信息。
2.詳細(xì)設(shè)計
1)模塊設(shè)計
I、主界面模塊(選題模塊)
該模塊是查詢軟件的主界面,在該模塊界面有三個功能:手機(jī)歸屬地查詢、身份證信息查詢、區(qū)號郵編城市查詢。用戶根據(jù)自己所要查詢的信息,選擇相應(yīng)的功能就可以查詢用戶想知道的信息。II、手機(jī)歸屬地查詢模塊
在該模塊中,當(dāng)用戶在輸入框中輸入一個正確的號碼時,點(diǎn)擊“開始查詢”按鈕,就可以查詢到該手機(jī)號碼的歸屬地。III、身份證信息查詢模塊
在該模塊中,當(dāng)用戶在輸入框中輸入一個正確的身份證號碼時,再點(diǎn)擊“開始查詢”按鈕,就可以查詢到該身份證號碼所代表的人的生日、性別以及出生地址。IV、區(qū)號郵編城市查詢模塊
在該模塊中,當(dāng)用戶在輸入框中輸入一個正確的區(qū)號或者郵編或者城市名稱時,點(diǎn)擊“開始查詢”按鈕,就可以查詢到其對應(yīng)的省份、城市、區(qū)號、郵編以及歸屬地。
2)編碼實(shí)現(xiàn):
各包內(nèi)的JAVA源文件:
界面切換等活動的基本代碼:
3.手機(jī)上運(yùn)行截圖
手機(jī)截圖:
516-
第二篇:Android應(yīng)用課程設(shè)計題目
Android應(yīng)用與開發(fā)課程設(shè)計題目
注意事項:
1、小組可選下列題目中的一題完成課程設(shè)計,或者自擬題目。
2、課程設(shè)計于第16周和17周小課進(jìn)行演示講解, 并要求17周結(jié)束前以小組為單位將完整代碼+設(shè)計文檔上傳至教師FTP。
3、分組說明:2~3人一組,合理分工合作充分
一、題目及要求:
1、基于Android平臺的在線通信錄
功能要求:實(shí)現(xiàn)通信錄的在線備份還原功能,能把系統(tǒng)的通信錄一鍵導(dǎo)入導(dǎo)出。
實(shí)現(xiàn)要求:客戶端基于Android平臺實(shí)現(xiàn),服務(wù)端技術(shù)自定
用例場景:小明丟了手機(jī),只好去搶購了一個小米同時把手機(jī)卡補(bǔ)辦回來,需要把之前手機(jī)的200個聯(lián)系人補(bǔ)上。好在小明之前把所有聯(lián)系人都備份到服務(wù)器了,只需要下載在線通信錄后,登錄平臺,一鍵還原即可。
2、基于Android平臺的云記事本軟件
功能要求:具有記事本的基本功能,可以記錄,批量處理。同時具備在線備份和分享功能。在線備份:能實(shí)時備份各種編輯中或者編輯完成的文章。分享:一鍵分享到微博、微信等等社交媒體。
實(shí)現(xiàn)要求:客戶端基于Android平臺實(shí)現(xiàn),服務(wù)端基于PHP+Ajax實(shí)現(xiàn)
3、基于在線地圖的軌跡跟蹤服務(wù)
功能要求:
1、能動態(tài)、實(shí)時記錄設(shè)備位置。
2、能回放設(shè)備位置軌跡并在地圖上顯示。3.能在手機(jī)或者網(wǎng)頁上顯示地圖軌跡 實(shí)現(xiàn)要求:在線地圖可以選擇百度地圖或者Google地圖,客戶端基于Android,服務(wù)端技術(shù)自定
用例場景:小明今天80歲,患老年癡呆又喜歡出遠(yuǎn)門,經(jīng)常發(fā)生走丟事故。小小明為了能實(shí)時掌握小明的行蹤,特意為他配備了裝有跟蹤服務(wù)的智能機(jī),從此小明再也不怕走丟了。
4、基于Android平臺的綠色瀏覽器
功能要求:
1、瀏覽器基本功能:前進(jìn)后退歷史記錄等。2.云書簽、收藏夾功能
實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端技術(shù)自定
用例場景:換手機(jī)后,之前收藏的網(wǎng)站都沒有了~~~~~~~ 如果有云備份功能,馬上恢復(fù)收藏夾,訪問各個老朋友~~~~
5、基于Android平臺的財務(wù)軟件
功能要求:
1、記賬和統(tǒng)計功能。2.實(shí)時備份 實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端技術(shù)自定
用例場景:隨手記,一家人共用一個賬號,所有支出都清清楚楚
6、基于Android平臺的社交軟件
功能要求:參考微信、微博等
實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端基于PHP+Ajax實(shí)現(xiàn)
7、基于Android平臺的IM軟件開發(fā)
功能要求:參考微信、WhatApp等
實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端技術(shù)自定
8、基于Android平臺的在線播放器
功能要求:參考酷狗
實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端技術(shù)自定
9、基于Android平臺的新聞客戶端
功能要求:參考網(wǎng)易新聞客戶端、Zaker等 實(shí)現(xiàn)要求:客戶端基于Android,服務(wù)端技術(shù)自定
10、自擬題目:必須跟老師溝通后,老師同意方可。要求:有客戶端和服務(wù)端,具備一定的實(shí)用性。
二、設(shè)計文檔要求
整體要求:使用Eclipse集成開發(fā)環(huán)境完成課程設(shè)計,界面友好,代碼的可維護(hù)性好,有必要的注釋和相應(yīng)的文檔。文檔具體書寫內(nèi)容要求如下: ? 系統(tǒng)的需求分析 ? 系統(tǒng)的概要設(shè)計 ? 設(shè)計與實(shí)現(xiàn)部分 ? 運(yùn)行畫面截圖
? 每一部分附上關(guān)鍵性代碼 ? 心得體會(每個人都要寫)概要設(shè)計說明書(描述軟件系統(tǒng)架構(gòu)、邏輯架構(gòu)、物理架構(gòu)、部署結(jié)構(gòu)、功能架構(gòu)及關(guān)鍵技術(shù),關(guān)鍵業(yè)務(wù)模塊需通過UML圖(用例圖、時序圖、狀態(tài)圖、包圖、主要類圖等)進(jìn)行詳細(xì)描述、需求規(guī)格說明書(包括功能設(shè)計、非功能性設(shè)計、系統(tǒng)用例);
三、方式
1、小組成員獨(dú)立完成;
2、小組成員最多不能超過3。人
四、評分標(biāo)準(zhǔn)
根據(jù)提交的設(shè)計文檔、程序功能的實(shí)現(xiàn)(要求演示)進(jìn)行考核:
? 無任何文檔,無程序,得 0 分;
? 文檔混亂,沒有思路,程序不能運(yùn)行,1分;
? 文檔描述清晰,程序?qū)崿F(xiàn)了基本功能,3分;
? 文檔描述清晰準(zhǔn)確,思路清晰,程序?qū)崿F(xiàn)了要求的所有功能,4.5分;
? 文檔完備,設(shè)計合理有創(chuàng)新,報告清晰明確,深入分析了自己進(jìn)行實(shí)驗(yàn)的體會感想,程序?qū)崿F(xiàn)了全部功能,功能完善,并有其它的創(chuàng)新實(shí)現(xiàn),5分。
第三篇:安卓android課程設(shè)計報告
湘潭大學(xué)課程設(shè)計報告
課
程 課
題指
導(dǎo)
名
稱______手機(jī)安卓開發(fā)_______ 名
稱______天氣預(yù)報APP_______老
師______周唯___________
姓
名____黃柳________
學(xué)
號___2012600719_________ 班
級____12計2班________
小
組______棒棒糖_______ 時
間____2015年1月26 日_____
一、需求分析(一)引言
1.編寫目的
1.1 為用戶提供一個顯示天氣預(yù)報的軟件,可以根據(jù)百度地圖顯示用戶需求的城市位置,以及用圖標(biāo)表示各城市對應(yīng)的氣象信息,可以簡潔的表示出“晴、雨、雪”和“氣溫”氣象信息。
2.項目風(fēng)險
2.1(項目風(fēng)險識別是指找出影響項目目標(biāo)順利實(shí)現(xiàn)的主要風(fēng)險因素,并識別出這些風(fēng)險究竟有哪些基本特征、可能會影響到項目的那些方面。)2.2 聯(lián)網(wǎng)收費(fèi)視用戶電話運(yùn)營商的收費(fèi)標(biāo)準(zhǔn)決定
2.3 手機(jī)或者無線信號不好時,可能無法連接或更新天氣情況 3.預(yù)期讀者和閱讀建議
3.1 預(yù)期讀者:會使用已經(jīng)安裝安卓系統(tǒng)的手機(jī)或者平板電腦及其他移動設(shè)備的用戶
3.2 閱讀建議:讀者應(yīng)通過該文檔可以了解相關(guān)項目的需求分析、使用注意事項以及可能存在的風(fēng)險
4.產(chǎn)品范圍
2.2 手機(jī),平板電腦,MP4,導(dǎo)航儀,上網(wǎng)本,電紙書等使用安卓系統(tǒng)的數(shù)碼領(lǐng)域(二)綜合描述
1.產(chǎn)品的狀況
1.1 Android是一種以Linux為基礎(chǔ)的開放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。目前未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機(jī)。2005年由Google收購注資,并組建開放手機(jī)聯(lián)盟開發(fā)改良,逐漸擴(kuò)展到平板電腦及其他數(shù)碼領(lǐng)域上。我們開發(fā)的相關(guān)項目正是一個在安卓平臺上開發(fā)的軟件,可以用這個軟件來實(shí)現(xiàn)用戶在一些簡單的手持設(shè)備如手機(jī)或者平板電腦等上面及時的了解到用戶所在城市的天氣預(yù)報。
2.產(chǎn)品的功能
2.1 天氣信息獲取 2.2 天氣信息顯示 3.系統(tǒng)配置功能
3.1 用戶類和特性
安卓平臺用戶:安卓新用戶可以使用軟件來了解用戶所在城市的天氣預(yù)報。熟悉安卓平臺用戶還可以選擇對相關(guān)軟件的系統(tǒng)按自己的喜好進(jìn)行配置并保留自己的個性化系統(tǒng)配置。
安卓軟件開發(fā)者:安卓軟件開發(fā)者(喜好者)可以通過相關(guān)的開源代碼來了解軟件運(yùn)行的原理。
3.2 運(yùn)行環(huán)境
軟件需要在支持安卓系統(tǒng)的可移動設(shè)備中正確安裝才能正常運(yùn)行。安卓版本需在2.2及以上,同時建議用戶如果是在手機(jī)移動設(shè)備使用的話,需確保手機(jī)支持聯(lián)網(wǎng)服務(wù)。
3.3 設(shè)計和實(shí)現(xiàn)上的限制
Eclipse是開發(fā)相關(guān)應(yīng)用軟件的首選集成開發(fā)環(huán)境,安卓開發(fā)環(huán)境首先需要安裝支持java應(yīng)用軟件運(yùn)行的java開發(fā)軟件包(即JDK),然后安裝集成開發(fā)環(huán)境Eclipse,最后安裝Android SDK的Eclipse的ADT插件。
Android SDK和Eclipse的ADT插件是必須使用的。
軟件支持高效、快速的數(shù)據(jù)存儲方式,包括快速數(shù)據(jù)存儲方式SharedPreferences、文件存儲和輕量級關(guān)系數(shù)據(jù)塊SQLite,可軟件可以使用適合的方法對數(shù)據(jù)進(jìn)行進(jìn)程保存和訪問。
3.4 假設(shè)和約束(依賴)
軟件必須在安卓系統(tǒng)下才可以正常運(yùn)行,若需要獲取天氣更新或者是短信服務(wù),需確保用戶的數(shù)碼設(shè)備支持聯(lián)網(wǎng)及短信服務(wù)。(三)外部接口需求 1 2 用戶的手機(jī)設(shè)備可以支持聯(lián)網(wǎng)。用戶界面 軟件接口
軟件提供輕量級的進(jìn)程間通信機(jī)制Intent,實(shí)現(xiàn)跨進(jìn)程組件通信。4 訪問硬件的API庫函數(shù)通訊接口
4.1 HTTP 協(xié)議:有多種接口可以調(diào)用你可以用Java類庫封裝的HttpConnection 或者用Apach的開源項目的 HttpGet 或者HttpPost,服務(wù)器端 需要 編寫 Serlvet來響應(yīng)客戶端的請求。
4.2 Sokcet : 就是 服務(wù)器端 不斷監(jiān)聽 雙方約定好的端口號,客戶端通過服務(wù)器IP去請求連接,連接成功后,得到Socket 的輸入輸出流,直接操作即可。(四)系統(tǒng)功能需求
天氣信息顯示和獲取
功能描述:需有一個顯示天氣情況的用戶界面,要求百度地圖顯示各城市位置(如:北京、長沙、廣州等3-5個城市),以及用圖標(biāo)表示各城市對應(yīng)的氣象信息,表示出“晴、雨、雪”和“氣溫”簡潔氣象信息。輸入輸出信息:
輸入:當(dāng)觸摸某一城市對應(yīng)的氣象圖標(biāo)時,顯示該城市當(dāng)天的溫度、濕度、風(fēng)向和雨雪詳細(xì)天氣信息,并預(yù)報該城市后面幾天的氣象信息。
輸出:氣象信息的獲取,從百度上獲取天氣預(yù)報信息,這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的,這個后臺服務(wù)可以按照一定時間間隔,并將各城市的天氣信息保存到SQLite數(shù)據(jù)庫中。
二、概要設(shè)計
三、Ui界面
我們的ui界面秉承著清新的風(fēng)格開發(fā)出來的。
整個軟件界面使用一個線性布局,讓所有的元素從屏幕上方向下填充,并給整個線性布局進(jìn)行權(quán)重劃分。
線性布局的最上方是一個TextView,顯示當(dāng)前城市的名字,接著往下是一個相對布局,相對布局的左側(cè)是天氣的圖片,右側(cè)是三個天氣相關(guān)的參數(shù)。
接著是一個線性布局,布局的左上方是三個TextView,分別顯示“預(yù)報”,“趨勢”,“指數(shù)”功能,通過點(diǎn)擊相應(yīng)的TextView,下方的一個線性布局展現(xiàn)不同的功能。功能面板文字的下方是一個大的線性布局,用來顯示未來三天的天氣情況。在這個大的線性布局中,又含有三個小的線性布局,這三個小線性布局中包含了日期,天氣圖片和風(fēng)力狀況等(這些控件從上到下垂直居中顯示)。
通過給整個XML文件中LinearLayout布局的的子級布局添加權(quán)重,讓各個部分從上到下有序的顯示,讓當(dāng)前城市名稱在屏幕的上方顯示,功能面板位于屏幕下方顯示,以匹配不同尺寸屏幕,讓軟件的顯示效果更好。軟件的整體布局風(fēng)格是清新,優(yōu)美,大方。
四、功能設(shè)計
功能上實(shí)現(xiàn)實(shí)時的獲取天氣信息,獲取百度api返回數(shù)據(jù),解析百度api返回的json數(shù)據(jù),根據(jù)解析到的數(shù)據(jù)繪制氣溫趨勢圖,并將數(shù)據(jù)反饋到app上的相應(yīng)的區(qū)域。通過使用ViewPager類,來實(shí)現(xiàn)天氣預(yù)報軟件中多個城市間的無縫頁面切換。由于組員都缺少JAVA開發(fā)經(jīng)驗(yàn),對安卓開發(fā)也不熟悉,所以我們決定采用調(diào)用API的方法來實(shí)時獲取不同城市的天氣預(yù)報數(shù)據(jù),在這次項目中我們將采用百度的車載API。通過HttpClient類和AsyncTask異步類來獲取網(wǎng)絡(luò)數(shù)據(jù)。最后通過Gson類來解析獲取的網(wǎng)絡(luò)數(shù)據(jù),并給頁面中的所有的布局空間設(shè)置id,在AsyncTask得到網(wǎng)絡(luò)數(shù)據(jù)之后將這些數(shù)據(jù)同步到軟件界面上,呈現(xiàn)給用戶。
三、功能模塊
我主要負(fù)責(zé)監(jiān)聽程序的設(shè)計,監(jiān)聽用戶按鍵,并進(jìn)行相應(yīng)的動作。
只要用戶滑動面板,就切換到下一個城市,并獲得下一個城市的天氣數(shù)據(jù),顯示在面板上。每隔15分鐘自動更新天氣數(shù)據(jù)。主要代碼如下:
下面的代碼處理網(wǎng)絡(luò)連接部分,用GSON解析網(wǎng)絡(luò)上獲得的Json網(wǎng)頁:
下面代碼訪問網(wǎng)絡(luò):
四、心得體會
通過這個軟件的實(shí)現(xiàn),我對Android編程有了更加濃厚的興趣,對Android中的常用類和接口有了進(jìn)一步的認(rèn)識。對編程有了一種新的看法,編程在我的學(xué)習(xí)中不再是那樣的枯燥無味,而是時時刻刻充滿驚喜。雖然這是一個挺小的項目但它對我在編程方面起到了一種激勵的作用。我會在此基礎(chǔ)上更加努力做出更好的程序。
第四篇:android天氣預(yù)報報告
Android天氣預(yù)報論文
學(xué) 院: 專 業(yè): 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 日 期:
電子信息工程學(xué)院 計算機(jī)應(yīng)用 11033801135
郎紅 黃煒 2013年11月13
一、項目背景
現(xiàn)有的3G技術(shù)和移動互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,智能手機(jī)功能的不斷增強(qiáng),讓基于Android平臺的查詢需求越來越多。
本軟件就是利用現(xiàn)有的網(wǎng)絡(luò)快速獲取網(wǎng)絡(luò)上的天氣信息并顯示到手機(jī)終端上,為用戶提供實(shí)時的天氣查詢和近期天氣查詢服務(wù),為工作、出行等帶來便利。通過Web Service等技術(shù)讓用戶體驗(yàn)到前所未有的移動計算。
二、需求分析
(一)功能需求
在這個綜合示例中,有一個顯示天氣情況的用戶界面,可以通過圖片和文字顯示當(dāng)前和未來幾天的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等。這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的,這個后臺服務(wù)按照一定時間間隔,從搜索引擎上獲取天氣預(yù)報信息,并將天氣信息保存在后臺服務(wù)中。示例還需要提供基于SMS短信的天氣數(shù)據(jù)服務(wù),其他手機(jī)用戶可以向本示例所在的手機(jī)上發(fā)送SMS短信,在短信中包含特定的關(guān)鍵字,則可以將已有的天氣情況通過SMS短信回復(fù)給用戶。最后,每個被發(fā)送的SMS短信都會被記錄下來,用戶可以瀏覽或刪除這些記錄信息。
(二)界面需求
從上面的描述中可以基本了解軟件的功能需求,但為了將需求分析過程變得簡單明了,首先找出用戶界面上需要顯示的內(nèi)容。功能描述中有“顯示天氣情況的用戶界面”和“用戶可以瀏覽或刪除這些記錄信息”,除此以外,一般應(yīng)用軟件還應(yīng)有顯示配置信息的界面。因此,本示例應(yīng)該包含三個用戶界面: 顯示天氣預(yù)報的用戶界面、顯示已發(fā)送SMS短信的用戶界面、瀏覽和設(shè)置配置信息的用戶界面
(三)內(nèi)部功能
從用戶界面出發(fā),分析隱藏在界面后面的內(nèi)部功能,這些功能則是程序正常運(yùn)行的基礎(chǔ)(1)顯示天氣預(yù)報的用戶界面 ;
①獲取搜索引擎的天氣數(shù)據(jù) ②保存天氣數(shù)據(jù)信息(2)顯示SMS短信的用戶界面
①根據(jù)關(guān)鍵字監(jiān)視SMS短信 ②發(fā)送包含天氣信息的SMS短信 ③將發(fā)送SMS短信的相關(guān)信息寫入數(shù)據(jù)庫(3)瀏覽和設(shè)置配置信息的用戶界面
①將用戶設(shè)置的配置信息保存到數(shù)據(jù)庫 ②啟動時讀取數(shù)據(jù)庫中的配置信息 ③支持恢復(fù)缺省設(shè)置
三、程序設(shè)計
(一)用戶界面設(shè)計
根據(jù)需求中的用戶界面分析,應(yīng)用程序應(yīng)包含三個主要的用戶界面,每個用戶界面的顯示內(nèi)容
在“顯示天氣預(yù)報的用戶界面”中,顯示目標(biāo)城市的當(dāng)前的天氣狀況,包括城市名稱、溫度、濕度、風(fēng)向、雨雪情況和獲取數(shù)據(jù)時間等信息。在界面的下方顯示未來四天的天氣狀況,但僅包括溫度和雨雪情況
在“顯示已發(fā)送SMS短信的用戶界面”中,顯示每個回復(fù)短信的時間、目標(biāo)手機(jī)號碼、城市名稱、當(dāng)天的天氣狀況和未來一天的天氣狀況
在“瀏覽和設(shè)置配置信息的用戶界面”中,顯示希望獲取天氣預(yù)報的城市名稱、獲取數(shù)據(jù)的頻率和短信監(jiān)視的關(guān)鍵字,并允許用戶設(shè)置是否提供短信服務(wù),以及是否記錄回復(fù)短信信息
用戶界面草圖:
(二)數(shù)據(jù)庫設(shè)計
本示例主要有兩種數(shù)據(jù)需要存儲
配置信息:因?yàn)榕渲眯畔⒌臄?shù)據(jù)量很小,從Android支持的存儲方式上分析,可以保存在SharedPreference、文件或SQLite數(shù)據(jù)庫中
SMS短信服務(wù)信息: SMS短信服務(wù)信息是一個隨著時間推移而不斷增加的數(shù)據(jù),屬于文本信息,而且有固定的格式,因此適合使用SQLite數(shù)據(jù)庫進(jìn)行存儲
綜合分析這兩個需要存儲的數(shù)據(jù),選擇SQLite數(shù)據(jù)庫作為存儲數(shù)據(jù)的方法(1)配置信息:
配置信息中主要保存目標(biāo)城市的名稱,訪問搜索引擎更新天氣信息的頻率,請求天氣信息服務(wù)短信的關(guān)鍵字,以及是否提供短信服務(wù)和是否記錄短信服務(wù)內(nèi)容,配置信息的數(shù)據(jù)庫表結(jié)構(gòu)
(2)SMS短信服務(wù)信息:
SMS短信服務(wù)信息主要保存請求天氣服務(wù)短信的發(fā)送者、短信內(nèi)容、接收時間和回復(fù)信息的內(nèi)容,SMS短信服務(wù)信息的數(shù)據(jù)庫表結(jié)構(gòu)
(三)程序設(shè)計
程序模塊設(shè)計:
從功能需求上分析,可以將整個應(yīng)用程序劃分為4個模塊,分別是用戶界面、后臺服務(wù)、數(shù)據(jù)庫適配器和短信監(jiān)聽器。下圖是模塊結(jié)構(gòu)圖
從模塊結(jié)構(gòu)圖中不難看出,后臺服務(wù)是整個應(yīng)用程序的核心,主要包含數(shù)據(jù)獲取子模塊和短信服務(wù)子模塊。數(shù)據(jù)獲取子模塊負(fù)責(zé)周期性的從搜索引擎獲取天氣信息;短信服務(wù)子模塊則負(fù)責(zé)處理接收到的服務(wù)請求短信,并發(fā)送包含天氣信息的短信。
后臺服務(wù)由用戶界面通過Intent啟動,啟動后的后臺服務(wù)可以在用戶界面關(guān)閉后仍然保持運(yùn)行狀態(tài),直到用戶通過用戶界面發(fā)送Intent停止服務(wù),或系統(tǒng)因資源不足而強(qiáng)行關(guān)閉服務(wù)。
用戶界面從后臺服務(wù)獲取天氣信息,而沒有直接通過網(wǎng)絡(luò)訪問搜索引擎的天氣數(shù)據(jù)。一方面是因?yàn)楹笈_服務(wù)使用了工作線程,通過后臺服務(wù)獲取天氣數(shù)據(jù)可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng)。另一方面,在用戶關(guān)閉界面后,后臺服務(wù)仍然需要更新天氣信息,以保證短信服務(wù)數(shù)據(jù)的準(zhǔn)確性。用戶界面通過直接調(diào)用數(shù)據(jù)庫適配器,向SQLite數(shù)據(jù)庫中讀寫配置信息,或?qū)MS短信服務(wù)信息進(jìn)行操作。
短信監(jiān)聽器是一個BroadcastReceiver,監(jiān)視所有接收到的短信。如果短信中包含用戶自定義的關(guān)鍵字,短信監(jiān)聽器則會認(rèn)為這條短信是天氣服務(wù)請求短信,將短信的相關(guān)信息寫入后臺服務(wù)的短信服務(wù)隊列。如果用戶在配置信息中選擇無需提供短信服務(wù),短信監(jiān)聽器仍然繼續(xù)監(jiān)聽所有短信,只是后臺服務(wù)不再允許將服務(wù)請求短信寫入服務(wù)隊列。
數(shù)據(jù)庫適配器封裝了所有對SQLite數(shù)據(jù)庫操作的方法,用戶界面和后臺服務(wù)會調(diào)用它實(shí)現(xiàn)數(shù)據(jù)庫操作。
四、項目功能描述
(一)系統(tǒng)主要功能
本軟件要完成在android手機(jī)上實(shí)現(xiàn)天氣的即時預(yù)報。所涉及的功能有: 1.啟動程序后可以進(jìn)行城市、更新頻率的設(shè)置;
2.可以通過圖片和文字顯示當(dāng)前和未來的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等。使用效果圖實(shí)現(xiàn)與相應(yīng)天氣的結(jié)合。
3.這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的,這個后臺服務(wù)可以按照一定的時間間隔,通過搜索引擎提供的公共接口獲取天氣預(yù)報信息,并將天氣信息保存在本地數(shù)據(jù)庫中。(二)工程結(jié)構(gòu)
在程序開發(fā)階段,首先確定“天氣預(yù)報軟件”的工程名稱為WeatherDemo,包名稱為edu.hrbeu.WeatherDemo。然后根據(jù)程序模塊設(shè)計的內(nèi)容,建立WeatherDemo示例,WeatherDemo示例源代碼的文件結(jié)構(gòu):
為了使源代碼文件的結(jié)構(gòu)更加清晰,WeatherDemo示例設(shè)置了多個命名空間中,分別用來保存用戶界面、數(shù)據(jù)庫、后臺服務(wù)、SMS短信和天氣數(shù)據(jù)的源代碼文件,WeatherDemo示例的命名空間
WeatherDemo示例將不同用途的源代碼文件放置在不同的命名空間中。WeatherDemo示例的文件用途說明
Android資源文件保存在/res的子目錄中。/res/drawable目錄中保存的是圖像文件,/res/layout目錄中保存的是布局文件,/res/values目錄中保存的是用來定義字符串和顏色的文件,/res/xml目錄保存的是XML格式的數(shù)據(jù)文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,資源文件名稱與用途:
(三)數(shù)據(jù)庫適配器
數(shù)據(jù)庫適配器是最底層的模塊,主要用于封裝用戶界面和后臺服務(wù)對SQLite數(shù)據(jù)庫的操作。數(shù)據(jù)庫適配器的核心代碼主要在DBAdapter.java文件中 用戶保存配置信息的類文件Config.java Config.java文件的全部代碼如下: package edu.hrbeu.WeatherDemo.DB;2 3 public class Config { 4 public static String CityName;5 public static String RefreshSpeed;6 public static String ProvideSmsService;7 public static String SaveSmsInfo;8 public static String KeyWord;9 10 public static void LoadDefaultConfig(){ 11 CityName = “New York”;12 RefreshSpeed = “60”;13 ProvideSmsService = “true”;14 SaveSmsInfo = “true”;15 KeyWord = “NY”;16 }17 } 從代碼中不難看出,公有靜態(tài)屬性CityName、RefreshSpeed、ProvideSmsService、SaveSmsInfo和KeyWord,完全對應(yīng)數(shù)據(jù)庫中保存配置信息表的屬性(參照表12.1)。在程序啟動后,保存在數(shù)據(jù)庫中的城市名稱、更新頻率、是否提供短信服務(wù)、是否保存短信信息和關(guān)鍵字等內(nèi)容,將被讀取到這個Config類中,供其它模塊做邏輯判斷時使用。
代碼第10行的LoadDefaultConfig()函數(shù),保存了程序內(nèi)置的配置參數(shù)此函數(shù)會在兩個情況下被調(diào)用,用戶主動選擇“恢復(fù)缺省設(shè)置”;首次啟動程序時,用來初始化保存配置參數(shù)的數(shù)據(jù)庫,DBAdapter類與以往介紹過的數(shù)據(jù)庫適配器類相似,都具有繼承SQLiteOpenHelper的幫助類DBOpenHelper。DBOpenHelper在建立數(shù)據(jù)庫時,同時建立兩個數(shù)據(jù)庫表,并對保存配置信息的表進(jìn)行了初始化。
在DBAdapter類中,用戶界面會調(diào)用SaveConfig()和LoadConfig(),從SQLite數(shù)據(jù)庫中保存和讀取配置信息。保存配置信息時,SaveConfig()函數(shù)會將Config類中的公有靜態(tài)屬性寫入數(shù)據(jù)庫;反之,LoadConfig()會將數(shù)據(jù)庫中的配置信息寫入Config類中的公有靜態(tài)屬性。
另一個會調(diào)用DBAdapter類的是后臺服務(wù),即WeatherService類。后臺服務(wù)主要調(diào)用SaveOneSms(SimpleSms sms)、DeleteAllSms()和GetAllSms()函數(shù),分別用來保存SMS短信記錄、刪除所有SMS數(shù)據(jù)記錄和獲取所有SMS數(shù)據(jù)記錄。在GetAllSms()函數(shù)中,調(diào)用了一個私有函數(shù)ToSimpleSms(Cursor cursor),用來將從數(shù)據(jù)庫獲取的數(shù)據(jù)轉(zhuǎn)換為SimpleSms實(shí)例數(shù)組。
(四)短信監(jiān)聽器
短信監(jiān)聽器本質(zhì)上是BroadcastReceiver,用于監(jiān)聽Android系統(tǒng)所接收到的所有SMS短消息,可以在應(yīng)用程序關(guān)閉后仍然繼續(xù)運(yùn)行,核心代碼在SmsReceiver.java文件中。在介紹SmsReceiver類前,先說明用來保存SMS短信內(nèi)容和相關(guān)信息的SimpleSms類。android.telephony.SmsMessage是Android提供的短信類,但這里需要一個更精簡、小巧的類,保存少量的信息,因此構(gòu)造了SimpleSms類,僅用來保存短信的發(fā)送者、內(nèi)容、接收時間和返回結(jié)果。這里的“返回結(jié)果”指的是返回包含天氣信息的短信內(nèi)容。
SimpleSms.java文件完整代碼: package edu.hrbeu.WeatherDemo.SMS;2 import java.text.SimpleDateFormat;3 4 public class SimpleSms { 5 public String Sender;6 public String Body;7 public String ReceiveTime;8 public String ReturnResult;9 10 public SimpleSms(){ 11 } 12 public SimpleSms(String sender, String body){ 13 this.Sender = sender;14 this.Body = body;15
SimpleDateFormat tempDate = new SimpleDateFormat(“yyyy-MM-dd” + “ ” + “hh:mm:ss”);16 this.ReceiveTime = tempDate.format(new java.util.Date());17 this.ReturnResult = “";18 } 19 } 代碼第5行到第8行的屬性Sender、Body、ReceiveTime和ReturnResult,分別表示SMS短信的發(fā)送者、內(nèi)容、接收時間和返回結(jié)果。第15行和第16行在SimpleSms類的構(gòu)造函數(shù)中,直接將系統(tǒng)時間以“年-月-日 小時:分:秒”的格式保存在ReceiveTime屬性中。
SmsReceiver類繼承BroadcastReceiver,重載了onReceive()函數(shù)。系統(tǒng)消息的識別和關(guān)鍵字的識別并不復(fù)雜,只要接收android.provider.Telephony.SMS_RECEIVED類型的系統(tǒng)消息,則表明是Android系統(tǒng)接收到了短信。將短信的內(nèi)容拆分后,判斷消息內(nèi)容是否包含用戶定義的關(guān)鍵字,則可判斷該短信是否為天氣服務(wù)請求短信。
最后,在AndroidManifest.xml文件中注冊短信監(jiān)聽器SmsReceiver,并聲明可接收短信的用戶許可android.permission.RECEIVE_SMS。如果注冊的組件不在根命名空間中,則需要將子命名空間寫在類的前面,例如下面在代碼第1行中,因?yàn)镾msReceiver.java文件在edu.hrbeu.WeatherDemo.Service命名空間下,而不在根命名空間edu.hrbeu.WeatherDemo下,因此注冊組件時需要在類名SmsReceiver前添加.Service。
后臺服務(wù)是WeatherDemo示例的核心模塊,在用戶啟動后持續(xù)在后臺運(yùn)行,直到用戶手動停止服務(wù),后臺服務(wù)功能,發(fā)送包含天氣信息的SMS短信(短信發(fā)送子模塊,周期性的獲取搜索引擎的天氣數(shù)據(jù)(數(shù)據(jù)獲取子模塊)。
1.短信發(fā)送子模塊
后臺服務(wù)在單獨(dú)的線程上運(yùn)行,首先調(diào)用ProcessSmsList()函數(shù),檢查短信隊列中是否有需要回復(fù)的短信,然后調(diào)用Get搜索引擎WeatherData()函數(shù)獲取天氣數(shù)據(jù),最后線程暫停1秒,以釋放CPU資源,WeatherDemo示例后臺服務(wù)的核心代碼在WeatherService.java文件中。下面是線程調(diào)用函數(shù)的部分代碼 :
private static ArrayList
private void ProcessSmsList(){ 2 if(smsList.size()==0){ 3 return;4 } 5 SmsManager smsManager = SmsManager.getDefault();6 PendingIntent mPi = PendingIntent.getBroadcast(this, 0, new Intent(), 0);7 while(smsList.size()>0){ 8 SimpleSms sms = smsList.get(0);9 smsList.remove(0);10
smsManager.sendTextMessage(sms.Sender, null, Weather.GetSmsMsg(), mPi, null);11 sms.ReturnResult = Weather.GetSmsMsg();12 SaveSmsData(sms);13 }14 } 發(fā)送短信是使用SmsManager對象的sendTextMessage()方法,該方法一共需要5個參數(shù),第1個參數(shù)是收件人地址,第2個參數(shù)是發(fā)件人地址,第3個參數(shù)是短信正文,第4個參數(shù)是發(fā)送服務(wù),第5個參數(shù)是送達(dá)服。sendTextMessage()方法的收件人地址和短信正文是不可為空的參數(shù),而且一般GSM規(guī)范要求短信內(nèi)容要控制在70個漢字以內(nèi)。代碼第8行的Weather.GetSmsMsg(),用來獲得供回復(fù)短信使用的天氣信息,因?yàn)榭紤]到短信的字?jǐn)?shù)限制,僅返回當(dāng)天和未來一天的天氣狀況。
2.數(shù)據(jù)獲取模塊
天氣數(shù)據(jù)是從搜索引擎提供的Web Service中獲取的,調(diào)試WeatherDemo示例時需要網(wǎng)絡(luò)環(huán)境,數(shù)據(jù)的獲取地址是 http://004km.cn/ig/api?hl=en&weather=New%20York。New%20York表示獲取紐約(New York)的天氣數(shù)據(jù),%20表示一個空格。讀者可以將上面提供的地址輸入到Web瀏覽器,在瀏覽器中直接看到XML格式的天氣數(shù)據(jù)。
WeatherAdapter類實(shí)現(xiàn)了利用URL獲取位圖的私有函數(shù)GetURLBitmap(),以及用來下載和解析XML數(shù)據(jù)的公有函數(shù)GetWeatherData()。后臺服務(wù)在調(diào)用GetWeatherData()函數(shù)解析搜索引擎提供的天氣數(shù)據(jù)時,會不斷調(diào)用GetURLBitmap()函數(shù),將XML數(shù)據(jù)中的天氣圖標(biāo)根據(jù)圖標(biāo)地址下載到本地保存。GetURLBitmap()函數(shù)的代碼如下 :
private static Bitmap GetURLBitmap(String urlString){ 2 URL url = null;3 Bitmap bitmap = null;4 try { 5 url = new URL(”http://004km.cn" + urlString);6 } 7 catch(MalformedURLException e){ 8 e.printStackTrace();9 }10 11 try{ 12 HttpURLConnection conn =(HttpURLConnection)url.openConnection();13 conn.connect();14 InputStream is = conn.getInputStream();bitmap = BitmapFactory.decodeStream(is);16 is.close();17 }catch(IOException e){ 18 e.printStackTrace();19 } 20 return bitmap;21 } 第12行代碼構(gòu)造了支持HTTP功能的URLConnection,第14行返回字節(jié)流,第15行使用字節(jié)流產(chǎn)生位圖,第16行關(guān)閉字節(jié)流。
GetWeatherData()函數(shù)首先根據(jù)指定的URL地址,從網(wǎng)絡(luò)獲取字節(jié)流數(shù)據(jù),然后調(diào)用輕量級XML解析器XmlPullParser對天氣數(shù)據(jù)進(jìn)行解析,并將解析結(jié)果保存在Weather類的公有靜態(tài)屬性中。
(六)用戶界面
在用戶界面設(shè)計上,采用可多分頁快速切換的TabHost控件。WeatherDemo示例TabHost控件的每個標(biāo)簽頁與一個Activity相關(guān)聯(lián),這樣就可以將不同標(biāo)簽頁的代碼放在不同的文件中,而且每個標(biāo)簽頁都可以有獨(dú)立的選項菜單。
WeatherDemo類是繼承TabActivity的Tab標(biāo)簽頁,共設(shè)置3個標(biāo)簽頁 TAB1的標(biāo)題為“天氣預(yù)報”,關(guān)聯(lián)的Activity為WeatherActivity,TAB2的標(biāo)題為“歷史數(shù)據(jù)”,關(guān)聯(lián)Activity為HistoryActivity,TAB2的標(biāo)題為“系統(tǒng)設(shè)置”,關(guān)聯(lián)Activity為SetupActivity。
WeatherDemo.java中的代碼只是用戶界面的框架,設(shè)置了Tab標(biāo)簽頁的圖標(biāo)、標(biāo)題和所關(guān)聯(lián)的Activity,標(biāo)簽頁中的具體顯示內(nèi)容還要依賴于每個Activity所設(shè)置的界面布局
界面布局包含 WeatherActivity、HistoryActivity、SetupActivity 1.WeatherActivity用戶界面
WeatherActivity在啟動時并不能直接顯示最新的天氣信息,用戶需要通過選項菜單的“啟動服務(wù)”開啟后臺服務(wù),然后點(diǎn)擊“刷新”獲取最新的天氣狀況。
選項菜單還提供“停止服務(wù)”和“退出”選項。WeatherActivity使用的布局文件是tab_weather.xml,這是個較為繁瑣的界面布局,多次使用了垂直和水平的線性布局。
2.historyActivity界面
HistoryActivity主要用來顯示SQLite數(shù)據(jù)庫中的短信服務(wù)信息,顯示的內(nèi)容包括發(fā)送者的手機(jī)號碼、時間和回復(fù)短信內(nèi)容。為了能夠以列表的形式顯示多行數(shù)據(jù),并且定制每行數(shù)據(jù)的顯示布局,這里使用了以往章節(jié)沒有介紹過的ListActivity(Android.app.ListActivity)。
ListActivity可以不通過setContentView()設(shè)置布局,也不必重載onCreate()函數(shù),而直接將顯示列表加載到ListActivity,增加了使用的便利性。在WeatherDemo示例中,仍然使用setContentView()設(shè)置布局,這樣做的好處是可以在界面中設(shè)置更為復(fù)雜的顯示元素,例如在列表上方增加了提示信息“SQLite數(shù)據(jù)庫中的短信服務(wù)信息”。下方的代碼是HistoryActivity.java文件的onCreate()函數(shù)中的設(shè)置布局和加載適配器的關(guān)鍵代碼。1.setContentView(R.layout.tab_history);2 setListAdapter(dataAdapter);3.SetupActivity界面
SetupActivity主要用來保存和恢復(fù)用戶設(shè)置的運(yùn)行參數(shù),第一次啟動或恢復(fù)缺省設(shè)置(在選項菜單中)后,界面上會顯示系統(tǒng)的缺省設(shè)置,包括城市名稱、更新頻率、是否提供短信服務(wù)、是否記錄短信服務(wù)數(shù)據(jù)信息和短信服務(wù)的關(guān)鍵字。
SetupActivity.java文件中,主要功能集中在RestoreDefaultSetup()、UpdateUI()和SaveConfig()三個函數(shù)上。RestoreDefaultSetup()用來恢復(fù)系統(tǒng)的缺省配置 ;UpdateUI()會根據(jù)保存在Config類中的數(shù)據(jù)更新SetupActivity的界面控件,SaveConfig()根據(jù)界面配置更改Config類,然后調(diào)用數(shù)據(jù)庫適配器的DBAdapter.SaveConfig()函數(shù),將Config類中的配置數(shù)據(jù)寫入數(shù)據(jù)庫。
五、總結(jié)
通過該項目的實(shí)戰(zhàn)演練讓我受益匪淺,在這個過程中,我學(xué)會了很多知識,比如Android環(huán)境的搭建、Activity、Service、ContentProvider、SQLite的用法等,但我學(xué)會的最重要的一點(diǎn)是,利用現(xiàn)有的資源去解決問題,在圖書館、網(wǎng)絡(luò)上尋找答案。
雖然,這個軟件目前運(yùn)行良好,但是我認(rèn)為代碼的健壯性還很差,在整個工程的構(gòu)思方面也不足,用戶操作界面還不夠靈活,這些問題還需要今后逐一解決。
第五篇:android實(shí)習(xí)報告
實(shí)習(xí)報告
實(shí)習(xí)目的:
生產(chǎn)實(shí)習(xí)是計算機(jī)科學(xué)與技術(shù)專業(yè)重要的實(shí)踐性教學(xué)活動,其目的是使學(xué)生們進(jìn)一步加深對所學(xué)知識的理解,理論聯(lián)系實(shí)際,鞏固所學(xué)有關(guān)計算機(jī)基礎(chǔ)理論知識和基本技能,學(xué)習(xí)有關(guān)計算機(jī)最新技術(shù)方面的應(yīng)用,增強(qiáng)學(xué)生對計算機(jī)在社會生活,社會生產(chǎn)中應(yīng)用的感性認(rèn)識,深入了解計算機(jī)在各個領(lǐng)域中的應(yīng)用狀況,學(xué)生在實(shí)習(xí)的同時,進(jìn)行一定的社會實(shí)踐與調(diào)查活動,對于提高學(xué)生的綜合能力和全面素質(zhì)具有重要意義。
實(shí)習(xí)內(nèi)容:
Android主要有四大組件,分別為:Activity 活動、Service 服務(wù)、Broadcast receivers 廣播接受者、Content Provider 內(nèi)容提供者。還有上激活組件Intent。
1.Activity
Activity就是一個用戶可以直接接觸并看到的窗口,當(dāng)新建一個Android Project后可以
看到在工程文件下的src中有一個已建好的java類FirstActivity,系統(tǒng)也會自動為他配備一個布局文件main.xml,并在AndroidManifest中對此Activity進(jìn)行注冊。
用戶想要自己創(chuàng)建一個Activity,首先創(chuàng)建一個java類繼承自Activity,可以為他配備一個布局文件用來顯示Activity創(chuàng)建后的布局。最后在主配置文件manifest.xml中對創(chuàng)建的Activity進(jìn)行注冊,這一步是必不可少的,沒有注冊Activity無法運(yùn)行。
在manifest.xml中會有許多的Activity,但系統(tǒng)一次只能運(yùn)行一個Activity,因此必須修選定一個最先運(yùn)行的Activity。在注冊Activity是加入
可指定當(dāng)前的Activity為主Activity最先被執(zhí)行。其他Activity可借助激活組件Intent
進(jìn)行啟動。通過Intent還可實(shí)現(xiàn)來了兩個Activity之間傳遞數(shù)據(jù)
Activity具有生命周期,他有三種狀態(tài):運(yùn)行狀態(tài)、暫停信息和停止?fàn)顟B(tài)。運(yùn)行態(tài)是在屏幕臺前位于當(dāng)前任務(wù)堆棧的頂部,即獲取焦點(diǎn)的Activity。暫停信息是指失去了焦點(diǎn)但對于用戶仍可見,此狀態(tài)下當(dāng)程序處于低內(nèi)存是仍有可能被消除。停止?fàn)顟B(tài)是指完全被另一個Activity覆蓋,但他仍然保留所有的信息與狀態(tài)。
2.Android圖形設(shè)計UI
Android UI控件一般寫在布局文件中,此次實(shí)習(xí)所學(xué)控件主要有:TextView,EditText
Button、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。將這些控件及相應(yīng)的屬性寫在layout下的布局文件中就可在與其綁定的Activity中顯示相應(yīng)的對話框,文本框,按鈕等。
Android的界面布局是為了使控件能夠更友好的呈現(xiàn)在用戶的眼中。主要有:絕對布局Absolutelayout、線形布局LinearLayout、框架布局FramLayout、相對布局RelativeLayout和
表格布局TableLayout。其中框架布局適合于單張圖片的顯示。
3.Service 服務(wù)
Service事實(shí)運(yùn)行在后臺的一段代碼。他與Activity一樣有相似的生命周期,但不同的是他不能自己運(yùn)行,必須通過某一個Activity或者其他的Context對象來調(diào)用。
Service可通過調(diào)用Context.StartService()啟動,還可以通過ServiceConnection來訪問Service??梢詫⑵渌慕M件綁定到Service上。
4.數(shù)據(jù)存儲
Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實(shí)現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。
openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/
/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt,通過點(diǎn)擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data/
/files目錄就可以看到該文件。
openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式android有一套自己的安全模型,當(dāng)應(yīng)用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當(dāng)該應(yīng)用要去訪問其他資源比如文件的時候,就需要userid匹配。默認(rèn)情況下,任何應(yīng)用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的(位于/data/data/
/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有這樣其他程序才能正確訪問。
實(shí)習(xí)流程:
2月18——2月27日,老師對于ANDROID開發(fā)進(jìn)行了詳細(xì)的講解,其內(nèi)容包括:ANDROID 的背景介紹,發(fā)展過程,自身的優(yōu)勢與不足.Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解
2月28日——3月2日: 學(xué)生自己開發(fā)ANDROID 3GABS項目,老師答疑及驗(yàn)收
實(shí)習(xí)心得:
時間過的飛快,半個月的實(shí)習(xí)就要結(jié)束了,在這次實(shí)習(xí)中我們不僅學(xué)習(xí)了相關(guān)的專業(yè)知識而且讓我對Android系統(tǒng)又有了一個更加深入的了解,它也是我們計算機(jī)專業(yè)的一個新的方向并且發(fā)展很迅速,為了今后的發(fā)展我們還需不斷努力學(xué)習(xí)!我國的信息產(chǎn)業(yè)還很落后,隨著社會的發(fā)展和國家的支持,手機(jī)上網(wǎng)是社會發(fā)展的趨勢,到時候手機(jī)上網(wǎng)將無處不在!之前我對Android系統(tǒng)的了解之停留在應(yīng)用的層次上,對于更深層次的了解是很少的,通過這次實(shí)習(xí),讓我對Android系統(tǒng)有了一個更深層次的了解,同時它頁使我意識到無論朝哪個方向發(fā)展,主要還是要扎實(shí)深刻地學(xué)習(xí),同時也得不斷努力探索!
IT業(yè)發(fā)展速度一直都是相當(dāng)驚人的,不想被社會淘汰,我們就得必須不斷地學(xué)習(xí),現(xiàn)在的社會不再是一勞永逸,其他行業(yè)也是如此,我們必須不斷地拿知識來武裝自己,不然被淘汰那是肯定的!現(xiàn)在就業(yè)難原因其實(shí)在于競爭的家具,為了在競爭中得到成功,我們必須時時刻刻學(xué)習(xí),還學(xué)到了很多做人做事的道理,不僅懂得了要想在計算機(jī)這一行立足必須具備扎實(shí)的技術(shù)理論知識,還必須學(xué)會與人溝通,合作的能力,同時更懂得了嘗試的重要性,很多事情不是聽說是困難的它就是困難的,只有親自去做親自去體會才知道,其實(shí)它并沒有那么困難,這就是實(shí)踐的重要性!無論做什么事情都必須要堅持,只有堅持下去,才會成功!事在人為,就怕不做!我們不能怕失敗,關(guān)鍵是要從失敗中總結(jié)經(jīng)驗(yàn),帶著勇氣,帶著自信,堅持不懈,踏踏實(shí)實(shí)。這一次的實(shí)習(xí)是短暫的,但我收獲良多?;仡櫼郧八哌^的路,太多的無奈和迷茫,這次實(shí)習(xí)就像是我人生道路上的航標(biāo),為我指明了前景的方向,是我對自己的前途充滿了信心,我不僅知道了在人生的岔道口更適合朝哪個方向前進(jìn)!更知道了在今后的道路上怎么去武裝自己!
實(shí)習(xí)結(jié)果: