基于Android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)_第1頁
基于Android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)_第2頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于Android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)基于Android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)摘要:安卓是谷歌于2008年推出的一個(gè)智能手機(jī)操作系統(tǒng),其獨(dú)特的設(shè)計(jì)模式使得開發(fā)手機(jī)軟件變得非常簡單。該論文介紹了一款安卓天氣預(yù)報(bào)的設(shè)計(jì)與實(shí)現(xiàn)過程。用戶可以通過主界面選擇城市來獲得包括風(fēng)力、風(fēng)向、紫外線強(qiáng)度等的天氣信息?;谑謾C(jī)的天氣預(yù)報(bào)系統(tǒng)能夠使用戶對(duì)于各地的天氣情況實(shí)時(shí)掌握,方便用戶的出行和行程安排,具有一定的實(shí)用性。關(guān)鍵字:實(shí)時(shí)預(yù)報(bào),Android,溫度檢測(cè),定位TheDesignandDevelopmentofWeatherForecastSystembasedontheAndroidISy

2、stemAbstract.AndroidisaSmartphonesystemlaunchedbyGooglein2008,whoseuniquedesignpatternmakesiteasiertodevelopmobilephonesoftwares.ThepaperintroducestheprocessofthedesignandimplementationofaAndroidweatherforecastsystem.Userscanchooseacitywhathelikesfromthehomescreentogetaccesstotheweatherinformationin

3、cludingwind,winddirection,strongofultravioletlightandsoon.Weatherforecastsystembasedonmobilephoneenablesuserstotakethereal-timecontrolofweatherconditionsofallparts,thusbringinggreatconveniencetotheuserstravelandtravelarrangements,andhasacertainpracticalityKeywords:real-timeforecast,Android,Temperatu

4、redetection,location畢業(yè)論文(設(shè)計(jì))原創(chuàng)性聲明本人所呈交的畢業(yè)論文(設(shè)計(jì))是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除文中已經(jīng)注明引用的內(nèi)容外,本論文(設(shè)計(jì))不包含其他個(gè)人已經(jīng)發(fā)表或撰寫過的研究成果。對(duì)本論文(設(shè)計(jì))的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中作了明確說明并表示謝意。作者簽名:日期:畢業(yè)論文(設(shè)計(jì))授權(quán)使用說明本論文(設(shè)計(jì))作者完全了解*學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計(jì))的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計(jì))并向相關(guān)部門送交論文(設(shè)計(jì))的電子版和紙質(zhì)版。有權(quán)將論文(設(shè)計(jì))用于非贏利目的的少量復(fù)制并允許論文(設(shè)計(jì))進(jìn)入學(xué)校圖書館被查閱。學(xué)??梢怨颊?/p>

5、文(設(shè)計(jì))的全部或部分內(nèi)容。保密的論文(設(shè)計(jì))在解密后適用本規(guī)定。作者簽名:指導(dǎo)教師簽名:日期:日期:II注意事項(xiàng)1. 設(shè)計(jì)(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)7)參考文獻(xiàn)8)致謝9)附錄(對(duì)論文支持必要時(shí))2. 論文字?jǐn)?shù)要求:理工類設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬字。3. 附件包括:任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)。4. 文字、圖表要求:1)文字通順,語言

6、流暢,書寫字跡工整,打印字體及大小符合要求,無錯(cuò)別字,不準(zhǔn)請(qǐng)他人代寫2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應(yīng)繪制于無格子的頁面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5. 裝訂順序1)設(shè)計(jì)(論文)2)附件:按照任務(wù)書、開題報(bào)告、外文譯文譯文原文(復(fù)印件)次序裝訂3)其它II03vs0361Ir.LIr.u俸硏!a譽(yù)mmpiojpuv944SWWb曹P癢進(jìn)*卿美PPPUD乙E癢進(jìn)宙取硏丄導(dǎo)擊鮭PPPUDb|6o

7、oe)TEPiojpuv3|6oo9*E議蜩竝NZliSfWIN33puesq3M乙乙zi乙z事標(biāo)昌竝乙T蜩揮昌跡lMTasexTS蜩SilTWl沓目53測(cè)試內(nèi)容和結(jié)果2054測(cè)試結(jié)果226結(jié)束語23致謝24參考文獻(xiàn)24II1.緒論1.1系統(tǒng)開發(fā)的目的由于智能手機(jī)的快速普及,智能操作系統(tǒng)在手機(jī)市場占據(jù)了很大一部分,其中以Andriod和iOS最為流行。為了讓智能手機(jī)用戶能夠隨時(shí)隨地查詢互聯(lián)網(wǎng)所提供的信息,一種非常高效的方法就是將網(wǎng)絡(luò)系統(tǒng)的功能擴(kuò)展到智能手機(jī)終端上,讓手機(jī)能夠通過移動(dòng)網(wǎng)絡(luò)訪問Web網(wǎng)站并處理各種各樣的業(yè)務(wù)。由于在大學(xué)學(xué)習(xí)過java語言,并且Andriod系統(tǒng)是基于java語言開發(fā)

8、的,因此想開發(fā)一套基于Andriod平臺(tái)的3G手機(jī)氣象軟件并從網(wǎng)上獲取天氣預(yù)報(bào)信息。Android平臺(tái)的天氣預(yù)報(bào)軟件的開發(fā)可以進(jìn)一步擴(kuò)大氣象信息的覆蓋面讓廣大Android手機(jī)用戶能夠在第一時(shí)間獲取最新的天氣預(yù)報(bào)信息,以便提前預(yù)防,方便出行。同時(shí),把氣象災(zāi)害造成的損失降到最低,也可以提高公共服務(wù)質(zhì)量,更好的發(fā)揮氣象事業(yè)對(duì)經(jīng)濟(jì)社會(huì)發(fā)展的現(xiàn)實(shí)性作用,有巨大的實(shí)用價(jià)值。雖然該技術(shù)在Android平臺(tái)已經(jīng)比較成熟,但是通過該軟件的開發(fā)仍然能幫助我更好的認(rèn)識(shí)Android系統(tǒng)的工作1.2系統(tǒng)開發(fā)工具(1) win7系統(tǒng)jdk1.8Eclipse標(biāo)準(zhǔn)版及ADT插件SensorSimulator(用來模擬安

9、卓手機(jī)中的溫度傳感器)1.3項(xiàng)目需求分析(1)系統(tǒng)能夠通過手機(jī)精確定位全國各個(gè)城市未來幾天的天氣情況(2) 系統(tǒng)具有安全性,獨(dú)立性,可靠性(3) 系統(tǒng)界面設(shè)計(jì)優(yōu)美,符合用戶的操作習(xí)慣,且在一定程度上節(jié)省流量開銷12.項(xiàng)目設(shè)計(jì)2.1系統(tǒng)架構(gòu)圖2.1系統(tǒng)構(gòu)架圖2.2webservice網(wǎng)絡(luò)拓?fù)鋱D本系統(tǒng)是基于提供webservice服務(wù)的網(wǎng)站接收數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行解析,從中找到需要的數(shù)據(jù)。如圖2.2所示為提供webservice服務(wù)的網(wǎng)站網(wǎng)絡(luò)拓?fù)鋱DSmtMlWDRIf甜舊侶zsq叱酒譽(yù)圣*心SIPVMjAJOSqoAVW礙MWSHSsdoVPRKftfjApovsdo中意書目程工EZaiiadoi

10、dpafod冒5pp朋&0dILUX:pppUGjpIdpLI02叫I凹百4m5百耳sapuapu.3d.3popu廿三巨科甘eepp4?ueB気gagPAziiaivuiBo-i吁4BAErF|iinjeAUQ97-Einsrifljnps田rbab|!1門0心陰日臥Jf:心!叫口可呂申AJ3qBM3L|W百陋呼BAEplAipVSdg3ddesnfunps出r込第rsauEjqq79九idpiopuy。三自!旦qqp30LJ3Jd|SsdEE円dpuyWOLUaaJBL|lBa/V.gF刪昌竝EZ理經(jīng)緯度轉(zhuǎn)換的類,LoginActivity是處理登錄界面的類。3GoogleAndroid平

11、臺(tái)的相關(guān)理論3.1GoogleAndroid移動(dòng)平臺(tái)下的應(yīng)用研究Android系統(tǒng)提供給應(yīng)用程序開發(fā)者的只是一個(gè)框架,在該平臺(tái)下開發(fā)應(yīng)用程序必須要遵守這個(gè)框架原則。我們開發(fā)的應(yīng)用程序其實(shí)就是在這個(gè)框架上進(jìn)行拓展,下面介紹一下android這個(gè)框架所提供的功能。Androidapp:提供最上層的程序模型和運(yùn)行環(huán)境Androidcontent:包含對(duì)設(shè)備上的據(jù)進(jìn)行訪問和發(fā)布的類Androiddatabase:Android系統(tǒng)內(nèi)置一個(gè)輕量級(jí)的SQLite據(jù)庫Androidgraphics:底層的圖形庫,包含顏色過濾,畫布,矩形,點(diǎn),可以用來將它們直接繪制到屏幕上。Androidnet:提供用來幫助

12、訪問網(wǎng)絡(luò)的類。Androidlocation:定位以及與定位有關(guān)的一些類。Androidutil:涉及到一些實(shí)用性的方法,例如對(duì)時(shí)間和日期進(jìn)行操作。Androidmedia:提供一些管理多種視頻,音頻的媒體接口。Androidos:提供了系統(tǒng)服務(wù),IPC機(jī)制和消息傳輸。Androidopngl:提供了OpenGL的工具。Androidprovider:提供了訪問Android中的內(nèi)容提供者的類。Androidtelephony:提供用來與撥打電話相關(guān)的API交互的類。Androidview:提供最基本的用戶界面接口框架。Addroidwebkt:提供用來調(diào)用默認(rèn)瀏覽器的接口。Android.w

13、idget包含各種UI元素,可以在應(yīng)用程序的布局中使用。3.2Android關(guān)鍵技術(shù)研究Android平臺(tái)是基于java語言開發(fā)的,其中主要由四大組建構(gòu)成,分別為:25Activity、Service、BroadcastReceiver、ContentProvider。1.ActivityActivity就是一個(gè)用戶界面,每一個(gè)Activity就是一個(gè)獨(dú)立的界面。比如照相機(jī)程序,實(shí)現(xiàn)一個(gè)拍照的Activity,短信也是一個(gè)Activity,撥號(hào)界面也是一個(gè)Activity等等,這些Activity都是相互獨(dú)立的,但組合在一起它們就變成一個(gè)完整功能的應(yīng)用程序了。我們可以把Activity理解成j

14、ava中的JFrame控件,不過它與JFrame的別在于:java中的JFrame本身可以設(shè)置布局理器,不斷的向JFrame中添加組件,但Activity只能通過setContentView(layout)方法在主界面顯示布局。2.ServiceService與Activity的地位是相同的,它也代表一個(gè)獨(dú)立的Android組件,Service與Activity的別在于:Service通常在后臺(tái)運(yùn)行,它不需要與用戶進(jìn)行交互,此Service沒有用戶界面。與Activity需要繼承Activity的基類一樣,Service同樣也需要繼承Service基類。當(dāng)一個(gè)Service組件在后臺(tái)運(yùn)行起來后

15、尼就會(huì)和Acitivity同樣也有自己的生命周期。Service組件通常用于為一些不需要界面但是又必須在后臺(tái)運(yùn)行的程序提供服務(wù),比如音樂或者音頻播放軟件。名思義它主要就是用來3.BroadcastReceiver中文意思是廣播接收者,接收來自廣播和系統(tǒng)中的應(yīng)用程序發(fā)送的消息。在Android中廣播的用處非常廣泛,例如當(dāng)開機(jī)后會(huì)自動(dòng)產(chǎn)生一條廣播,接收到這條廣播后系統(tǒng)就能及時(shí)的做出提示和保存數(shù)據(jù)等操作;當(dāng)電池電量低的時(shí)候系統(tǒng)也會(huì)產(chǎn)生一條廣播,這樣就能及時(shí)提示用戶進(jìn)行充電等的操作。本質(zhì)上BroadcastReceiver就是一種全局的監(jiān)聽器,我們用它來監(jiān)聽系統(tǒng)向應(yīng)用程序發(fā)送的廣播消息?;谝陨纤鑫?/p>

16、們可以用它非常方便的實(shí)現(xiàn)系統(tǒng)中不同組件之間的相互通信。4.ContentProvider它是不同APP之間進(jìn)行交換數(shù)據(jù)的核心的API,ContentProvider在系統(tǒng)中以某種URI的形式對(duì)外提供數(shù)據(jù)允許其他應(yīng)用查詢或者修改數(shù)據(jù);其他應(yīng)用程序使用ContentResolver根據(jù)URI去訪問和操作指定的數(shù)據(jù).事實(shí)上這里有一個(gè)簡單的類比:可以把ContentProvider看作安卓系統(tǒng)內(nèi)部提供的一個(gè)網(wǎng)站,這個(gè)網(wǎng)站以固定的URI對(duì)外提供I服務(wù);而ContentResolver可以當(dāng)成系統(tǒng)內(nèi)部的HttpClient,它可以向指定的URI發(fā)送請(qǐng)求,這種請(qǐng)求最后委托給ContentProvider處理

17、,從而實(shí)現(xiàn)對(duì)網(wǎng)站內(nèi)部數(shù)據(jù)進(jìn)行操作。3.3小結(jié)本單元主要概括了關(guān)于Android平臺(tái)的三個(gè)方面的內(nèi)容:I.Googleandroid移動(dòng)平臺(tái)的概述2.googleandroid移動(dòng)平臺(tái)開發(fā)過程的研究3.Googleandroid移動(dòng)平臺(tái)下的應(yīng)用研究,概要的介紹了Googleandroid移動(dòng)平臺(tái)相關(guān)知識(shí),4.介紹了Android平臺(tái)下的四大組件的相關(guān)內(nèi)容。通過本章我們對(duì)Googleandroid移動(dòng)平臺(tái)有初步的認(rèn)識(shí)和了解,為后面的開發(fā)做了堅(jiān)實(shí)的基礎(chǔ)。4.天氣預(yù)報(bào)程序設(shè)計(jì)4.1Android的UI界面的實(shí)在Android中用戶界面都是布局在XML文件中的。這些XML文件放在工程/res/layou

18、t下面。這對(duì)以前熟悉java可視化編程的人來說可能有些不太習(xí)慣??赡苡腥艘蓡枮槭裁匆巡季治募旁赬ML文件里呢?其實(shí)有過web基礎(chǔ)的都應(yīng)該知道m(xù)vc框架,這是一種用于網(wǎng)站開發(fā)的非常優(yōu)秀的思想,在安卓系統(tǒng)中,安卓開發(fā)人員把用戶界面放在XML文檔中定義,這樣就可以讓XML文檔專門負(fù)責(zé)用戶UI界面設(shè)置,而java程序?qū)iT負(fù)責(zé)業(yè)務(wù)實(shí)現(xiàn),從而降低程序的耦合,便于程序的維護(hù)和擴(kuò)展,符合mvc設(shè)計(jì)思想。在XML中Android開發(fā)人員放置了很多我們經(jīng)常用到的一些組件,比如view,Button,EditText等,通過這些系統(tǒng)提供的控件,我們可以開發(fā)出我們想要的程序界面來。Layout是一類特殊的View

19、Group控件,它們本身并不顯示任何的內(nèi)容,存在的惟一原因就是其中的內(nèi)部結(jié)構(gòu),能夠更好地?cái)[放它的子控件。比如Linearlayout(線性布局),可將子控件按水平或垂方向按順序排列下去;Tablelayout(表格布局),可以將子控件按照表格的形式,一枚枚放好Relativelayout(相對(duì)布局)”實(shí)際應(yīng)用中這個(gè)布局更靈活,它可以設(shè)定各個(gè)控件之間的對(duì)齊和排列關(guān)系,適合編寫復(fù)雜的界面。有了Layout的存在,控件和控件之間不再是獨(dú)立地存在,而是更有機(jī)地結(jié)合在一起,設(shè)定起來也更為方便。在本程序中布局文件我一共用到了如圖4.1所示的布局文件丿#layout粗ity_de-tail.ximl粗cit

20、y_e-nvironment.xrnIgcityjayout.xml血content_layqut.ximIQgps_vieLv.xinllogir.xmlOjmain.xml血tqyb.yml圖4.1布局文件圖其中city_detail用來顯示城市簡介的信息,city_environment用來顯示當(dāng)前所在城市的生活指數(shù)信l,city_layout用來顯示用來選擇城市布局content_layout用來顯示天氣情況,gps_view用來顯示gps定位信息,login用來顯示登錄歡迎界面,main包含了用來切換的三個(gè)界面,tqyb顯示主界面布局4.2歡迎界面的實(shí)現(xiàn)考慮到程序界面的美觀效果,在進(jìn)

21、入主界面之前我首先設(shè)置了一個(gè)用來跳轉(zhuǎn)的Activity,并命名為LoginActivity。在LoginActivity中顯示login布局Timertimer=newTimer();finalIntentintent=newIntent(this,edu.njue.app.WeatherWebServiceActivity.class);TimerTasktask=newTimerTask()Overridepublicvoidrun()startActivity(intent);LoginActivity.this.finish();timer.schedule(task,1000);程序

22、顯示畫面一秒后會(huì)進(jìn)入主程序天氣界面,如圖4.2所示程序歡迎界面L:14.2歡迎界面4.3主界面功能實(shí)現(xiàn)第一次安裝好進(jìn)入程序界面時(shí),系統(tǒng)會(huì)顯示“本程序是第一次運(yùn)行,請(qǐng)選擇想要了解的城市”的窗口。在這里我把默認(rèn)城市設(shè)置為南京,如果用戶不單擊城市選擇按鈕的時(shí)候,則會(huì)顯示的是南京近兩天的天氣情況。如圖4.3所示。第一次運(yùn)行時(shí)我是通過在手機(jī)文件系統(tǒng)中判斷是否存在一個(gè)名為shared_prefs的文件來判斷是否為第一次運(yùn)行,如果存在則不是第一次運(yùn)行,系統(tǒng)會(huì)繼續(xù)執(zhí)行向下執(zhí)行代碼,如果系統(tǒng)中不存在該文件,則為第一次運(yùn)行該程序,程序彈出對(duì)話框告訴用戶。0:50:17南京(城今日天氣6月6日今日天氣實(shí)況Q提示由于

23、本程序是第一次運(yùn)行n點(diǎn)擊右上角設(shè)置城市r左右還可以滑動(dòng)杳看詳細(xì)信息一-確定晴23gC/32aC4.3第一次運(yùn)行效果圖在主程序界面,我運(yùn)用的主要是ViewFlipper組件,通過該組件可以實(shí)現(xiàn)滑動(dòng)顯示界面,不過在設(shè)置滑動(dòng)界面之前我們要先設(shè)定滑動(dòng)的動(dòng)畫。該動(dòng)畫實(shí)在resanim中設(shè)置,如圖4.4所示為左右滑動(dòng)效果布局J&anim|C1|left_in.xml,口.left_out.xml,口.rightJn.Kml,C1|right_out.Kml4.4界面滑動(dòng)布局其中l(wèi)eft_in中的代碼為:Al.2A)qQnojuouuqooq啟-qnd:lchwapg0nom=o眉ns-nnVA-jiiai

24、uuojyiuar總$80&更也!10言JgaulgoyAgar:+MHPFsO.IPUUapaQ.svq&0no&=o眉apnRUJVW0氣1p1mu=HJqs-asqjuoaefsojpub=W0氣夷dpsPEJnoAa“p-5JPUU3懇懇棗宣&FpvipueJoddJIHgAVowmsBeessfr142100)從左往右滑動(dòng)viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);viewFlipper.setAnimation(AnimationUtils.load

25、Animation(this,android.R.anim.slide_out_right);viewFlipper.showPrevious();elseif(touchDownX-touchUpX100)viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,R.anim.right_in);viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,R.anim.left_out);viewFlipper.showNext();returntrue;returnfals

26、e;獲取天氣信息并顯示天氣預(yù)報(bào)系統(tǒng)最重要的當(dāng)然是如何才能有效的獲取天氣信息了,要想獲取實(shí)想要的信時(shí)的天氣信息,我們就要訪問專門提供天氣信息的網(wǎng)站把網(wǎng)站返回的信息解析出并顯示在手機(jī)上。通過網(wǎng)上的搜索,我找到了一個(gè)提供webservice的網(wǎng)站:Webservice的出現(xiàn)成功的解決了不同平臺(tái)和語言之間進(jìn)行數(shù)據(jù)交換的問題,它主要使用XML文檔來傳遞消息,并將該消息發(fā)送給任何請(qǐng)求對(duì)象,由于不同系統(tǒng)對(duì)XML的完美支持,因此從根本上完善了跨平臺(tái)服務(wù),任何時(shí)刻、任何平臺(tái)我們可以使用任何語言來訪問該Webservice服務(wù)。對(duì)于Webservice使用者而言,webserviceAPI與任何操作平臺(tái)無關(guān),它只

27、是以XML語言作為數(shù)據(jù)交換格式。Webservice平臺(tái)主要涉及到的技術(shù)是SOAP(SimpleObjectAccessProtocol),WSDL(WebServiceDescriptionLanguage)SOAP依賴于XML文檔來構(gòu)建,一條SOAP消息就是一份特定的XML文檔,SOAP主要包含三個(gè)方面的主要元素:(1)(2)(3)根元素,該元素是必填的。其中SOAP消息用來傳遞的數(shù)據(jù)的XML文檔以該元素作為根元素元素,該元素是選填的。它包含了SOAP消息的頭信息元素,該元素是必填的。它包含所有的調(diào)用和相應(yīng)的內(nèi)容Java本身提供了很豐富的WebService支持比如Sun公司制定的JAX-

28、WS2規(guī)范,Apache開源組織提供的Axis1,Axis2,CXF等。我們可以使用Google公司為Android平臺(tái)開發(fā)的專門處理Webservice信息的ksoap2-android進(jìn)行客戶端的開發(fā)。使用該第三方包的方法為:1創(chuàng)建HttpTrasportSE對(duì)象2.創(chuàng)建SoapSerializationEnvelope對(duì)象3創(chuàng)建SoapObject對(duì)象創(chuàng)建該對(duì)象時(shí)需要傳入所要調(diào)用WebService的命名空間4如果有參數(shù)需要傳給WebService服務(wù)器端,調(diào)用SoapObject對(duì)象的addProperty(Stringname,Objectvalue)方法來設(shè)參數(shù),該方法的name參

29、數(shù)指定參數(shù)名,value指定參數(shù)值5調(diào)用SoapSerializationEnvelope的setOutputSoapObjectO方法,或者直接對(duì)bodyout屬性賦值,將前兩步創(chuàng)建的SoapObject對(duì)象設(shè)SoapSerializationEnvelope的傳出SOAP消息體6調(diào)用對(duì)象的call。方法,并以SoapSerializationEnvelope作為參數(shù)調(diào)用遠(yuǎn)程的WebService7調(diào)用完成后訪問SoapSerializationEnvelope對(duì)象的bodyin屬性該屬性返回一個(gè)SoapObject對(duì)象,該對(duì)象就代表了WebService的返回消息,解析該基于此SoapOb

30、ject對(duì)象,即可獲取調(diào)用WebService的返回寫調(diào)用webservice服務(wù)的類WebServiceUtil返回城市列表publicstaticListgetProvinceList()/需要調(diào)用的方法名(獲得本天氣預(yù)報(bào)WebServices支持的洲、國內(nèi)外省份和城市信息)/StringmethodName=getRegionProvince;StringmethodName=getSupportProvince;/創(chuàng)建HttpTransportSE傳輸對(duì)象HttpTransportSEhttpTranstation=newHttpTransportSE(SERVICE_URL);htt

31、pTranstation.debug=true;/使用SOAP1.1協(xié)議創(chuàng)建Envelop對(duì)象SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);/實(shí)例化SoapObject對(duì)象SoapObjectsoapObject=newSoapObject(SERVICE_NS,methodName);envelope.bodyOut=soapObject;設(shè)置與.Net提供的WebService保持較好的兼容性envelope.dotNet=true;tryII調(diào)用WebServiceht

32、tpTranstation.call(SERVICE_NS+methodName,envelope);if(envelope.getResponse()!=null)II獲取服務(wù)器響應(yīng)返回的SOAP消息SoapObjectresult=(SoapObject)envelope.bodyIn;SoapObjectdetail=(SoapObject)result.getProperty(methodName+Result);解析服務(wù)器響應(yīng)的SOAP消息。returnparseProvinceOrCity(detail);catch(Exceptione)e.printStackTrace();r

33、eturnnull;解析出省份和城市,把返回的數(shù)據(jù)用split方法切割,只取需要的省份數(shù)據(jù)privatestaticListparseProvinceOrCity(SoapObjectdetail)ArrayListresult=newArrayList();for(inti=0;idetail.getPropertyCount();i+)Stringstr=detail.getProperty(i).toString();/解析出每個(gè)省份result.add(str.split()0);returnresult;publicstaticSoapObjectgetWeatherByCity(S

34、tringcityName)/根據(jù)城市或地區(qū)名稱查詢獲得未來三天內(nèi)天氣情況、現(xiàn)在的天氣實(shí)況、天氣和生活指數(shù)/StringmethodName=getWeather;StringmethodName=getWeatherbyCityName;HttpTransportSEhttpTranstation=newHttpTransportSE(SERVICE_URL);httpTranstation.debug=true;SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);SoapObj

35、ectsoapObject=newSoapObject(SERVICE_NS,methodName);/soapObject.addProperty(theCityCode,cityName);soapObject.addProperty(theCityName,cityName);envelope.bodyOut=soapObject;envelope.dotNet=true;try/調(diào)用WebServicehttpTranstation.call(SERVICE_NS+methodName,envelope);if(envelope.getResponse()!=null)/獲取服務(wù)器響應(yīng)

36、返回的SOAP消息SoapObjectresult=(SoapObject)envelope.bodyIn;SoapObjectdetail=(SoapObject)result.getProperty(methodName+Result);/解析服務(wù)器響應(yīng)的SOAP消息。returndetail;catch(Exceptione)e.printStackTrace();returnnull;如圖45所示為調(diào)用此方法后返回的為XML文檔iXj?#4J82亠.iS23Ljpj2Ql4-5I3J3.17:SC;30C/strings.;/2Q日晴轉(zhuǎn)爭云西鳳H級(jí)轉(zhuǎn)南風(fēng)3-0.叮:.wrw.iFSw唱

37、曰tringA今兀氣實(shí)況:氣溫:2oC;鞏向/佩力:兩南鳳:衆(zhòng);濕度:7X;主氣質(zhì)星:暫兀:紫撲鶴強(qiáng)度:強(qiáng)4=.strin卩穿歳摘數(shù):熱,迂喰穿T血、蝮舷L棗等夏拿服裝。疋敏指數(shù):轡乃。運(yùn)動(dòng)梏數(shù),較運(yùn)官.孔力較曠.排祥您進(jìn)行寧冋運(yùn)動(dòng).洗車楷也適肓.天氣郵奸.適合撐嵐汽車:瞬陌拓,數(shù):阪適宜,代弋環(huán)錯(cuò),抓為丸機(jī)讓衣物硒人肥吧。旅游磁暫無a路況抬數(shù):干燥.無吒較好.路而較干燥.路況較好舒適度抬數(shù):較舒適,白無晴,早晚涼爽*舒適,出心偏熱??諝馇扇九D數(shù):暫無。紫夕、鎖奮數(shù):強(qiáng).涂擦S嚇大干15、PA+防曬護(hù)膚品a:yCf2C/stringsrstrings5J210c/strings“tiring東

38、南鳳H飯轉(zhuǎn)祿鳳5-+-1I.w/trinqn亠strinq:,1r:tC/strings./22El亠4.5網(wǎng)站返回XML文檔接下來我們只需要對(duì)該文件解析就可以拿出我們需要的數(shù)據(jù)了。然后把對(duì)應(yīng)的據(jù)添加在相應(yīng)的地方即可。城市列表的選擇:當(dāng)我們單擊城市選擇按鈕的時(shí)候會(huì)跳出圖4.6的城市選擇界面直轄市北京取涓城市Q請(qǐng)選擇所屬城市4.6城市選擇界面對(duì)應(yīng)的方法為確走publicvoidshow_dialog(intcityld)city_text=(TextView)findViewById(R.id.city_text);switch(cityId)caseCITY:/取得city_layout.xm

39、l中的視圖finalViewview=LayoutInflater.from(this).inflate(R.layout.city_layout,null);省份Spinnerprovince_spinner=(Spinner)view.findViewById(R.vince_spinner);城市Spinnercity_spinner=(Spinner)view.findViewById(R.id.city_spinner);provinces=WebServiceUtil.getProvinceList();ArrayAdapteradapter=newArrayAdapt

40、er(this,android.R.layout.simple_spinner_item,provinces);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);province_spinner.setAdapter(adapter);/省份Spinner監(jiān)聽器province_spinner.setOnItemSelectedListener(newOnItemSelectedListener()OverridepublicvoidonItemSelected(AdapterViewv

41、iew,Viewparent,intposition,longid)citys=WebServiceUtil.getCityListByProvince(provinces.get(position);ArrayAdapteradapter1=newArrayAdapter(WeatherWebServiceActivity.this,android.R.layout.simple_spinner_item,citys);adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);city_sp

42、inner.setAdapter(adapter1);OverridepublicvoidonNothingSelected(AdapterViewarg0);城市Spinner監(jiān)聽器city_spinner.setOnItemSelectedListener(newOnItemSelectedListener()OverridepublicvoidonItemSelected(AdapterViewarg0,Viewarg1,intposition,longarg3)city_str=citys.get(position);OverridepublicvoidonNothingSelecte

43、d(AdapterViewarg0);/選擇城市對(duì)話框25AlertDialog.Builderdialog=newAlertDialog.Builder(this);diaogsetTitle(請(qǐng)選擇所屬城市”);dialog.setView(view);dialogsetPositiveButton(確定,newDialogInterfaceOnClickListener()OverridepublicvoidonClick(DialogInterfacedialog,intwhich)city_textsetText(city_str);writeSharedPreference(cit

44、y_str);refresh(city_str);checkWeather(city_str););dialog.setNegativeButton(取消,newDialogInterfaceOnClickListener()OverridepublicvoidonClick(DialogInterfacedialog,intwhich)dialog.dismiss(););dialog.show();break;default:break;編寫gps定位轉(zhuǎn)換類用于定位當(dāng)前位信ConverUtil。由于GoogleSDK內(nèi)部的一個(gè)小bug,我們不能直接利用手機(jī)內(nèi)部來定位地址必須要把當(dāng)前的經(jīng)緯度

45、信息發(fā)送給谷歌網(wǎng)站來解析。publicstaticStringgetAddress(doublelongitude,doublelatitude)/HttpClientclient=newDefaultHttpClient();Gt方法得到內(nèi)容HttpGethttpGet=newHttpGet(+geocode/json?latlng=+latitude+,+longitude+&sensor=false®ion=cn);StringBuildersb=newStringBuilder();tryHttpResponseresponse=client.execute(httpGet);H

46、ttpEntityentity=response.getEntity();/獲取服務(wù)器響應(yīng)的字符串InputStreamis=entity.getContent();intb;while(b=is.read()!=-1)sb.append(char)b);把服務(wù)器相應(yīng)的字符串轉(zhuǎn)化為JSon對(duì)JSONObjectjsonObj=newJSONObject(sb.toString();/解析出相應(yīng)結(jié)果中的地址信息Strings1=jsonObj.getJSONArray(results).getJSONObject(0).getString(formatted_address);Strings2=s1.split(,)3;Log.i(start,s2);returnjsonObj.getJSONArray(results).getJSONObject(0).getString(formatted_address);catch(Exceptione)e.printStackTrace();returnnull;本軟件同樣實(shí)現(xiàn)了傳感器接口,可以實(shí)時(shí)監(jiān)測(cè)當(dāng)前外部溫度,增加用戶的友好體publicvoidonSensorChanged(Se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論