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