基于Android平臺的天氣預(yù)報軟件設(shè)計畢業(yè)設(shè)計_第1頁
基于Android平臺的天氣預(yù)報軟件設(shè)計畢業(yè)設(shè)計_第2頁
基于Android平臺的天氣預(yù)報軟件設(shè)計畢業(yè)設(shè)計_第3頁
基于Android平臺的天氣預(yù)報軟件設(shè)計畢業(yè)設(shè)計_第4頁
基于Android平臺的天氣預(yù)報軟件設(shè)計畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、教學(xué)單位學(xué)生學(xué)號 下載后需要源程序請聯(lián)系我,lion_。本科畢業(yè)論文(設(shè)計)本科畢業(yè)論文(設(shè)計)題目基于 android 平臺的天氣預(yù)報軟件設(shè)計 學(xué)生姓名lion 專業(yè)名稱 指導(dǎo)教師 2013 年5月20日基于基于 androidandroid 平臺的天氣預(yù)報軟件設(shè)計平臺的天氣預(yù)報軟件設(shè)計摘要摘要:google 于 2008 年推出了一款名為 android 的開源智能手機(jī)操作系統(tǒng),它采用 linux 內(nèi)核,開放手機(jī)聯(lián)盟(oha)成員可以任意使用和修改 sdk 包,系統(tǒng)的開源性使其具有良好的拓展性。android 的最大特點是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)

2、展的用戶體驗。因此,對于軟件從業(yè)人員來說,android 平臺具有無限的吸引力。目前 android 操作系統(tǒng)已經(jīng)成為用戶最多的智能操作系統(tǒng)。本天氣預(yù)報軟件的設(shè)計,為 android 終端用戶提供一款方便的實時天氣預(yù)報查詢軟件,為用戶帶來良好的用戶體驗及便利的對天氣情況進(jìn)行掌控。本天氣預(yù)報軟件采用 viewflipper 組件,提供友好的界面滑動切換方式,同時減少系統(tǒng)運行時占用的空間。使用 files 方式保存天氣信息,shared preferences保存用戶偏好設(shè)置,節(jié)約了文件存儲的空間。本文就在分析討論 android 手機(jī)軟件開發(fā)技術(shù)原理的基礎(chǔ)上,利用 android 中基本組件和常

3、用設(shè)計模式,開發(fā)出能為用戶提供更好的基于 android 平臺的手機(jī)天氣預(yù)報軟件。關(guān)鍵字:關(guān)鍵字:android;天氣預(yù)報;智能手機(jī)平臺design of weather forecast software based on the androidabstract:google in 2008 launched a product called the android open source smart phone operating system, which uses the linux kernel, open handset alliance (oha) members can be

4、free to use and modify the sdk package, open source, it has good scalability of the system. the most important feature of android is its open architecture, not only has a very good development and debugging environment, but also supports a variety of scalable user experience. therefore, for software

5、 professionals, the android platform has unlimited appeal. android operating system has become the user the most intelligent operating system.the weather software designed for the android end users to provide a convenient, real-time weather query software, to provide users with a good user experienc

6、e and convenience of control of the weather conditions. the weather forecast software the viewflipper components, friendly interface sliding switch, while reducing the space occupied when the system is running. files saved weather information, shared preferences to save user preferences settings, sa

7、ve the file storage space. this article on the basis of analysis and discussion of the android mobile phone software development technical principles, using the basic components and common design patterns android, developers can provide users with better mobile phone weather forecast software based

8、on the android platform.keywords:android;weather forecast;smart phone platform目目 錄錄1 1 系統(tǒng)概述系統(tǒng)概述 .1 111 研究內(nèi)容 .112 研究意義 .113 研究現(xiàn)狀和發(fā)展趨勢 .12 2 系統(tǒng)分析系統(tǒng)分析 .4 42.1 研究目標(biāo) .42.2 需求分析 .42.3 性能分析 .43 3 程序設(shè)計程序設(shè)計 .6 63.1 用戶界面設(shè)計 .63.2 程序模塊設(shè)計 .94 4 程序開發(fā)程序開發(fā) .10104.1 文件結(jié)構(gòu)與用途 .104.2 數(shù)據(jù)存儲 .134.2.1 shared preferences .1

9、34.2.2 files .144.3 主要功能代碼 .184.3.1 獲取天氣數(shù)據(jù) .184.3.2 網(wǎng)絡(luò)檢查 .204.3.3 定時更新時間 .214.3.4 viewflipper 手勢監(jiān)聽 .214.3.5 城市管理中城市點擊事件 .234.4 主要界面結(jié)構(gòu)布局代碼 .244.4.1 viewflipper 框架結(jié)構(gòu) .254.4.2 城市管理界面 .254.4.3 生活指數(shù) .264.4.4 城市簡介 .275 5 系統(tǒng)測試系統(tǒng)測試 .2929總結(jié)總結(jié).3636參考文獻(xiàn)參考文獻(xiàn).3737致致 謝謝.38381 1 系統(tǒng)概述系統(tǒng)概述1 11 1 研究內(nèi)容研究內(nèi)容android 平臺手機(jī)

10、天氣預(yù)報軟件是基于 android 手機(jī)平臺,運用 java 語言,應(yīng)用 http:/ webservice 接口獲取天氣預(yù)報信息,深入研究 android 平臺 activity、service、broadcast receiver、content provider 這四大組件及 android 平臺的程序運行機(jī)制,開發(fā)出針對使用 android 平臺的手機(jī)天氣預(yù)報系統(tǒng)。1 12 2 研究意義研究意義android 平臺手機(jī)天氣預(yù)報軟件的開發(fā)可以進(jìn)一步擴(kuò)大氣象信息的覆蓋面,讓廣大公眾能夠在第一時間方便快捷地獲取最新的氣象預(yù)報(預(yù)警)信息,以便提前預(yù)防,把氣象災(zāi)害造成的損失降到最低。同時也可以

11、強(qiáng)化氣象公共服務(wù)的職能,完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮了氣象事業(yè)對經(jīng)濟(jì)社會發(fā)展的現(xiàn)實性作用。1 13 3 研究現(xiàn)狀和發(fā)展趨勢研究現(xiàn)狀和發(fā)展趨勢據(jù)百度數(shù)據(jù)研究中心 2012 年 q3 手機(jī)操作系統(tǒng)及應(yīng)用分析數(shù)據(jù)顯示,隨著智能手機(jī)的發(fā)展,操作系統(tǒng)越來越受到網(wǎng)民的關(guān)注。在剛剛過去的q3,android 和 ios 繼續(xù)蠶食 symbian 的份額,其中 android 更是以接近 55%的關(guān)注度進(jìn)一步鞏固其第一的位置。圖圖 1 1 手機(jī)操作系統(tǒng)關(guān)注度變化趨勢圖手機(jī)操作系統(tǒng)關(guān)注度變化趨勢圖安卓是首款開源代碼的操作系統(tǒng),采用 linux 內(nèi)核,開放手機(jī)

12、聯(lián)盟(oha)成員可以任意使用和修改安卓的 sdk 軟件包。系統(tǒng)的開源性使其具有良好的拓展性,一方面,為眾多移動應(yīng)用開發(fā)者提供了良好的系統(tǒng)性平臺,有利于移動應(yīng)用的集合;另一方面,終端廠商可以針對自身的特殊需要“定制化開發(fā)”。與此相比,盡管 2010 年 2 月,塞班基本完成開源工作,但由于代碼臃腫,用戶界面設(shè)計缺失,塞班的開源并無實際意義,錯失發(fā)展良機(jī)。android 操作系統(tǒng)給予了用戶跟高的自由度熟悉 android 的都清楚用戶可以根據(jù)自己的喜好來設(shè)置手機(jī)界面,android 的應(yīng)用市場甚至上還有各式各樣的啟動器來供用戶自己選擇,讓自己的手機(jī)與眾不同。例如用戶要是喜歡htc 的操作界面便馬

13、上可以在應(yīng)用市場上找到,甚至還能模仿 ios 的界面。相比于 ios 操作系統(tǒng),iphone 手機(jī)只有一成不變的手機(jī)界面,不能對其進(jìn)行更改。我們認(rèn)為,安卓在全球市場的成長壯大,塞班市場份額不斷下跌已成不爭事實。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費、開源和良好產(chǎn)業(yè)運作策略,這三點為安卓在智能手機(jī)市場贏得更多的發(fā)展機(jī)遇。系統(tǒng)的免費讓更多的廠商加入,推動了份額的上升;代碼的開源讓更多的開發(fā)者進(jìn)入應(yīng)用開發(fā);應(yīng)用的豐富吸引了更多用戶選擇,這也是谷歌值得眾多廠商學(xué)習(xí)的地方。此外,谷歌通過 oha 聯(lián)合眾多廠商進(jìn)行系統(tǒng)研發(fā),不斷更新版本,目前以推出十多個android 版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,

14、確保用戶體驗持續(xù)改善。2 2 系統(tǒng)分析系統(tǒng)分析2.12.1 研究目標(biāo)研究目標(biāo)(1) 了解 android 應(yīng)用程序的設(shè)計和開發(fā)過程;(2) 使用多種組件進(jìn)行 android 平臺手機(jī)天氣預(yù)報軟件的開發(fā)。本軟件是基于 eclipse 的開發(fā)環(huán)境,依托 webservice 服務(wù)氣象數(shù)據(jù)建立氣象信息,開發(fā)出了針對 android 平臺的手機(jī)天氣預(yù)報系統(tǒng)。2.22.2 需求分析需求分析本程序主界面采用 viewflipper 視圖,實現(xiàn) android 界面滑動效果,主界面分為四個一面,第一頁顯示用戶選定的首要城市的當(dāng)天天氣詳細(xì)情況,以及未來三天天氣的概況,并提供手動更新天氣的按鈕;第二頁是城市設(shè)置

15、頁面,用戶可以在設(shè)定最多 9 個城市作為用戶關(guān)注的城市,并提供當(dāng)天天氣概覽,用戶可以在這里設(shè)定選擇已經(jīng)關(guān)注的城市作為首要關(guān)注城市;第三頁是用戶選定的首要城市天氣情況的各種生活指數(shù),包括晾曬指數(shù)、旅游指數(shù)、路況指數(shù)、舒適度指數(shù)、空氣污染指數(shù)、紫外線指數(shù),用戶可以根據(jù)各種生活指數(shù)安排自己日常生活;第四頁用一個可以上下滑動的 scrollview(卷軸視圖)顯示用戶選定的首要城市的城市簡介。系統(tǒng)提供定時更新功能,根據(jù)用戶選擇可以設(shè)置每天天氣自動更新的起始時間及更新時間間隔。2.32.3 性能分析性能分析android 是一個多任務(wù)操作系統(tǒng),最近運行過的程序都常駐后臺,而在內(nèi)存管理上則由系統(tǒng)選擇性的自

16、動殺掉占用內(nèi)存的近期非活躍進(jìn)程,而不是關(guān)閉程序,當(dāng)程序再次顯示時速度更快。程序采用 viewflipper 實現(xiàn)多個頁面的滑動切換,四個視圖頁面封裝在一個 view 中,不顯示的頁面有 viewflipper 封裝的資源收縮方法保留最基本的數(shù)據(jù),節(jié)約內(nèi)存,滑動時只需要還原子 view 即可,與 activity 的切換相比既節(jié)約資源,又加快了界面切換的速度。因為activity 的切換涉及到 activity 的創(chuàng)建與銷毀。3 3 程序設(shè)計程序設(shè)計3.13.1 用戶界面設(shè)計用戶界面設(shè)計根據(jù)需求分析可以知道,應(yīng)用程序應(yīng)包含四個主要的用戶界面,以及幾個輔助頁面,這里需要進(jìn)一步分析每個用戶界面中應(yīng)該

17、包括哪些顯示內(nèi)容。在城市天氣頁面,如圖 3,分為上中下三個部分,上面部分顯示用戶設(shè)定的首要城市的城市名、當(dāng)日溫度區(qū)間、天氣情況、風(fēng)力大小、濕度、紫外線強(qiáng)度,實時溫度及實時天氣的圖標(biāo)。中間是三個自定義 view,顯示未來三天的天氣情況,每個 view 中都包括日期、星期、天氣圖標(biāo)、最高溫度、最低溫度。底部顯示了當(dāng)前天氣的更新時間,及手動更新天氣的按鈕。圖 2 城市天氣添加城市頁面,如圖 4,由一個 gridview 構(gòu)成,gridview 中有 9 個相同的view 作為 gridview 的 item,供用戶選擇關(guān)注的城市。每個 item 中顯示所選城市的天氣概覽,包括編號、城市名稱、天氣圖標(biāo)

18、、天氣狀況、溫度及更新時間。圖 3 選擇城市生活指數(shù)頁面,如圖 5,生活指數(shù)頁面,通過下拉列表選擇不同的生活指數(shù)種類,顯示各種生活指數(shù),包括:晾曬指數(shù)、旅游指數(shù)、路況指數(shù)、舒適度指數(shù)、空氣污染指數(shù)、紫外線指數(shù)。圖 4 生活指數(shù)城市介紹頁面,如圖 6,scrollview(卷軸視圖)顯示用戶選定的首要城市的城市簡介。圖 5 城市簡介3.23.2 程序模塊設(shè)計程序模塊設(shè)計從功能需求上分析可以看出,整個應(yīng)用程序應(yīng)劃分為 3 個模塊,分別是用戶界面模塊、后臺控制模塊和基礎(chǔ)功能模塊。后臺控制模塊更具用戶界面的需求調(diào)用基礎(chǔ)功能模塊的各項功能得到用戶界面需要的數(shù)據(jù)并返回到用戶界面?;A(chǔ)工具模塊提供天氣查詢、

19、網(wǎng)絡(luò)狀況檢查、定時器功能 、自定義風(fēng)格dialog、數(shù)據(jù)存取、數(shù)據(jù)處理 6 個功能模塊;后臺控制模塊分為城市管理、dialog 調(diào)用兩個部分;用戶界面模塊包括,城市天氣、城市管理、生活指數(shù)、城市簡介、添加城市、定時設(shè)置、操作提示幾個部分組成。圖 6 用戶界面圖 7 基礎(chǔ)工程模塊4 4 程序開發(fā)程序開發(fā)4.14.1 文件結(jié)構(gòu)與用途文件結(jié)構(gòu)與用途在程序開發(fā)階段,確定“基于 android 平臺手機(jī)天氣預(yù)報軟件”的工程名為 weather,據(jù)程序模塊設(shè)計的內(nèi)容,建立 weather 工程。weather 工程源代碼的結(jié)構(gòu)如圖 9 所示。圖 8 項目結(jié)構(gòu)以下對項目 weather 下各資源包進(jìn)行介紹。

20、src 文件夾中包含項目大部分的代碼;gen 是 android 項目自動生成的文件夾,其中由系統(tǒng)自動生成的r.java 為系統(tǒng)中每一個資源分配了一個資源編號,包括圖片、string 文件中定義的字符串以及 layout 中的布局文件和 anim 中的樣式文件,都會在 r.java 中自動生成一個 id,方便在其他地方調(diào)用。android 2.2 及 android dependencies 是項目需要的 jar 包;bin 文件夾中保存了項目運行后的可執(zhí)行文件即 apk 文件;res 下的 anim 文件夾中自定義界面切換樣式,drawable-hdpi、drawable-ldpi、draw

21、able-mdpi 三個文件夾中分別存放像素高、低、中的圖片資源,三個文件夾中可以存放文件名相同的圖片,但系統(tǒng)在 r.java 中只生成一個資源 id,調(diào)用到這個 id 是系統(tǒng)會根據(jù)用戶手機(jī)屏幕像素情況自動選擇適應(yīng)屏幕的圖片,layout 中定義了界面布局的 xml 文件,values 中存放的是strings.xml 字符串定義文件和自定義的樣式文件;androidmanifest.xml 中配置了系統(tǒng)的相關(guān)參數(shù),以及所有的 activity、service 聲明。下面對 weather 項目的文件用途進(jìn)行說明:表表 1 1 weatherweather 工程的文件用途說明工程的文件用途說明

22、包包 名名 稱稱文文 件件 名名說說 明明edu.qin.menuaboutactivity.java菜單中“關(guān)于”選項對應(yīng)的a.qin.menumenuactivity.java定義菜單edu.qin.servicecityservice.java創(chuàng)建城市添加到城市列表中服務(wù)edu.qin.servicedialogservice.java創(chuàng)建程序中彈出的 dialog服務(wù)edu.qin.servicepreferencesservice.java用戶偏好設(shè)置服務(wù)edu.qin.servicequeryweatherservice.java查詢天氣服務(wù)edu.qin.u

23、tilsnetworkcheck.java網(wǎng)絡(luò)檢查edu.qin.utilsstreamtool.java字節(jié)處理edu.qin.utilstokenizertool.java字符串處理edu.qin.wfaddcitydialog.java添加城市的 activityedu.qin.wfloginactivity.java歡迎界面edu.qin.wfsettingdialog.java定時設(shè)置界面edu.qin.wfweatheractivity.java天氣預(yù)報界面表表 2 2 自定義自定義 viewview 及及 adapteradapter包包 名名 稱稱文文 件件 名名說說 明明ed

24、u.qin.useautocompletetvadapter.java自定義 adapter 用于自動適配下拉輸入框edu.qin.usecityadapter.java自定義城市列表 adapteredu.qin.usecityweatheroverview.java西定義 view,用于顯示城市天氣edu.qin.usemydialog.java自定義 dialogedu.qin.usemygesturelistener.java自定義滑動監(jiān)聽edu.qin.usemylistview.java自定義 listviewedu.qin.usemytextview.java自定義 textvi

25、ewedu.qin.useselectcityadapter.java自定義 adapter 用于城市管理android 的資源文件保存在/res 的子目錄中。其中、/res/anim 目錄中保存的是產(chǎn)生動畫效果的 xml 文件,/res/drawable/目錄中保存的是圖像文件,/res/values 目錄中保存的是用來自定義字符串和顏色的文件,/res/xml 目錄中保存的是 xml 格式的數(shù)據(jù)文件。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個資源文件的用途可以參考表 3:表表 3 3 資源文件名稱與用途資源文件名稱與用途資源目錄資源目錄文文 件件說說 明明push_le

26、ft_in.xml畫面轉(zhuǎn)換位置移動動畫效果(左進(jìn))push_left_out.xml畫面轉(zhuǎn)換位置移動動畫效果(左出)push_right_in.xml畫面轉(zhuǎn)換位置移動動畫效果(右進(jìn))animpush_right_out.xml畫面轉(zhuǎn)換位置移動動畫效果(右出)drawable略這個文件夾里是工程里所用的圖片,如有表示天氣狀況、背景等,此處不贅述。about.xml關(guān)于界面的布局city_environment.xml生活指數(shù)的布局city_intro.xml城市介紹的布局city_setting.xml城市管理的布局city_weather.xml城市天氣的布局dlg_list.xml彈出選擇列

27、表的布局dlg_tips_one_button.xml單按鈕提示 dialog 的布局login.xml歡迎界面的布局option_city.xml添加城市 dialog 中選擇城市的布局setting.xml自動更新天氣設(shè)定的布局view_paper.xml天氣預(yù)報滑動容器布局weather_overview.xml天氣概覽的布局layoutweather.xml城市管理中 itme 的布局styles.xml自定義 dialog 的樣式定義valuestips_styles.xml提示對話框的樣式定義strings.xml保存字符串的 xml 的文件4.24.2 數(shù)據(jù)數(shù)據(jù)存儲存儲本程序數(shù)據(jù)

28、存儲用到 android 數(shù)據(jù)存儲的兩種方式 shared preferences和 files。.1 sharedshared preferencespreferencesshared preferences 用于保存用戶的偏好設(shè)置,比如首要城市、關(guān)注城市、定時更新信息等。下面用保存首要城市名稱和取出首要城市名稱兩個例子介紹shared preferences 的用法。(1) 保存首要城市名稱的代碼:/*保存首要城市名稱,即第一頁顯示天氣的城市 * * param primarycity */public void setprimarycity(string primaryc

29、ity)sharedpreferences preferences = context.getsharedpreferences(weather,context.mode_private);sharedpreferences.editor editor= preferences.edit();editor.putstring(primarycity, primarycity);mit();首先用 getsharedpreferences 方法得到一個 sharedpreferences 對象,文件名為 weather,權(quán)限為 mode_private。獲取 sharedpreferences

30、對象時有三種權(quán)限可以選擇, mode_private、mode_world_readable、mode_world_writeable;mode_private表示創(chuàng)建的文件只能由調(diào)用的應(yīng)用程序訪問,即只能被本程序訪問;mode_world_readable 表示創(chuàng)建的文件讓所有其他應(yīng)用程序有讀權(quán)限;mode_world_writeable 表示創(chuàng)建的文件讓所有其他應(yīng)用程序有寫權(quán)限。用getsharedpreferences 方法創(chuàng)建的文件,系統(tǒng)會自動保存到用戶安裝程序的/data/data/shaared_pref 文件夾下。然后用創(chuàng)建的 sharedpreferences 對象獲取 sha

31、redpreferences 的 editor對象,再用 editor 的 put 方法向 weather 文件中寫入用戶偏好設(shè)置,最后用editor 的 commit 方法保存寫入的用戶偏好信息。(2)取出首要城市名稱的代碼:/*取出首要城市的名稱 * return 首要城市的名稱,不存在則返回空串 */public string getprimarycity()sharedpreferences preferences = context.getsharedpreferences(weather, context.mode_private);return preferences.getst

32、ring(primarycity, );讀取用戶偏好信息時要用與保存用戶偏好信息時同樣的參數(shù)獲取sharedpreferences 對象,用 sharedpreferences 的對象調(diào)用 get 方法即可得到設(shè)置進(jìn)去的用戶偏好信息。.2 filesfilesfiles 數(shù)據(jù)儲存方式主要用來天氣信息。本程序調(diào)用 webservice 獲取天氣信息,該 webservice 調(diào)用采用 soap2 協(xié)議,通過標(biāo)準(zhǔn) xml 文件流交互信息,得到的天氣預(yù)報信息為一個文件輸入流對象,保存后為一個 xml 文件。由于天氣預(yù)報信息實時性比較強(qiáng),信息結(jié)構(gòu)復(fù)雜;將 xml 文件解析處理后保存到數(shù)

33、據(jù)庫中可以以后一次也用不上,所以本程序采用文件方式保存天氣信息,android系統(tǒng)中集成 pull 解析器,pull 解析器是一個功能強(qiáng)大并且使用方便的 xml 解析器。下面通過保存天氣信息文件和讀取天氣文件介紹 files 和 pull 解析器的用法。(1)保存天氣信息/* 保存天氣到xml文件中 * param weatherinfo 天氣情況的輸入流對象 * param cityname 城市名,這將用作文件名 * throws ioexception */public void saveweatherinfo(inputstream weatherinfo,string citynam

34、e) throws ioexception fileoutputstream fos = context.openfileoutput(cityname,context.mode_private);byte buffer = new byte1024;int len = 0;while(len = weatherinfo.read(buffer)!= -1)fos.write(buffer, 0, len);fos.close();files 的方保存文件先用 context 對象打開一個文件輸出流,與用戶偏好設(shè)置一樣,我們可以設(shè)定這個文件的權(quán)限,在這里我就不再次說明,將獲取到的輸入流寫到輸出

35、流中,關(guān)閉輸出流天氣信息就保存成功了。(2)獲取天氣信息(包括解析天氣信息)/*解析天氣預(yù)報的xml文件 * param cityname 需要解析城市的名稱 * return 天氣情況 * throws exception */public arraylist parseweatherxml(string cityname) throws exceptionarraylist weatherinfos = new arraylist();fileinputstream fis = context.openfileinput(cityname);xmlpullparser pullparser

36、 = xml.newpullparser();pullparser.setinput(fis, utf-8);int event = pullparser.geteventtype();while(event != xmlpullparser.end_document)switch (event) case xmlpullparser.start_tag:if(string.equals(pullparser.getname()/system.out.println(pullparser.nexttext();weatherinfos.add(pullparser.nexttext();bre

37、ak;event = pullparser.next();return weatherinfos;通過要查詢的天氣的城市名稱獲取到文件輸入流,然后再同過 pull 解析器解析 xml 文件,得到天氣信息字符串,用 arraylist 保存并傳出。以下是 webservice 上得到的天氣信息(3)孝感.xml湖北孝感5748257482.jpg2013-1-1 16:11:23-3/101月1日 多云無持續(xù)風(fēng)向微風(fēng)1.gif1.gif今日天氣實況:氣溫:11;風(fēng)向/風(fēng)力:南風(fēng) 2級;濕度:40%;空氣質(zhì)量:中;紫外線強(qiáng)度:最弱穿衣指數(shù):暫缺。 過敏指數(shù):天氣條件極不易誘發(fā)過敏,可放心外出,享受

38、生活。 運動指數(shù):天氣較好,但考慮天氣寒冷,推薦您進(jìn)行室內(nèi)運動,若在戶外運動請注意保暖并做好準(zhǔn)備活動。 洗車指數(shù):較適宜洗車,未來一天無雨,風(fēng)力較小,擦洗一新的汽車至少能保持一天。 晾曬指數(shù):天氣不錯,午后溫暖的陽光仍能滿足你驅(qū)潮消霉殺菌的晾曬需求。 旅游指數(shù):多云,有時云會遮擋住陽光,但絲毫不會影響您出行的心情。溫度適宜又有微風(fēng)相伴,很適宜旅游。 路況指數(shù):天氣較好,路面比較干燥,路況較好。 舒適度指數(shù):天氣較好,早晚會感覺偏涼,午后舒適、宜人。 空氣污染指數(shù):氣象條件對空氣污染物稀釋、擴(kuò)散和清除無明顯影響,易感人群應(yīng)適當(dāng)減少室外活動時間。 紫外線指數(shù):屬弱紫外線輻射天氣,無需特別防護(hù)。若長

39、期在戶外,建議涂擦spf在8-12之間的防曬護(hù)膚品。-1/31月2日 多云轉(zhuǎn)陰北風(fēng)3-4級1.gif2.gif-1/11月3日 陰轉(zhuǎn)雨夾雪北風(fēng)3-4級轉(zhuǎn)無持續(xù)風(fēng)向微風(fēng)2.gif6.gif位于湖北省東北部,南臨省會武漢市,北與河南、隨州交界,西接天門、仙桃、京山等縣市,東連黃岡市的紅安縣和武漢市的黃陂區(qū)。因東漢孝子董永行孝感天而得名。孝感市是改革開放中發(fā)展起來的新興中等城市,轄孝南區(qū)、漢川市、應(yīng)城市、安陸市和云夢縣、大悟縣、孝昌縣;國土面積11560平方公里,總?cè)丝?80萬人。孝感是楚文化的重要發(fā)祥地之一。周代貳國、軫國、鄖國都建都于此。秦代竹簡、秦漢漆器、東漢陶樓等國寶文物和楚王城等遺址展示了

40、孝感絢麗多財?shù)墓糯幕?。剪紙、皮影、膏塑等傳統(tǒng)文化藝術(shù)源源流長。孝感市屬亞熱帶大陸性季風(fēng)氣候,四季分明,雨量充沛,溫暖濕潤,光照充足。全年主導(dǎo)風(fēng)向為東南風(fēng),年均氣溫在15.5-16.5c之間。景觀:大洪山、白水寺、白云泉、石刻題記、董永故里、鄂豫邊區(qū)革命烈士陵園、高掛三潭、擂鼓墩古墓群。從上面天氣信息 xml 文件看出,有用的天氣信息都在標(biāo)簽中,我們用 pull 解析器不斷解析,并保存 string 標(biāo)簽中的內(nèi)容便可以得到天氣信息。while(event != xmlpullparser.end_document)switch (event) case xmlpullparser.start_

41、tag:if(string.equals(pullparser.getname()weatherinfos.add(pullparser.nexttext();break;event = pullparser.next();4.34.3 主要功能代碼主要功能代碼本項目使用的代碼較多,本部分對天氣預(yù)報項目中核心代碼進(jìn)行解析,這部分代碼能夠完成天氣預(yù)報的查詢與顯示的基本功能,另外一部分代碼則實現(xiàn)的了能夠與用戶更好的交互,增加應(yīng)用的界面美觀的功能。.1 獲取天氣數(shù)據(jù)獲取天氣數(shù)據(jù)從http:/ service中獲取的天氣數(shù)據(jù),數(shù)據(jù)的獲取地址為:http:/ * * param city

42、name 城市名 * return 獲取成功則返回true,否則false * throws exception */public boolean queryweather(string cityname) throws exceptionfinal string weather_city = http:/ soap = readsoap();soap = soap.replaceall($citynameaa, cityname);byte entity = soap.getbytes();string path = weather_city;httpurlconnection conn =

43、 (httpurlconnection) new url(path).openconnection();conn.setconnecttimeout(5000);conn.setrequestmethod(post);conn.setdooutput(true);conn.setrequestproperty(content-type, application/soap+xml; charset=utf-8);conn.setrequestproperty(content-length, string.valueof(entity.length);conn.getoutputstream().

44、write(entity);if(conn.getresponsecode() = 200)/保存天氣信息到xml文件saveweatherinfo(conn.getinputstream(),cityname);return true;return false;readsoap方法private static string readsoap() throws exception inputstream inputstream = queryweatherservice.class.getclassloader().getresourceasstream(soap12.xml);byte da

45、ta = streamtool.read(inputstream);return new string(data);通過 readsoap 方法讀取 src 下 soap12.xml 文件,得到訪問天氣預(yù)報的webservice 的標(biāo)準(zhǔn)天氣交互格式,查詢天氣時將 xml 中指定的城市名稱換成實際要查詢的天氣預(yù)報的城市名,然后提交查詢。然后獲取到天氣信息的輸入流對象。.2 網(wǎng)絡(luò)檢查網(wǎng)絡(luò)檢查public static boolean ckeck(context context) connectivitymanager con = (connectivitymanager) cont

46、ext.getsystemservice(context.connectivity_service);networkinfo networkinfo = con.getactivenetworkinfo();if (networkinfo = null | !networkinfo.isconnected() / 當(dāng)前網(wǎng)絡(luò)不可用return false;return true;檢查設(shè)備當(dāng)前是否接入網(wǎng)絡(luò),使用此功能需要在 androidmanifest.xml 中添加訪訪問權(quán)限:.3 定時更新時間定時更新時間 本程序一啟動就會啟動就會查看用戶偏好設(shè)置中用戶是否啟用自動更新天氣服務(wù)

47、,若啟用,程序會啟動timeservice這個后臺服務(wù),按照用戶設(shè)置進(jìn)行天氣信息更新。核心代碼如下:alarmmanager alarmmanager = (alarmmanager)getsystemservice(context.alarm_service);alarmmanager.set(alarmmanager.rtc_wakeup, now + updatemilis, pendingintent);至此,后臺服務(wù)介紹完畢,最后還需要在androidmanifest.xml文件中注冊后臺服務(wù)。.4 viewflipperviewflipper 手勢監(jiān)聽手勢監(jiān)聽七彩天

48、氣主界面的activity實現(xiàn)了ongesturelistener接口,下面onfling方法就是ongesturelistener中的一個方法,該方法實現(xiàn)了viewflipper對滑動手勢的監(jiān)聽,并完成滑動切換效果。onfling中兩個motionevent參數(shù)分別是用戶做滑動手勢時,觸屏的起點位置和終點位置,通過getx()方法取出觸點的x軸坐標(biāo),計算終點x軸坐標(biāo)與起點x軸坐標(biāo),差值大于100dp,則認(rèn)為用戶使用滑動手勢,通過差值的正負(fù)來判斷用戶需要向左滑動還是向右滑動,如果差值為正則從左向右滑動,反之從右向左滑動。overridepublic boolean onfling(motion

49、event e1, motionevent e2, float velocityx,float velocityy) if (e2.getx() - e1.getx() 100) / 從左向右滑動(左進(jìn)右出)if(myviewflipper.isflipping()/如果viewflipper正在滑動,則不劃動到下一頁,沒有實現(xiàn)system.out.println(myviewflipper.isflipping);return true;animation rinanim = animationutils.loadanimation(weatheractivity.this,r.anim.p

50、ush_right_in); / 向右滑動左側(cè)進(jìn)入的漸變效果(alpha 0.1 - 1.0)animation routanim = animationutils.loadanimation(weatheractivity.this,r.anim.push_right_out); / 向右滑動右側(cè)滑出的漸變效果(alpha 1.0 - 0.1)myviewflipper.setinanimation(rinanim);myviewflipper.setoutanimation(routanim);myviewflipper.showprevious();return true; else i

51、f (e2.getx() - e1.getx() 1.0)animation loutanim = animationutils.loadanimation(weatheractivity.this,r.anim.push_left_out); / 向左滑動右側(cè)滑出的漸變效果(alpha 1.0 - 0.1)myviewflipper.setinanimation(linanim);myviewflipper.setoutanimation(loutanim);myviewflipper.shownext();return true;return true;.5 城市管理中城市

52、點擊事件城市管理中城市點擊事件城市管理中采用gridview以網(wǎng)格形式展現(xiàn)給用戶9個城市管理區(qū)域,用戶在這9個區(qū)域中可以自由添加或刪除關(guān)注的城市。gridviewitemclicklistener中寫了當(dāng)gridview中某一個itme被點擊時所做出想響應(yīng)。當(dāng)用戶點擊的位置對應(yīng)了一個用戶已經(jīng)關(guān)注的城市(即觸點在“+”前面),程序會先將本城市設(shè)定為首要城市,然后發(fā)送ui更新消息,更新城市天氣界面,最后將界面焦點自動定位到城市天氣頁面;如果點擊位置對應(yīng)的是“+”,則彈出添加城市對話框;如果點擊位置在“+”之后,程序不會響應(yīng)這個事件。class gridviewitemclicklistener i

53、mplements onitemclicklistenerpublic void onitemclick(adapterview arg0, view arg1, int position,long arg3) system.out.println(gridviewitemclicklistener);preferencesservice = new preferencesservice(w_context);/得出當(dāng)前已經(jīng)設(shè)定的城市數(shù)目setctiynum = preferencesservice.nowcitynum();/如果點擊的位置小于當(dāng)前設(shè)定城市的數(shù)目,跳轉(zhuǎn)到position指定的

54、城市天氣界面if(position setctiynum)/添加代碼,跳到城市天氣那一頁,并設(shè)定首要城市為選定的城市string selectcityname = preferencesservice.getcitynamebycitynum(position+1);primarycity = selectcityname;preferencesservice.setprimarycity(selectcityname);isparseweather = getweatherfromxml();/嘗試解析primarycity天氣情況if(!isparseweather)/如果不存在天氣文件,

55、更新天氣,更新天氣完畢發(fā)送刷新消息refreshweather(primarycity);/解析成功,發(fā)送更新第一個界面message msg = new message();msg.what = 1;myhandler.sendmessage(msg);/跳到第一頁myviewflipper.setdisplayedchild(0);/如果點擊的位置等于當(dāng)前設(shè)定城市的數(shù)目,跳轉(zhuǎn)到添加城市界面else if(position = setctiynum)addcitydialog showdialog = new addcitydialog(w_context,myhandler); /創(chuàng)建類對

56、象showdialog.createdialog(add);/創(chuàng)建需要的dialog/如果點擊的位置大于當(dāng)前設(shè)定城市的數(shù)目,不作處理 4.44.4 主要界面主要界面結(jié)構(gòu)布局代碼結(jié)構(gòu)布局代碼在用戶界面設(shè)計上,采用了viewflipper框架結(jié)構(gòu),提供直觀的交互操作以及體驗良好的滑動效果。.1 viewflipperviewflipper 框架結(jié)構(gòu)框架結(jié)構(gòu)viewflipper中定義了四個界面分別是城市天氣、城市管理、生活指數(shù)、城市介紹,這四個界面是與用戶交互天氣信息最主要的界面。下面是的布局文件代碼。view_paper.xml .2 城市管理界面城市管理界面城市

57、管理界面以一個 gridview 顯示用戶已經(jīng)關(guān)注的城市,沒有關(guān)注的城市用空白表示,下面是城市管理界面布局文件的主要代碼:city_setting.xml .3 生活指數(shù)生活指數(shù)用戶可以用選擇列表選自自己關(guān)心的生活指數(shù)信息,下面是生活指數(shù)頁面布局文件主要部分。city_environment.xml .4 城市簡介城市簡介 城市簡介定義了一個scrollview(卷軸視圖)展現(xiàn)城市簡介信息,scrollview能夠根據(jù)城市簡介的內(nèi)容多少自動收縮,始終保持展現(xiàn)在用戶眼前的事是一屏,當(dāng)城市簡介內(nèi)容超過一屏?xí)r,視圖將以卷軸方式顯示內(nèi)容,保持界面美觀。city_intr

58、o.xml 5 5 系統(tǒng)測試系統(tǒng)測試至此已經(jīng)完成了weather工程的代碼編寫工作,在這一章節(jié)對weather工程進(jìn)行測試,步驟及結(jié)果如下:(1)將軟件安裝到手機(jī)上,點擊weather啟動程序,程序啟動后,首次使用本程序會彈出添加城市對話框。圖9 添加城市界面(2)通過輸入框輸入城市名稱或直接點擊熱門城市,在這里我輸入“孝感”,設(shè)定關(guān)注城市后,如果手機(jī)接入網(wǎng)絡(luò),則會自動加載天氣預(yù)報。圖10城市天氣界面(3)用鼠標(biāo)滑動屏幕,將焦點切換到“城市介紹”頁面圖11 城市介紹界面(4)用鼠標(biāo)滑動屏幕,將焦點切換到“生活指數(shù)”頁面,通過下拉列表查看關(guān)心的生活指數(shù),這里我查看“空氣指數(shù)”圖12 生活指數(shù)界面(5)用鼠標(biāo)滑動屏幕,將焦點切換到“城市管理”頁面,目前只有孝感一個城市,我們可以點擊加號彈出添加城市的對話

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論