Android3G手機天氣預報系統(tǒng)-畢業(yè)論文_第1頁
Android3G手機天氣預報系統(tǒng)-畢業(yè)論文_第2頁
Android3G手機天氣預報系統(tǒng)-畢業(yè)論文_第3頁
Android3G手機天氣預報系統(tǒng)-畢業(yè)論文_第4頁
Android3G手機天氣預報系統(tǒng)-畢業(yè)論文_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

分分 類類 號:號:TP315TP315 學校代碼:學校代碼:1146011460 學學號:號:0841310508413105 南京曉莊學院本科生畢業(yè)論文南京曉莊學院本科生畢業(yè)論文 A Android3Gndroid3G 手機天氣預報系統(tǒng)手機天氣預報系統(tǒng) A Android3Gndroid3G phonephone weatherweather forecastforecast systemsystem 所在院(系所在院(系) : 學學 生生 姓姓 名:名: 指指 導導 老老 師:師: 研究起止日期研究起止日期: 二二一一一一年十二月至二年十二月至二一二一二年五月年五月 學位論文獨創(chuàng)性聲明學位論文獨創(chuàng)性聲明 本人鄭重聲明: 1. 堅持以“求實、創(chuàng)新”的科學精神從事研究工作。 2. 本論文是我個人在導師指導下進行的研究工作和取得的研究成果。 3. 本論文中除引文外,所有實驗、數(shù)據(jù)和有關材料均是真實的。 4. 本論文中除引文和致謝的內(nèi)容外,不包含其他人或其它機構已經(jīng)發(fā)表或 撰寫過的研究成果。 5. 其他同志對本研究所做的貢獻均已在論文中作了聲明并表示了謝意。 作者簽名: 日期: 目錄目錄 緒論1 1.1 研究內(nèi)容1 1.2 研究意義1 1.3 可行性研究1 1.4 研究現(xiàn)狀和發(fā)展趨勢. 2 二 、系統(tǒng)分析4 2.1 研究目標4 2.2 需求分析4 2.3 性能分析5 三、平臺與關鍵技術研究. 6 3.1 Android 開發(fā)環(huán)境介紹 6 3.2 Android 開發(fā)平臺搭建 6 3.3 Android 關鍵技術研究 7 四、系統(tǒng)設計10 4.1 模塊.10 4.2 數(shù)據(jù)交互12 4.3 用戶交互13 4.4 系統(tǒng)管理15 4.5 數(shù)據(jù)庫設計與實現(xiàn). 19 4.6 程序模塊設計24 五、系統(tǒng)實現(xiàn)與測試28 5.1 系統(tǒng)實現(xiàn)28 5.2 系統(tǒng)測試31 參考文獻34 致謝35 摘摘要要 隨著智能手機的快速普及,智能手機操作系統(tǒng)市場非?;钴S。為了讓智能手機用戶能夠隨時隨 地查詢互聯(lián)網(wǎng)所提供的服務,讓手機能夠通過移動網(wǎng)以及互聯(lián)網(wǎng)訪問 Web 網(wǎng)站并處理各種各樣的業(yè) 務,一種高效的辦法就是將應用系統(tǒng)的功能拓展到手機終端上。因此,智能手機的應用軟件及其需 要的服務將有廣闊的發(fā)展前景。 在如今這個智能手機系統(tǒng)群雄紛爭的時候,它采用 Linux 內(nèi)核,開放手機聯(lián)盟成員可以任意使 用和修改 SDK 包,系統(tǒng)的開源性使其具有良好的拓展性。這款軟件包括了操作系統(tǒng)、用戶界面和應 用程序,即智能手機工作所需要的全部軟件。2008 年 Google 推出了一款名為 Android 的開源智能 手機操作系統(tǒng), Android 的最大特點是其開放性體系架構,不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而 且還支持各種可擴展的用戶體驗,包括豐富的圖形組件、多媒體支持功能以及強大的瀏覽器。因此, 對于軟件從業(yè)人員來說,Android 平臺具有無限的吸引力。 本文就在分析討論 Android 手機軟件開發(fā)技術原理的基礎上,開發(fā)出能為用戶提供更好的基于 Android 平臺的 3G 手機氣象軟件。 關鍵字:關鍵字:androidandroid;天氣預報系統(tǒng);智能手機平臺;天氣預報系統(tǒng);智能手機平臺 ABSTRACT With the rapid proliferation of smart phones, smart phone operating system market is very active. In order to allow smart phone users to be able to query the services provided by the Internet anytime, anywhere, so that the phone can be accessed through the mobile network and the Internet Web site and handle a variety of business, an efficient way is the application function of the system extended to the mobile terminal on. Therefore, the smart phone applications and the service will have broad prospects for development. Warlords dispute of this smart phone system today, it uses the Linux kernel, the Open Handset Alliance members can be used and modify the SDK package, open source, it has a good expansion. This software includes the operating system, user interface and applications, smart phones need to work all of the software. In 2008, Google launched a product called the Android open-source smart phone operating system, Androids biggest characteristic is its open architecture, not only has a very good development, debugging environment, but also supports a variety of scalable user experience. Including rich graphical components, and multimedia support features and great browser. Therefore, for software professionals, the Android platform has unlimited appeal. On the basis of analysis and discussion of the Android mobile phone software development technical principles, developed to provide users with better 3G handsets based on Android platform of meteorological software Keywords:android;weather software;smart phone platform 1 緒論 1.11.1 研究內(nèi)容研究內(nèi)容 Android 平臺天氣預報系統(tǒng)是基于 Android 手機平臺,基于 Java,從 Google 上獲取天氣預報信 息,開發(fā)出針對使用 Android 平臺的手機天氣預報系統(tǒng)的應用軟件。 為了讓智能手機用戶能夠隨時隨地查詢互聯(lián)網(wǎng)所提供的服務,讓手機能通過移動網(wǎng)和互聯(lián)網(wǎng)訪 問 Web 網(wǎng)站并處理各項業(yè)務,是一種高效的辦法就是將應用系統(tǒng)的功能拓展到手機終端。Android 系統(tǒng)是 Google 公司開發(fā)的一個開源手機操作系統(tǒng),它包括了用戶界面、操作系統(tǒng)和應用程序,即 智能手機工作所需的全部應用軟件。Android 的最大特點是它的開放性體系架構,不僅具有非常好 的調(diào)試、環(huán)境開發(fā),而且還具有各種可擴展的設施,包括豐富的多媒體支持功能和圖形組件強大的 瀏覽器,技術已經(jīng)趨于成熟。 1.21.2 研究意義研究意義 Android 平臺 3G 手機天氣預報系統(tǒng)的開發(fā)可以進一步擴大天氣信息的覆蓋面,以便提前預防, 把氣象災害造成的損失降到最低,使得廣大公眾能夠在第一時間方便且快捷地獲取最新的天氣預報 信息。同時也可以強化天氣公共服務的職能,改善公共服務手段、完善公共服務體系、增加公共服 務產(chǎn)品、提高公共服務質(zhì)量,更好地發(fā)揮了氣象事業(yè)對經(jīng)濟社會發(fā)展的現(xiàn)實性作用。 這款手機天氣預報系統(tǒng)給人們生活帶來方便快捷的全天候信息,在人們?nèi)粘I钪斜夭豢缮俚?生活信息。本系統(tǒng)界面明了,操作簡單,適合所有年齡階段的運用。對于提高人們生活水平質(zhì)量有 一定的促進。 1.31.3 可行性研究可行性研究 隨著計算機應用的日益普及和深化,隨時隨地了解今明天的天氣情況已經(jīng)成為一種趨勢。本項 目要開發(fā)的是基于單機的天氣查詢系統(tǒng)。由于現(xiàn)代都市的快節(jié)奏,再天天守著電視機看雷打不動的 天氣預報已經(jīng)變得越來越不現(xiàn)實了。因此,實現(xiàn)一個將各種天氣查詢服務功能集成起來的信息系統(tǒng) 就顯得十分必要,即可以節(jié)省時間,又可以實現(xiàn)個性化的服務,減少不必要的等待和繁重的信息。 開發(fā)的系統(tǒng)要求界面友好,方便直觀。既要方便管理員對天氣情況進行添加、刪除、修改、查詢和 統(tǒng)計等管理,又要方便用戶及時了解最新的天氣狀況。 2 而且隨著現(xiàn)在 android 手機的越來越流行和發(fā)展,使用 android 手機的人數(shù)越來越多,據(jù)調(diào)查,使 用智能手機的用戶中,手機里下載天氣預報軟件的用戶占有 84%,所以這是一個很大的用戶平臺, 根據(jù)開發(fā)平臺的應用需求,決定開發(fā)這樣一款天氣預報系統(tǒng)軟件。 1.41.4 研究現(xiàn)狀和發(fā)展趨勢研究現(xiàn)狀和發(fā)展趨勢 據(jù) Gartner 最新數(shù)據(jù)顯示,從 2010 年第二、三季度全球智能手機銷售持續(xù)大幅增長,形成了良 好的態(tài)勢,其中第三季度安卓占全球智能手機市場的 26%,僅次于塞班,成為世界上第二大智能手 機系統(tǒng)。2010 第二、三季度與去年同期相比,增度分別是 15.8%及 22%,增長迅猛。而塞班系統(tǒng)較 09 年的市場銷售狀況,盡管終端銷量有大幅度提升,但增勢下滑 9.6%,情況不好。其他操作系統(tǒng)的 表現(xiàn)則要平穩(wěn)很多。 圖 1-1Gartner數(shù)據(jù)整理 安卓是全球首款開源代碼的操作系統(tǒng),開放手機聯(lián)盟(OHA)成員可以任意使用和修改安卓的 SDK 軟件包,采用 Linux 內(nèi)核。系統(tǒng)的開源性使其具有良好的拓展性,一方面,終端廠商可以針對 自身的特殊需要“定制化開發(fā)”;另一方面,為眾多移動應用開發(fā)者提供了良好的系統(tǒng)性平臺,有 利于移動應用的集合。與此相比,盡管 2010 年 2 月,塞班基本完成開源工作,但由于代碼臃腫,用 戶界面設計缺失,塞班的開源并無實際意義,錯失發(fā)展良機。 據(jù) Informa 預測,2012 年,安卓手機銷量將超過諾基亞塞班手機,屆時安卓將成為全球最大的 智能手機平臺。谷歌表示目前安卓手機每日平均激活量為 23 萬部,銷售速度正在加速上漲。 我們認為,安卓在全球市場的成長壯大,塞班市場份額不斷下跌已成不可爭議的事實。安卓操 作系統(tǒng)發(fā)展迅猛主要得益于開源、免費和良好產(chǎn)業(yè)運作策略,這三點為安卓在智能手機市場贏得更 多的發(fā)展機遇。代碼的開源讓更多的開發(fā)者進入應用開發(fā);系統(tǒng)的免費讓更多的廠商加入,推動了 3 份額的上升;應用的豐富吸引了更多用戶選擇,這也是谷歌值得眾多廠商學習的地方。此外,谷歌 通過 OHA 聯(lián)合眾多廠商進行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應用推廣到更多的終端產(chǎn)品中,確保 用戶體驗持續(xù)改善。 南京曉莊學院 2012 屆本科畢業(yè)論文 4 二 、系統(tǒng)分析 2.12.1研究目標研究目標 1. 了解 Android 應用程序的設計和開發(fā)過程; 2. 使用多種組件進行 Android 平臺 3G 手機天氣預報軟件的開發(fā)。 本軟件是基于 Eclipse 的開發(fā)環(huán)境,依托 Google 氣象數(shù)據(jù)建立天氣預報信息數(shù)據(jù)庫, 開發(fā)出了針對 Android 平臺的手機天氣預報系統(tǒng)。 2.22.2需求分析需求分析 手機發(fā)展到現(xiàn)在已經(jīng)成為廣大人們?nèi)罕姷娜粘J褂玫耐ㄓ嵐ぞ撸?手機具有的功能也日趨 完善。手機用戶也可以選擇開通 GPRS 網(wǎng)絡服務,此服務大大的方便了人們對于手機上網(wǎng)的 需求,從而帶動了手機軟件發(fā)展,我國的移動通訊功能得到了很大的提高。手機軟件可以在 安裝在手機上的軟件,完善原始系統(tǒng)的不足與個性化。隨著科技的發(fā)展,現(xiàn)在手機的功能也 越來越多,越來越強大。再也不像以前那么死板簡單。目前發(fā)展到了可以和掌電腦相媲美。 本設計在現(xiàn)有普通手機的基礎上, 可以在手機上實現(xiàn)天氣狀況的實時報告和天氣預報功 能。方便人們的出行和生活。 本軟件是一個 App Widget 應用程序,啟動程序后可以進行城市、更新頻率的設置,可 以通過圖片和文字顯示當前和未來的天氣狀況,包括溫度、濕度、風向和雨雪情況等。這些 天氣數(shù)據(jù)是通過后臺服務獲取的,這個后臺服務可以按照一定時間間隔,從 Google 上獲取 天氣預報信息,并將天氣信息保存在數(shù)據(jù)庫中。 從上面的描述中可以基本了解軟件的功能需求: 1. 啟動 App Widget 應用程序; 2. 設置界面:對要顯示天氣預報的城市及更新頻率進行設置; 3. 詳細界面:通過文字圖片動畫顯示當前的天氣情況,包括城市當前天氣、溫度、風 向、風速、濕度;同時顯示今后四天的天氣情況。 4. 顯示界面:通過文字和圖片顯示當前的天氣情況,包括日期、時間、城市、最高溫 度、最低溫度、當前溫度等。 南京曉莊學院 2012 屆本科畢業(yè)論文 5 2.32.3 性能分析性能分析 1. 點擊 ChinaWeather.apk 安裝。 2. 到桌面長摁空白桌面,選擇窗口小部件,選擇 chinaweather。 3. 填入你要關注的城市(拼音) 。點擊保存即可獲得城市的天氣預報。 本軟件操作簡單,應用方便,設計人性化,程序響應速度快、安全性高、信息處理速度 快。 南京曉莊學院 2012 屆本科畢業(yè)論文 6 三、平臺與關鍵技術研究 3.13.1AndroidAndroid 開發(fā)環(huán)境介紹開發(fā)環(huán)境介紹 Android 的上層應用程序是用 Java 語言開發(fā),同時還需要基于 Dalvik 虛擬機,所以, 使用 Java 語言進行開發(fā), 還應該有由 SUN 公司提供的 Java SDK(其中包括 JRE: Java Runtime Environment)。在 Eclipse 安裝 ADT,為方便 Android 開發(fā)提供開發(fā)工具的升級或者變更, 是 Eclipse 下開發(fā)工具的升級下載的工具。 同時,Google 公司推薦使用主流的 Java 繼承開發(fā)環(huán)境 Eclipse。此外,Android 的應用 程序開發(fā)和 Java 開發(fā)有較大區(qū)別的, 所以還需要有 Google 提供的 Android SDK。 換句話說, 需要以下軟件,才能搭建 Android 開發(fā)環(huán)境,從而進行 Android 應用程序的開發(fā)。 1. Eclipse 2. Java SDK 3.ADT 4.Android SDK 3.23.2 AndroidAndroid 開發(fā)平臺搭建開發(fā)平臺搭建 Android 開發(fā)平臺搭建步驟: 1 首先到 /downloads/下載 Eclipse 集成開發(fā)環(huán)境并且解壓,這里 推 薦 下 載 Java EE 集 成 版 本 , 可 以 為 平 臺 的 搭 建 省 下 不 少 工 作 。 接 著 再 去 SDK1.5 后解 壓。第一步下載工序就結(jié)束了。 2 雙擊 Eclipse 解壓后目錄中的 eclipse.exe 然后啟動,選擇 Eclipse 菜單中的 Help- Install New Software- 選項卡上的 Available Software,點擊右側(cè)的“Add”輸入 http:/dl- with”下拉菜單中選 擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個 Developer Tools 選項,勾上以后點擊 Next 以后 Eclipse 會自動網(wǎng)上查找 Android 開發(fā)工具插件,然后找到 Android DDMS 和 Android Development Tools,選中這兩個點擊 Finish,Eclipse 就會自動下載并安裝 Android 插件 南京曉莊學院 2012 屆本科畢業(yè)論文 7 了,最后會提示重啟 Eclipse。 3 在 WindowsXP 的系統(tǒng)變量中的 path 變量中添加一個值,該值指向解壓后的 Android SDK 目錄下的 tools 文件夾。 4 重啟后選擇 Eclipse 菜單中的 Windows- Preferences 在左側(cè)的 Android 項目中 SDK Location 中填入 Android SDK 解壓后的目錄,然后點擊 Apply。 3.33.3 AndroidAndroid 關鍵技術研究關鍵技術研究 Android 平臺是基于 java 語言開發(fā)的, 其中 android 主要是四大組建構成的, Activity、 Service、Broadcast Receiver、Content Provider。 1.Activity Activity 就是一個用戶界面,比如打電話程序,實現(xiàn)一個打電話的 Activity,通訊錄也 是一個 Activity,通話記錄也是一個 Activity 等等,這些 Activity 都是獨立的,但組合 在一起就是一個完整功能的應用程序了。 2.Service 從字面上意思就是服務的意思, 其實就是 Activity 的后面服務, 他們在很多地方都相 輔相成的,封裝有一個完整的功能邏輯實現(xiàn),Service 就是為 Activity 在后面服務的,作 為 Activity 的堅實后盾。Service 在后臺為 Activity 提供所需要的功能。Android 中得服 務其實與 windows 中得服務類似,它執(zhí)行長時間運行的操作,或運程進程執(zhí)行工作。服務不 提供用戶界面。 Android 中的服務,和我們通常說的 Windows 服務,Web 的后臺服務又有一些相近,它 們通常都是后臺長時間運行,接受上層指令,完成相關事務的模塊。用運行模式來看, Activity 是跳,從一個跳到一個,這有點像模態(tài)對話框,給一個輸入,然后不管不顧的讓 它運行,離開時返回輸出。而 Service 不是這樣的,Service 主要是等著上層連接上它,然 后產(chǎn)生一段持久的通信。 但和一般的 Service 還是有所不同,Android 的 Service 和所有四大組件一樣,其進程 模型都是可以配置的, 調(diào)用方和發(fā)布方都可以有權利來選擇是把這個組件運行在同一個進程 下,還是不同的進程下。它凸顯了 Android 的運行特點。 Android 中用來做數(shù)據(jù)序列化的 類是 Parcel,封裝了序列化的細節(jié),向外提供了足夠?qū)ο蠡脑L問接口,Android 號稱實現(xiàn) 非常高效。 南京曉莊學院 2012 屆本科畢業(yè)論文 8 Service 從實現(xiàn)角度看,最特別的就是 RPC 的實現(xiàn)了,其他內(nèi)容,都會接近于 Activity 的一些實現(xiàn)。 3.Broadcast Receiver 從字面意思是廣播接收者, 其實和我們生活中得廣播意思相近, 在發(fā)生什么事情的時候, 會以廣播的形式告知我們。廣播又分為普通廣播和有序廣播。普通廣播是異步的,理論上是 同時收到的。你不能對他做任何操作,不能終止。有序廣播,在接收到廣播時可以加入自己 的操作,傳遞給下一個接收者,也可以終止廣播。Android 系統(tǒng)中最常見的廣播電池電量低 得時候,收到短信的時候,USB 連接的時候等等。 內(nèi)容提供者主要用于應用程序的數(shù)據(jù)共享設置,你可以把數(shù)據(jù)存儲在文件系統(tǒng)中,或 者 SQLite 數(shù)據(jù)庫上,網(wǎng)絡,或者其他的持久性存儲位置。你可以訪問這些數(shù)據(jù)或者修改, 其他應用程序也可以訪問或者修改。 在 Android 中,充分考慮了廣泛的這類需求,于是就有了 Broadcast Receiver 這樣的 一個組件。每個 Broadcast Receiver 都可以接收一種或若干種 Intent 作為觸發(fā)事件,當發(fā) 生這樣事件的時候,系統(tǒng)會負責喚醒或傳遞消息到該 Broadcast Receiver,任其處置。在 此之前和這以后,Broadcast Receiver 是否在運行都變得不重要了。 當 Broadcast Receiver 接收到相關的消息,它們通常做一些簡單的處理,然后轉(zhuǎn)化稱 為一條 Notification,一次振鈴,一次震動,抑或是啟動一個 Activity 進行進一步的交互 和處理。所以,雖然 Broadcast 整個邏輯不復雜,卻是足夠有用和好用,它統(tǒng)一了 Android 的事件廣播模型,讓很多平臺都相形見絀了 4.Content Provider 應用程序可以通過 Content Provider 來訪問其他應用程序的一些私有數(shù)據(jù),這是 Android 提供的一種標準的共享機制。共享的數(shù)據(jù)可以存在在很多方面,比如在系統(tǒng)中、數(shù) 據(jù)庫中或者在其他的一些程序里。Content Provider 可以擴展自己的 Content Provider 類, 通過實現(xiàn)自己的類的接口來控制其他數(shù)據(jù)的存儲。然后程序不會直接調(diào)用 ContentProvider 中的方法,而是通過任何一個能與 Contentprovider 通訊。 任何時候當 Android 系統(tǒng)收到一個需要某個組件進行處理的請求的時候,Android 會確 保處理此請求的組件的宿主進程是否已經(jīng)在運行,如果沒有,則立即啟動這個進程,當請求 的組件的宿主進程已經(jīng)在運行, 它會繼續(xù)查看請求的組件是否可以使用, 如果不能立即使用, 它會創(chuàng)建一個請求的組件的實例來響應請求。 Content Provider,內(nèi)容提供者主要用于應用程序的數(shù)據(jù)共享設置,你可以把數(shù)據(jù)存儲 南京曉莊學院 2012 屆本科畢業(yè)論文 9 在文件系統(tǒng)中,或者 SQLite 數(shù)據(jù)庫上,網(wǎng)絡,或者其他的持久性存儲位置。你可以訪問這 些數(shù)據(jù)或者修改,其他應用程序也可以訪問或者修改。 在各大組件中,Service 和 Content Provider 都是那種需要持續(xù)訪問的。Service 如果 是一個耗時的場景,往往會提供異步訪問的接口,而 Content Provider 不論效率如何,都 提供的是約定的同步訪問接口。因為 Content Provider 僅是提供數(shù)據(jù)訪問的,它不能確信 具體的使用場景如何,會怎樣使用它的數(shù)據(jù);而相比之下,Service 包含的邏輯更復雜更完 整,可以抉擇大部分時候使用某接口的場景,從而確定最貼切的接口是同步還是異步,簡化 了上層調(diào)用的邏輯。 南京曉莊學院 2012 屆本科畢業(yè)論文 10 四、系統(tǒng)設計 4.14.1 模塊模塊 4.1.1 天氣預報顯示 根據(jù)需求分析可得, 用戶在使用這款軟件是希望它的快捷方便, 所以我們把這款軟件的 主界面定在了手機桌面上,調(diào)用的數(shù)據(jù)使用在桌面顯示。桌面的布局分為 3 大塊。其中主要 是相對布局,劃分區(qū)域,作為以后使用功能上的加強。在時間節(jié)點上,我們采用實時更新, 并放大了手機現(xiàn)有的時間,讓用戶擁有更好的體驗。左下區(qū)域分為日期、城市、天氣。中間 為天氣圖標,根據(jù)不同的天氣狀況來更換不同的圖片,讓用戶有更直觀的了解。右側(cè)為最搞 溫度、最低溫度、現(xiàn)在溫度。讀取的數(shù)據(jù)加以分別后重新排列在界面上,讓用戶的使用更加 方便,舒暢。 在用戶界面設計上,采用了AppWidget框架結(jié)構,提供直觀的交互操作。三個用戶界面 風格簡約、操作簡便,用戶體驗將非常好。 DetailForecastActivity主要用來顯示詳細的天氣信息, 包括當天和未來四天的天氣信 息。為了能夠以列表的形勢顯示多行數(shù)據(jù),并制定每行數(shù)據(jù)的布局,使用了ListActivity。 ListActivity可以不通過setContentView( )設置布局,也不必重載onCreate( )方法, 而直接將顯示列表加載到ListActivity,增加了使用的便利性。在此工程中,仍然使用 setContentView( )設置布局,這樣做的好處是可以在界面中設置更為復雜的顯示元素。核 心代碼如下: /繼承ListActivity publicpublic classclass DetailForecastActivity extendsextends ListActivity /獲取游標,訪問數(shù)據(jù)庫 / Query for any matching forecast data and create adapter Uri forecastUri = Uri.withAppendedPath(mData, WeatherWidgets.FORECAST_END); Cursor forecastCursor = managedQuery(forecastUri, DetailDateWidget.detailProjection, null, null, null); listAdapter = new ForecastAdapter(this, forecastCursor); 列表適配器代碼: 南京曉莊學院 2012 屆本科畢業(yè)論文 11 private class ForecastAdapter extends ResourceCursorAdapter public ForecastAdapter(Context context, Cursor c) super(context, R.layout.detailitems, c); / TODO Auto-generated constructor stub System.out.println(“ForecastAdapter“); Override public void bindView(View view, Context context, Cursor c) / TODO Auto-generated method stub System.out.println(“View ForecastAdapter“); ImageView icon = (ImageView) view.findViewById(R.id.dDetailImage); TextView day = (TextView) view.findViewById(R.id.ddDayText); TextView condition = (TextView) view.findViewById(R.id.ddConditionText); TextView temp = (TextView) view.findViewById(R.id.ddTempCText); icon.setImageResource(WeatherUtil.getDetailForecastIcon(c.getString(4); day.setText(c.getString(1); condition.setText(c.getString(5); temp.setText(c.getInt(2) + “/“ + c.getInt(3) + “); 效果如下圖2所示: 南京曉莊學院 2012 屆本科畢業(yè)論文 12 圖 4-2 天氣呈現(xiàn)界面 4.1.2 用戶提醒 用戶提醒功能是天氣預報額外的功能, 主要我們運用了手機自帶的提醒功能, 經(jīng)過我們 的頁面圖標設置,只要點擊應用的圖標,用戶就可以自然的跳轉(zhuǎn)到提醒功能上去,方便用戶 設置鬧鈴。這個功能是有待開發(fā)的,在天氣溫差過大時,我們能提供給用戶數(shù)據(jù)反饋,提醒 用戶注意溫差,在天氣降溫時,提醒用戶注意保暖,這是一種很有用的功能,但現(xiàn)在主要是 主觀上的控制,客觀上的提醒功能還有待開發(fā)。 4.24.2 數(shù)據(jù)交互數(shù)據(jù)交互 從 Google 提 供 的 Web Service 中 獲 取 的 天 氣 數(shù) 據(jù) , 數(shù) 據(jù) 的 獲 取 地 址 是 : /創(chuàng)建Http Get請求 HttpGet request = newnew HttpGet(String.format(WEBSERVICE_URL, postalCode); 南京曉莊學院 2012 屆本科畢業(yè)論文 13 trytry Log.d(TAG, “get googles weather infomation“); /發(fā)出請求 HttpResponse response = client.execute(request); StatusLine status = response.getStatusLine(); Log.d(TAG, “Request returned status “ + status); /取出回復信息 HttpEntity entity = response.getEntity(); responseReader = newnew InputStreamReader(entity.getContent(), “GB2312“); 4.34.3 用戶交互用戶交互 4.3.1 城市交互 ConfigureActivity 繼 承 Activity 并 且 實 現(xiàn) 了 View.OnClickListener 接 口 , AppWidget 第一次啟動之前會先運行 ConfigureActivity,會出現(xiàn)設置頁面用戶進行設置, 點擊保存按鈕就會將設置好的參數(shù)會存儲到 SQLite 中。核心代碼如下: city = editCity.getText().toString(); updatetime =Integer.parseInt(editUpdatetime.getText().toString(); ContentValues values = new ContentValues(); values.put(BaseColumns._ID, widgetId); values.put(DataWidget.POSTCODE, city); values.put(DataWidget.UPDATEMILIS, updatetime); values.put(DataWidget.LASTUPDATETIME, -1); values.put(DataWidget.ISCONFIGURED, 1); ContentResolver resolver = getContentResolver(); resolver.insert(WeatherWidgets.CONTENT_URI, values); / start service System.out.println(“start Service!“); 南京曉莊學院 2012 屆本科畢業(yè)論文 14 DataForecastService.addWidgetIDs(new intwidgetId); startService(new Intent(this, DataForecastService.class);setConfigureResult(Activity.RESULT_OK); finish(); break; ConfigureActivity的布局文件是res/layout/configure.xml,采用了LinearLayout的 布局方式。 效果如圖3所示: 圖 4-3城市選擇頁面 4.3.2數(shù)據(jù)庫交互 以 往 數(shù) 據(jù) 查 詢 將 解 析 好 的 數(shù) 據(jù) 存 儲 到 SQLite 數(shù) 據(jù) 庫 中 。 其 過 程 是 : 使 用 ContentResolver 對象,通過 URI 間接調(diào)用 ContentProvider,使用 ContentResolver 對象 與 ContentProvider 進 行 交 互 , 而 ContentResolver 則 通 過 URI 確 定 需 要 訪 問 的 ContentProvider 的數(shù)據(jù)集。核心代碼如下,調(diào)用關系如圖 4 所示。 南京曉莊學院 2012 屆本科畢業(yè)論文 15 圖4-4ContentProvider調(diào)用關系 ContentResolver resolver = context.getContentResolver(); resolver.delete(forecastUri, nullnull, nullnull); ContentValues values = newnew ContentValues(); forfor (DetailDateWidget forecast : widgetEntity.getDetails() values.clear(); values.put(DetailDateWidget.DAYOFWEEK, forecast.getDayOfWeek(); resolver.insert(forecastUri, values); 注意: for(DetailDateWidgetforecast :widgetEntity.getDetails()相當于foreach語 句,在widgetEntity.getDetails()集合里打印出所有類型為DetailDateWidget的 forecast變量。 4.44.4 系統(tǒng)管理系統(tǒng)管理 4.4.1 天氣數(shù)據(jù)管理 讀取天氣數(shù)據(jù)實例通過WebServiceHelper.getWidgetEntity()方法操作數(shù)據(jù)庫取出所 需要的數(shù)據(jù), 這一部分與上一節(jié)的 “將解析好的數(shù)據(jù)存儲到SQLite數(shù)據(jù)庫中” 的關鍵點相同, 為節(jié)約篇幅,此處不贅述。 調(diào)用輕量級XML解析器XmlPullParser對從網(wǎng)絡上獲取的字節(jié)流數(shù)據(jù)進行解析, 并且將解 析結(jié)果保存在WidgetEntity對象中。 南京曉莊學院 2012 屆本科畢業(yè)論文 16 4.4.2 時間管理 AppWidget一啟動就會啟動DataTimeService這個后臺服務, 此服務設置了每隔20秒刷新 一次時間,“顯示頁面”通過這個后臺服務獲取系統(tǒng)時間從而顯示。核心代碼如下: AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, now + updateMilis, pendingIntent); 至此,后臺服務介紹完畢,最后還需要在AndroidManifest.xml文件中注冊后臺服務。 4.4.3 頁面現(xiàn)實布局管理 根據(jù)需求分析可以知道, 應用程序應包含三個主要的用戶界面, 這里需要進一步分析每 個用戶界面中應該包括哪些顯示內(nèi)容。 在“設置頁面”中,需要對要顯示天氣預報的城市及更新頻率進行設置。在“顯示頁面” 中,顯示當前的天氣狀況,包括城市名稱、溫度、濕度、風向、雨雪情況和獲取數(shù)據(jù)時間等 信息。在“詳細頁面”動態(tài)顯示當前天氣情況,還要顯示未來四天的天氣情況。 根據(jù)對用戶界面顯示內(nèi)容的分析,繪制出用戶界面的草圖,如圖5所示。 圖 4-5 用戶界面草圖 4.4.4 后臺服務 后臺服務是ChinaWeather工程的核心模塊, 在用戶啟動后持續(xù)在后臺運行, 直到用戶停 止服務。后臺服務主要有三個功能,一是周期性的獲取Google的天氣數(shù)據(jù)并存儲到SQLite, 南京曉莊學院 2012 屆本科畢業(yè)論文 17 二是從SQLite讀取出要顯示的數(shù)據(jù),三是定時更新“顯示頁面”的時間。 4.4.5 App Widget啟動 Android開發(fā)應用除了程序應用,還有App Widget應用。先簡單說說App Widget的原理。 App Widget是在桌面上的一塊顯示信息的東西,通過單擊App Widget跳轉(zhuǎn)到程序入口類。而 系統(tǒng)自帶的程序,典型的App Widget是music,這個Android內(nèi)置的音樂播放小程序。這個是 典型的App Widget+app應用。就是一個程序既可以通過App Widget啟動,也可以通過App啟 動。App Widget就是一個AppWidgetProvider+一個UI界面顯示(預先綁定了好多Intent), 界面上的信息可以通過程序控制而改變, 單擊Widget上的控件只能激發(fā)發(fā)送一個Intent, 或 發(fā)出一個Service的啟動通知。 而AppWidgetProvider可以攔截這個Intent, 而進行相應的處 理。 WeatherWidget在設計上采用了AppWidget框架結(jié)構,AppWidget就是HomeScreen上顯示 的小部件,通過在HomeScreen空白處長按,在彈出的對話框中選擇Widget部件來進行創(chuàng)建。 此外,長按部件后并拖動到垃圾箱里進行刪除。創(chuàng)建AppWidget需要以下四個步驟: 定義Widget布局文件, 此文件是res/layout/weather.xml, 采用AbsoluteLayout方式進行布 局需要注意的是在這個文件中所使用的組件必須是RemoteViews所支持的。 定義Widget的基本屬性文件,此文件是/res/xml/weatherwidget.xml。代碼如下: 效果如圖6所示: 南京曉莊學院 2012 屆本科畢業(yè)論文 18 圖4-6桌面顯示圖 創(chuàng)建WeatherWidget.java類, 此類繼承自AppWidgetProvider, 主要 的功能有:獲取需要更新的桌面小控件;啟動時間信息的服務;啟動獲取天氣預報信息的服 務;更新時間信息;更新桌面小控件顯示內(nèi)容。核心代碼如下: publicpublic classclass WeatherWidget extendsextends AppWidgetProvider Override publicpublic voidvoid onUpdate(Context context, AppWidgetManager appWidgetManager,intint appWidgetIds) supersuper.onUpdate(context, appWidgetManager, appWidgetIds); / 獲取需要更新的桌面小控件 ForecastService.addWidgetIDs(appWidgetIds); / 啟動獲取天氣預報信息的服務 context.startService(newnew Intent(context, ForecastService.classclass); / 啟動時間信息的服務 context.startService(newnew Intent(context, ForecastTimeService.classclass); /更新桌面小控件顯示內(nèi)容 publicpublic staticstatic RemoteViews updateViews(Context context, Uri uri) /更新時間信息 publicpublic staticstatic RemoteViews updateTime(Context context) 南京曉莊學院 2012 屆本科畢業(yè)論文 19 AppWidgetProvider對應一個receiver屬性,需要更新AndroidManifest.xml。代碼如下: 效果如圖7所示: 圖 4-7 關閉系統(tǒng)圖 4.54.5 數(shù)據(jù)庫設計與實現(xiàn)數(shù)據(jù)庫設計與實現(xiàn) 數(shù)據(jù)提供者 DataForecastService 繼承 ContentProvider,是在應用程序間共享數(shù)據(jù)的 一種接口機制。應用程序在不同的進程中運行,因此,數(shù)據(jù)和文件在不同的應用程序之間是 不能夠直接進行訪問的。而 CotentProvider 為程序員提供了較高級的數(shù)據(jù)共享方法,應用 南京曉莊學院 2012 屆本科畢業(yè)論文 20 程序可以指定需要共享的數(shù)據(jù),而其他應用程序則可以在不知數(shù)據(jù)來源、路徑的情況下,對 共享數(shù)據(jù)進行查詢、添加、刪除和更新等操作。 在介紹 DataForecastService 的核心代碼前, 首先了解一下 WeatherUtil.java(當前天 氣信息的類)和 DataWidget.java(未來天氣信息的類) 。 WeatherUtil.java 的部分代碼: publicpublic classclass WidgetEntity privateprivate ArrayList details = newnew ArrayList();/DetailDateWidget對象 privateprivate Integer id;/編號 privateprivate Integer updateMilis;/更新頻率 privateprivate String city;/城市 privateprivate String postalCode;/城市標記 privateprivate Long forecastDate;/預報時間 privateprivate String condition;/天氣情況 privateprivate Integer tempF;/華氏溫度 privateprivate Integer tempC;/攝氏溫度 privateprivate String humidity;/濕度 privateprivate String icon;/天氣圖標 privateprivate String windCondition;/風力風向 privateprivate Long lastUpdateTime;/最后更新時間 privateprivate Integer isConfigured;/是否已設置 從代碼中可以看出,除 DetailDateWidget 的對象 details, WidgetEntity 類中有以 上公有靜態(tài)屬性 id、updateMilis 、 updateMilis、postalCode、forecastDate、condition、 tempF、tempC、humidity、icon、windCondition、lastUpdateTime、isConfigured,完全 對應數(shù)據(jù)庫中 weather_widget 的表。 DetailDateWidget.java 的部分代碼: publicpublic classclass DetailDateWidget privateprivate Integer id;/編號 南京曉莊學院 2012 屆本科畢業(yè)論文 21 privateprivate String dayOfWeek;/星期 privateprivate Integer low;/最低溫度 privateprivate Integer hight;/最高溫度 privateprivate String icon;/天氣圖標 privateprivate String condition;/天氣

溫馨提示

  • 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

提交評論