




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、歡迎下載石家莊鐵道大學(xué)Android系統(tǒng)課程設(shè)計(jì)報(bào)告2016年夏季學(xué)期題目:基于Android的天氣預(yù)扌報(bào)開(kāi)發(fā)學(xué)院:電氣與電子工程學(xué)院專業(yè):電子信息工程學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:完成日期:2016年7月15日評(píng)分表項(xiàng)目號(hào)一二三總分滿分255025100得分評(píng)閱人說(shuō)明:項(xiàng)目一,考察程序運(yùn)行情況。項(xiàng)目二,考察完成情況包括功能完整性,工作量,界面,用戶體驗(yàn)等項(xiàng)目三,考察課程設(shè)計(jì)報(bào)告的格式和完整性。摘要隨著移動(dòng)通信技術(shù)的發(fā)展和無(wú)線數(shù)據(jù)業(yè)務(wù)的進(jìn)步,手機(jī)已被賦予了除通話以外的其它許多功能。全新的手機(jī)軟件領(lǐng)域已逐漸聚焦了眾多軟件開(kāi)發(fā)商的目光,軟件開(kāi)發(fā)者和軟件用戶將共同面臨這個(gè)振奮人心的新境界。本設(shè)計(jì)使用An
2、droid設(shè)計(jì)技術(shù)開(kāi)發(fā)了一種運(yùn)用在Android系統(tǒng)上的手機(jī)天氣預(yù)報(bào)軟件系統(tǒng),本系統(tǒng)通過(guò)選擇城市來(lái)獲得天氣,風(fēng)向,風(fēng)向,溫度等信息?;谑謾C(jī)的天氣預(yù)報(bào)系統(tǒng)軟件可以使用戶對(duì)于各地的天氣情況的實(shí)時(shí)掌握,極大的方便了用戶的出行和行程安排,避免了不必要的麻煩,具有很強(qiáng)的實(shí)用性。關(guān)鍵詞:Android;手機(jī)天氣預(yù)報(bào)軟件。目錄第1章緒論錯(cuò)誤!未定義書(shū)簽。TOC o 1-5 h z1.1課題研究?jī)?nèi)容11.2課題研究的目的和意義11.3課題研究前景2第2章系統(tǒng)需求分析32.1系統(tǒng)功能需求3系統(tǒng)流程圖32.3系統(tǒng)界面需求42.4系統(tǒng)性能需求4第3章詳細(xì)設(shè)計(jì)和功能實(shí)現(xiàn)5界面的設(shè)計(jì)5歡迎界面設(shè)計(jì)5菜單界面設(shè)計(jì)63.
3、2各模塊詳細(xì)設(shè)計(jì)6歡迎模塊設(shè)計(jì)63.2.1主工程設(shè)計(jì)7第4章軟件測(cè)試154.1電腦模擬器測(cè)試15手機(jī)端測(cè)試17第5章總結(jié)與展望185.1總結(jié)18不足與展望18 HYPERLINK l bookmark16 o Current Document 參考文獻(xiàn)19 HYPERLINK l bookmark18 o Current Document 附錄20重要程序118重要程序218一、緒論Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。Android操作系統(tǒng)最初由AndyRubin開(kāi)發(fā),主要支持手機(jī)
4、。2005年8月由Google收購(gòu)注資。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。2012年11月數(shù)據(jù)顯示,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)76%的份額,中國(guó)市場(chǎng)占有率為90%。2013年09月24日谷歌開(kāi)發(fā)的操作系統(tǒng)An
5、droid在迎來(lái)了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。1.1課題研究?jī)?nèi)容本課題研究的是基于Android平臺(tái)下的天氣軟件,目的是使用戶能隨時(shí)隨地的查詢天氣信息及天氣變化情況,讓生活更加舒適方便。本文講述Android平臺(tái)下天氣軟件的界面設(shè)計(jì)以及數(shù)據(jù)的獲取和解析,主要包括界面的實(shí)現(xiàn),控件的使用,界面的布局和數(shù)據(jù)處理等內(nèi)容,結(jié)合中國(guó)氣象網(wǎng)的天氣數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xiàn)給用戶,使用戶更加賞心悅目的體驗(yàn)本軟件的服務(wù)。通過(guò)對(duì)界面的布局及控件的應(yīng)用等相關(guān)內(nèi)容的學(xué)習(xí),使我們對(duì)Android平臺(tái)下界面開(kāi)發(fā)工作有一個(gè)初步的了解,并且經(jīng)過(guò)這次開(kāi)發(fā)過(guò)程,能夠基本掌握這些內(nèi)容。1.2
6、研究目的和意義天氣軟件是一種非常實(shí)用的信息服務(wù),隨著智能手機(jī)的不斷普及,各種智能手機(jī)平臺(tái)下都有各種各樣的天氣軟件。Android作為現(xiàn)在主流的智能手機(jī)之一,自然也需要這方面的軟件。天氣關(guān)系到人們的日常生活,如告知溫暖,方便出行等。一款簡(jiǎn)單實(shí)用的天氣軟件會(huì)很吸引用戶?;贏ndroid平臺(tái)的天氣軟件已經(jīng)有很多,經(jīng)過(guò)分析,用戶第一眼往往是一個(gè)軟件的外觀,一個(gè)好看的界面才能讓用戶以一種愛(ài)美之心去嘗試,才能進(jìn)一步了解一個(gè)軟件的好壞,所以吸引眼球的界面是爭(zhēng)取用戶的第一步。因此,界面設(shè)計(jì)工作對(duì)應(yīng)用程序來(lái)說(shuō)非常重要,在界面上吸引了用戶,才能進(jìn)一步讓用戶體驗(yàn)應(yīng)用程序中的功能,使用這個(gè)軟件。研究前景Androi
7、d最吸引人的特點(diǎn)是開(kāi)源特性,因其開(kāi)源,允許所有人對(duì)其代碼進(jìn)行開(kāi)發(fā)和修改,同時(shí)又由于其代碼的簡(jiǎn)單易學(xué)性,Android在全世界擁有眾多的粉絲。Android在中國(guó)的前景十分廣闊,首先是有成熟的消費(fèi)者,在國(guó)內(nèi),Android社區(qū)十分紅火,這些社區(qū)為Android在中國(guó)的普及做了很好的推廣作用。國(guó)內(nèi)廠商和運(yùn)營(yíng)商也紛紛加入了Android陣營(yíng),包括中國(guó)移動(dòng),中國(guó)聯(lián)通,中興通訊,華為通訊,聯(lián)想等大企業(yè),同時(shí)不僅僅局限于手機(jī),國(guó)內(nèi)廠家也陸續(xù)推出了采用Android系統(tǒng)的產(chǎn)品,我們可以預(yù)見(jiàn)Android將會(huì)被廣泛應(yīng)用在國(guó)產(chǎn)智能上網(wǎng)設(shè)備上,將進(jìn)一步擴(kuò)大Android系統(tǒng)的應(yīng)用范圍。Android采用了軟件層(
8、Softwarestack)的構(gòu)架,主要分為三個(gè)部分。底層以Linux為內(nèi)核作為基礎(chǔ),由C語(yǔ)言開(kāi)發(fā),只提供基礎(chǔ)功能,中間層次包話函數(shù)庫(kù)和虛擬機(jī),由C+開(kāi)發(fā)。最上層是各種應(yīng)用軟件,包話通話程序,短信程序。應(yīng)用軟件可以由各公司或個(gè)人自行開(kāi)發(fā),以JAVA編寫(xiě)。二、系統(tǒng)需求分析2.1系統(tǒng)功能需求可以羅列出全國(guó)所有的省市縣??梢圆榭慈珖?guó)任意城市的天氣信息可以自由的切換程式去查看其他城市的天氣提供手動(dòng)更新以及后臺(tái)自動(dòng)更新天氣的功能2.2系統(tǒng)流程圖圖2.1系統(tǒng)流程圖2.3系統(tǒng)界面需求根據(jù)應(yīng)用程序的功能需要,對(duì)用戶界面做如下分析:實(shí)時(shí)天氣界面:顯示城市當(dāng)前的實(shí)時(shí)天氣狀況,包括城市名稱、城市名片、天氣情況、溫度
9、高低、星期等信息。界面左邊有一列城市列表,顯示中國(guó)各個(gè)城市名稱,當(dāng)用戶想知道哪個(gè)城市的天氣情況時(shí),點(diǎn)擊這個(gè)城市名就可以獲取天氣狀況,考慮到使軟件占用盡量小的內(nèi)存,軟件去掉了不必要的花哨,顯示城市名稱,城市名片,溫度和天氣情況,同時(shí)對(duì)未來(lái)6天的天氣情況簡(jiǎn)要描述,簡(jiǎn)要顯示星期、天氣描述、溫度高低等數(shù)據(jù),使用戶一目了然,使人們及時(shí)了解天氣變化,對(duì)日常生活出行、穿衣做好準(zhǔn)備。2.4系統(tǒng)性能需求應(yīng)用程序能根據(jù)中國(guó)天氣網(wǎng)接口返回的數(shù)據(jù)準(zhǔn)確的顯示地區(qū)天氣信息。應(yīng)用程序響應(yīng)時(shí)間應(yīng)在人的感覺(jué)和視覺(jué)范圍內(nèi),系統(tǒng)響應(yīng)時(shí)間足夠迅速。應(yīng)用程序在android4.0及以上版本運(yùn)行時(shí),應(yīng)具有適應(yīng)能力,能穩(wěn)定運(yùn)行。應(yīng)用程序操
10、作界面簡(jiǎn)單明了,易于操作。三、詳細(xì)設(shè)計(jì)和功能實(shí)現(xiàn)3.1界面的設(shè)計(jì)3.1.1歡迎界面的設(shè)計(jì)歡迎界面,采用簡(jiǎn)潔明了的布局,添加了一個(gè)button點(diǎn)擊事件,點(diǎn)擊即可跳轉(zhuǎn)到主界面即省份選擇菜單。如圖3.1所示圖3.1歡迎界面3.1.2菜單界面設(shè)計(jì)菜單界面菜單界面采用列向布局和子菜單。這樣直觀明了,簡(jiǎn)潔清晰。(當(dāng)為省份時(shí)標(biāo)題欄顯示中國(guó)),省份,城市。如圖3.2所示3.2ab注:a為省份菜單,b為市級(jí)菜單3.2各模塊詳細(xì)設(shè)計(jì)3.2.1歡迎模塊設(shè)計(jì)1.新建一個(gè)WelcomeActivity類(lèi),并讓它繼承Activity類(lèi)。任何活動(dòng)都應(yīng)該重寫(xiě)onCreate()方法。publicclassWelcomeAct
11、ivityextendsActivityprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);2.新建一個(gè)布局文件,命名為welcome_layout,根元素選擇為L(zhǎng)inearLayout。創(chuàng)建成功后,再LinearLayout下添加背景添加語(yǔ)句:android:background=drawable/b添加一個(gè)按鈕,用于點(diǎn)擊事件的觸發(fā):在WelcomeActivity里,關(guān)聯(lián)布局文件和實(shí)例化button.然后添加onClick,構(gòu)造出一個(gè)intent,傳入WelcomeActivit
12、y上下文,傳入ChooseAreaActivity.class為目標(biāo)活動(dòng)。即在WelcomeActivity這個(gè)活動(dòng)的基礎(chǔ)上打開(kāi)ChooseAreaActivity這個(gè)活動(dòng)。然后通過(guò)startActivity()方法來(lái)執(zhí)行這個(gè)intent。setContentView(R.layout.welcome_layout);Buttonbutton1=(Button)findViewById(R.id.button1);button1.setOnClickListener(newOnClickListener()publicvoidonClick(Viewv)Intentintent=newInte
13、nt(WelcomeActivity.this,ChooseAreaActivity.class);startActivity(intent);3.2.2主工程設(shè)計(jì)第一階段新建工程命名為coolweather。為了讓項(xiàng)目有更好的結(jié)構(gòu)。需要在com.coolweather.app包下再新建一個(gè)包,如圖3.3所示?!扒點(diǎn)oin.coohfteather.app-曲activity-田db出model,出r巳匚eiver,扭service-util圖3.3新建包構(gòu)架其中activity包用于存放所有活動(dòng)代碼,db包用于存放所有數(shù)據(jù)庫(kù)相關(guān)的代碼,model包用于存放所有模型相關(guān)的代碼,receiver
14、包用于存放所有廣播相關(guān)的代碼,service包用于存放所有服務(wù)相關(guān)的代碼,util包用于存放所有工具相關(guān)的代碼。創(chuàng)建數(shù)據(jù)庫(kù)和表,這樣從服務(wù)器獲取的數(shù)據(jù)才能夠存儲(chǔ)到本地。表的設(shè)計(jì)這里建立三張表,Province,City,County,分別用于存放省,市,縣的各種數(shù)據(jù)信息,三張表的建表語(yǔ)句如下(以county表為例)County:createtableCounty(idintegerprimarykeyautoincrement,county_nametext,county_codetext,city_idinteger)其中id是自增長(zhǎng)主鍵,county_name表示縣名,county_cod
15、e表示縣級(jí)代號(hào),city_id是county表關(guān)聯(lián)city表的外鍵。接下來(lái)將建表語(yǔ)句寫(xiě)入到代碼中。在db包下新建CoolWeatherOpenHelper類(lèi),用于province,city,county的建表。核心代碼如下所示。publicvoidonCreate(SQLiteDatabasedb)/創(chuàng)建表db.execSQL(CREATE_PROVINCE);db.execSQL(CREATE_CITY);db.execSQL(CREATE_COUNTY);為每張表創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)體類(lèi)。在model下分別新建Province類(lèi),city類(lèi),county類(lèi)。實(shí)體類(lèi)非常簡(jiǎn)單,基本就是對(duì)應(yīng)字段的g
16、et和set方法。類(lèi)的創(chuàng)建如圖3.4所示。田model-國(guó)City.java-0匚ounty.javaEProvince.java圖3.4實(shí)體類(lèi)4.創(chuàng)建一個(gè)CoolWeatherDB類(lèi),這個(gè)類(lèi)將會(huì)把一些常用的數(shù)據(jù)庫(kù)操作封裝起來(lái),以方便后面使用。代碼如下所示。定義數(shù)據(jù)庫(kù)名,版本。將構(gòu)造方法私有化,實(shí)例化數(shù)據(jù)庫(kù)。保存加載省級(jí)、市級(jí)、縣級(jí)數(shù)據(jù)信息從提交的程序中可以看到CoolWeatherDB是一個(gè)單例類(lèi),這里將它的構(gòu)造方法私有化,并提供了一個(gè)getlnstance()方法來(lái)獲取CoolWeatherDB的實(shí)例,這樣就可以保證全局范圍內(nèi)只會(huì)有一個(gè)CoolWeatherDB的實(shí)例。在CoolWeath
17、erDB中,提供了六組方法,saveProvince()、loadProvince()、saveCity()、loadCities()、saveCounty()、loadCounties(),分別用于存儲(chǔ)省份數(shù)據(jù)、讀取所有省份數(shù)據(jù),存儲(chǔ)城市數(shù)據(jù)、讀取某省內(nèi)所有城市數(shù)據(jù),存儲(chǔ)縣數(shù)據(jù)、讀取某市內(nèi)所有縣的數(shù)據(jù)。第二階段全國(guó)所有的省市縣的數(shù)據(jù)都是從服務(wù)器端獲取到的,所以為了使程序具有遍歷全國(guó)省市縣的功能,這里和服務(wù)器的交互式必不可少的。所以先在util包下增加一個(gè)HttpUtil類(lèi)。因?yàn)樵贖ttpUtil中使用到了HttpCallbackListener接口來(lái)回調(diào)服務(wù)返回的結(jié)果,因此還需要在util包
18、下添加這個(gè)接口。另外由于服務(wù)器返回的省市縣數(shù)據(jù)都是“代號(hào)I城市,代號(hào)I城市,”這種格式的,所以要再提供一個(gè)工具類(lèi)來(lái)解析和處理這種數(shù)據(jù),。在util包下再新建一個(gè)Utility類(lèi)。在該類(lèi)中,提供了handlepRrovince()、handleCitiesResponse()、handleCountiesResponse()這三個(gè)方法,分別用于解析和處理服務(wù)器返回的省級(jí)、市級(jí)、縣級(jí)數(shù)據(jù)。解析的規(guī)則就是先按逗號(hào)分隔,再按單豎線分隔,接著將解析出來(lái)的數(shù)據(jù)設(shè)置到實(shí)體類(lèi)中,最后調(diào)用CoolWeatherDB中的三個(gè)save()方法將數(shù)據(jù)存儲(chǔ)到相應(yīng)的表中。兩個(gè)類(lèi)和一個(gè)接口的創(chuàng)建如圖3.5所示?!?util
19、、因HttpCallbackListener.java卜1HttpUtil.javaElUtilrty.java圖3.5解析數(shù)據(jù)工具類(lèi)工具類(lèi)準(zhǔn)備好,開(kāi)始布局,在res/layout目錄下新建choose_area.xml布局。布局文件中的內(nèi)容比較簡(jiǎn)單,先是定義一個(gè)50dp高的頭布局,并在里面放置了一個(gè)TextView用于顯示標(biāo)題內(nèi)容。然后在頭布局的下面定義了一個(gè)ListView用于顯示省市縣的數(shù)據(jù)。編寫(xiě)用于遍歷省市縣的活動(dòng),在activity包下新建ChooseAreaActivity繼承自Activity。該類(lèi)中的代碼非常多,這里只把邏輯理理。在onCreate()方法中先是獲取到了一些控件
20、的實(shí)例,然后去初始化了ArrayAdapter將它設(shè)置為L(zhǎng)istView的適配器。之后又去獲取到了CoolWeatherDB的實(shí)例,并給ListView設(shè)置了點(diǎn)擊事件,到這,初始化工作完成。在onCreate()方法的最后調(diào)用了queryProvince()方法,也就是從這里開(kāi)始加載省級(jí)數(shù)據(jù)的。queryProvinces()方法的內(nèi)部會(huì)首先調(diào)用CoolWeatherDB和loadProvinces()方法來(lái)從數(shù)據(jù)庫(kù)讀取省級(jí)數(shù)據(jù)。如果讀取到了就直接將數(shù)據(jù)顯示到界面上,如果沒(méi)有讀取到就調(diào)用queryFromServer()方法從服務(wù)器上查詢數(shù)據(jù)。queryFromServer()方法會(huì)先根據(jù)傳入
21、的參數(shù)來(lái)拼裝查詢地址,現(xiàn)在網(wǎng)上有不少免費(fèi)的天氣預(yù)報(bào)接口可以實(shí)現(xiàn)上述功能,例如新浪天氣,百度天氣的,這里我準(zhǔn)備使用中國(guó)天氣網(wǎng)提供的API,接口來(lái)實(shí)現(xiàn)上述功能。比如要想,努力出中國(guó)所有的省份,只需訪問(wèn)如下地址,這里需要注意,如果用瀏覽器直接訪問(wèn)的話,可能會(huì)得到一個(gè)錯(cuò)誤提示。這是因?yàn)闉g覽器認(rèn)為服務(wù)器應(yīng)該返回一個(gè)xml格式的數(shù)據(jù)。但實(shí)際上服務(wù)器返回的數(shù)據(jù),并不是xml格式所導(dǎo)致的,右鍵查看網(wǎng)頁(yè)源碼代碼就可以看到服務(wù)器返回的真是數(shù)據(jù)了: HYPERLINK /data/list3/city.xml /data/list3/city.xml服務(wù)器會(huì)返回一段文本信息,其中包含了中國(guó)所有的省份名稱以及省級(jí)代號(hào)
22、,如下01|北京,02|上海,03|天津,04|重慶,05|黑龍江,06|吉林,07|遼寧,08|內(nèi)蒙古,09|河北,10|山西,11|陜西,12|山東,13|新疆,14|西藏,15|青海,16|甘肅,17|寧夏,18|河南,19|江蘇,20|湖北,21|浙江,22|安徽,23|福建,24|江西,25|湖南,26|貴州,27|四川,28|廣東,29|云南,30|廣西,31|海南,32|香港,33|澳門(mén),34|臺(tái)灣可以看到北京的代號(hào)是01,上海的代號(hào)是02,不同省份之間以逗號(hào)隔開(kāi),省份名稱和省級(jí)代號(hào)之間用單豎線分隔。要想知道某個(gè)省內(nèi)有哪些城市,比如江蘇的代號(hào)是19,那么只要訪問(wèn)如下地址: HYP
23、ERLINK /data/list3/city19.xml /data/list3/city19.xml這次服務(wù)器返回的數(shù)據(jù)如下:190401|蘇州,190402|常熟,190403|張家港,190404|昆山,190405|吳縣東山,190406|吳縣,190407|吳江,190408|太倉(cāng)通過(guò)這種方式,就能把全國(guó)所有的省,市,縣,都羅列出來(lái)了。那么解決了全國(guó)省市縣數(shù)據(jù)的獲取,然后就是解決查詢天氣信息的問(wèn)題。這里原理同上,比如,昆山的縣級(jí)代號(hào)是190404,那么訪問(wèn)如下地址: HYPERLINK /data/list3/city190404.xml /data/list3/city19040
24、4.xml這時(shí)服務(wù)器返回的數(shù)據(jù)非常簡(jiǎn)短:190404|101190404其中后半部分的101190404就是昆山所對(duì)應(yīng)的天氣代號(hào)了。這個(gè)時(shí)候再去訪問(wèn)查詢天氣接口,將相應(yīng)的天氣代號(hào)填入即可,接口地址如下: HYPERLINK /data/cityinfo/101190404.html /data/cityinfo/101190404.html這樣服務(wù)器就會(huì)把昆山當(dāng)前的天氣信息以JSON格式返回給我們了,如下所示:“weatherinfo”:“city:昆山,”cityid:101190404,tempi:21C,”temp2:9C,”weather”:”多云轉(zhuǎn)小雨”,”img1”:”d1.gif
25、”,”img2”:”n7.gif”,”ptime”:”11:00”其中city表示城市名,cityid表示城市對(duì)應(yīng)的天氣代號(hào),temp1和temp2表示氣溫是幾度到幾度,weather表示今日天氣信息的描述,img1和img2表示今日天氣對(duì)應(yīng)的圖片,ptime表示天氣發(fā)布的時(shí)間。確定了查詢地址之后,接下來(lái)就調(diào)用HttpUtil的sendHttpRequest()方法來(lái)向服務(wù)器發(fā)送請(qǐng)求,響應(yīng)的數(shù)據(jù)會(huì)回調(diào)到onFinish()方法中,然后去調(diào)用Utility的handleProvincesResponse()方法牽扯到了UI操作,因此必須要在主線程中調(diào)用,這里借助了runOnUiThread()方
26、法來(lái)實(shí)現(xiàn)從子線程切換到主線程,它的實(shí)現(xiàn)原理其實(shí)也是基于異步消息處理機(jī)制的?,F(xiàn)在數(shù)據(jù)庫(kù)中已經(jīng)存在了數(shù)據(jù),因此調(diào)用queryProvinces()就會(huì)直接將數(shù)據(jù)顯示到界面上。當(dāng)你點(diǎn)擊了某個(gè)省的時(shí)候進(jìn)入到ListView的onClick()方法中,這個(gè)時(shí)候會(huì)根據(jù)當(dāng)前的級(jí)別來(lái)判斷是去調(diào)用queryCities()方法還是queryCounties()方法,queryCities()方法是去查詢市級(jí)數(shù)據(jù),而queryCounties()方法是去查詢縣級(jí)數(shù)據(jù),這兩個(gè)方法內(nèi)部的流程和queryProvinces()方法基本相同,不重復(fù)說(shuō)明了。這里重寫(xiě)onBackPressed()方法來(lái)覆蓋默認(rèn)Back鍵的行
27、為,會(huì)根據(jù)當(dāng)前的級(jí)別來(lái)判斷是返回市級(jí)列表、省級(jí)列表、還是直接退出。配置androidMainifest.xml文件。為活動(dòng)添加訪問(wèn)網(wǎng)絡(luò)權(quán)限現(xiàn)在已經(jīng)程序已經(jīng)可以運(yùn)行。如圖3.6所示。上天卡吉林中國(guó)北京遼寧內(nèi)蒙古黑龍江圖3.6省份菜單可以看到,全國(guó)所有的省級(jí)單位都出來(lái)了,繼續(xù)查看市級(jí)單位,比如點(diǎn)擊黑龍江如圖3.7所示。齊牡:綏化黑河伊舂咱g黒龍江佳木斯大興安嶺圖3.7市級(jí)菜單然后再點(diǎn)擊黑河,結(jié)果如圖3.8所示。圖3.8縣級(jí)菜單這樣第二階段的開(kāi)發(fā)工作完成。第三階段1.查詢天氣,需要把天氣信息顯示出來(lái)。所以要穿件一個(gè)新的界面用于顯示。創(chuàng)建weather_layout.xml。在這個(gè)布局文件中,并沒(méi)有特
28、殊的控件,基本就是使用TextView顯示數(shù)據(jù)信息,然后嵌套多層LinearLayout和RelativeLayout來(lái)控制TextView的顯示位置。在Utility類(lèi)中添加幾個(gè)方法,用于解析和處理服務(wù)返回的JSON數(shù)據(jù),如下所示其中handleWeatherResponse()方法用于將JSON格式的天氣信息全部解析出來(lái),saveWeatherInfo()方法,用于將這些數(shù)據(jù)都存儲(chǔ)到SharedPreferences文件中。在activity包下,新建WeatherActivity繼承自Activity。該活動(dòng)用于顯示城市名,發(fā)布時(shí)間,氣溫,日期等。最后將ChooseAreaActivit
29、y和WeatherActivity關(guān)聯(lián)。在ChooseAreaActivity中添加代碼:SharedPreferencesprefs=PreferenceManager.getDefaultSharedPreferences(this);if(prefs.getBoolean(city_selected,false)&!isFromWeatherActivity)Intentintent=newIntent(this,WeatherActivity.class);startActivity(intent);finish();elseif(currentLevel=LEVEL_COUNTY)S
30、tringcountyCode=countyList.get(index).getCountyCode();Intentintent=newIntent(ChooseAreaActivity.this,WeatherActivity.class);intent.putExtra(county_code,countyCode);startActivity(intent);finish();最后添加切換城市和更新天氣按鈕。運(yùn)行程序,如圖3.9所示圖3.9北安天氣、軟件測(cè)試4.1電腦模擬器測(cè)試軟件編寫(xiě)完成,對(duì)其進(jìn)行測(cè)試,首先將手機(jī)天氣預(yù)報(bào)系統(tǒng)在電腦模擬環(huán)境下測(cè)試的方案,以下是對(duì)系統(tǒng)進(jìn)行測(cè)試,在Ecl
31、ipse的PackageExplorer窗口中用鼠標(biāo)右鍵選擇weather工程名,在彈出的窗口中選擇RunAs-AndroidApplication安裝該應(yīng)用程序到Android模擬器并啟動(dòng)它,如圖4.1所示。AVDNameTargetNamePlatf.APIL.CPU/ABI1122Android4.4.24,4.219ARM(armebiv7a)/nriminAndroid4.4.24,4.219ARM(armeabi-v7aListofexistingAndroidVirtualDeviceslocatedatC:UsersbheandroidavdMew.Edit.,.巳iEt已“.
32、Repair.Details.Start,.圖4.1啟動(dòng)模擬器等待模擬器啟動(dòng)完成軟件的安裝,然后單擊所要查詢的城市名稱列表項(xiàng),稍等片刻便會(huì)顯示出該城市的天氣實(shí)況信息。電腦模擬測(cè)試結(jié)果如圖4.2所示。g:is齡城18:00$布多云轉(zhuǎn)晴-2C15C圖4.2潞城天氣經(jīng)查詢當(dāng)?shù)氐奶鞖獍l(fā)現(xiàn)基本一致,所以可以知道軟件獲得的數(shù)據(jù)是正確的,說(shuō)明軟件的可行性基本滿足要求。4.2手機(jī)端測(cè)試臨武IK/?TS:OO覽布晴10C26DC圖4.3臨武天氣該測(cè)試說(shuō)明開(kāi)發(fā)的天氣預(yù)報(bào)軟件可以獨(dú)立在Android設(shè)備運(yùn)行,滿足設(shè)計(jì)要求的獨(dú)立性,通過(guò)與網(wǎng)絡(luò)的數(shù)據(jù)比較,可以發(fā)現(xiàn),天氣預(yù)報(bào)軟件獲取的數(shù)據(jù)與實(shí)際的天氣情況非常接近,說(shuō)明數(shù)
33、據(jù)的準(zhǔn)確性,實(shí)時(shí)性;從圖9可以看出,當(dāng)選擇不同的城市時(shí),軟件可以通過(guò)網(wǎng)絡(luò)獲取不同城市的天氣信息,說(shuō)明該天氣預(yù)報(bào)軟件可以獲取不同城市的氣象信息,滿足設(shè)計(jì)要求。五、總結(jié)與展望5.1總結(jié)為期兩周的Android實(shí)訓(xùn)已經(jīng)結(jié)束,在這兩周中我學(xué)習(xí)了很多,也得到了很多。實(shí)訓(xùn)是把理論與實(shí)際結(jié)合,通過(guò)對(duì)理論知識(shí)的理解,領(lǐng)悟從而運(yùn)用到生活實(shí)際鞏固所學(xué)的知識(shí),提高對(duì)實(shí)際生活的認(rèn)識(shí),積累經(jīng)驗(yàn)。在此期間能夠初次體會(huì)到實(shí)際生產(chǎn)中的種種技能與經(jīng)驗(yàn)。完成一項(xiàng)項(xiàng)項(xiàng)目能體現(xiàn)出獨(dú)立思考能力。在本次Android天氣預(yù)報(bào)軟件開(kāi)發(fā)過(guò)程中,我通過(guò)學(xué)校的圖書(shū)館資料和網(wǎng)上查詢,了解了Android的搭建、Intent、Activity、Se
34、rvice等知識(shí)。Android環(huán)境搭建的基本工作完成后,本文對(duì)界面的控件、布局和美觀方面進(jìn)行設(shè)計(jì),對(duì)數(shù)據(jù)獲取和解析做了分析,通過(guò)模擬器顯示城市名片,實(shí)時(shí)天氣情況Android生產(chǎn)實(shí)習(xí)對(duì)目前應(yīng)用現(xiàn)狀進(jìn)行了分析與比較,進(jìn)而研究分析Android平臺(tái)的系統(tǒng)架構(gòu)和組件模型。在此基礎(chǔ)上,基于Android平臺(tái)設(shè)計(jì)和開(kāi)發(fā),實(shí)現(xiàn)對(duì)android編程的理解與應(yīng)用,特別是在對(duì)于控件的應(yīng)用和活動(dòng)的創(chuàng)建有了很深的理解。5.2不足和展望這次實(shí)習(xí)我制作的軟件還是有很多不足之處,這個(gè)軟件還可以進(jìn)一步發(fā)展,比如“短信預(yù)報(bào)”、“新聞模塊”等功能,如果這些功能都能實(shí)現(xiàn)將會(huì)對(duì)用戶有更多的幫助,使他們的生活更加愉悅和方便。我會(huì)繼
35、續(xù)為這個(gè)軟件添加功能,直到它成長(zhǎng)為一個(gè)強(qiáng)大的app。Android智能手機(jī)應(yīng)用程序的開(kāi)發(fā)涉及了它的整個(gè)體系結(jié)構(gòu),是一項(xiàng)非常復(fù)雜的工程。我要以嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待它。不驕縱,不菲薄。參考文獻(xiàn).BillPhiHips.Android編程權(quán)威指南.人民郵電出版社,2015.任玉剛.Android開(kāi)發(fā)藝術(shù)探索.電子工業(yè)出版社,2016何紅輝關(guān)愛(ài)民.Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)人民郵電出版社,2015.郝玉龍.Android程序設(shè)計(jì)基礎(chǔ).北京交通大學(xué)出版社,2013.徐宜生.Android群英傳.電子工業(yè)出版社,2012附錄重要程序1protectedvoidonCreate(BundlesavedI
36、nstanceState)super.onCreate(savedInstanceState);isFromWeatherActivity=getIntent().getBooleanExtra(from_weather_activity,false);SharedPreferencesprefs=PreferenceManager.getDefaultSharedPreferences(this);if(prefs.getBoolean(city_selected,false)&!isFromWeatherActivity)Intentintent=newIntent(this,Weathe
37、rActivity.class);startActivity(intent);finish();return;requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.choose_area);listView=(ListView)findViewById(R.id.list_view);titleText=(TextView)findViewById(R.id.title_text);adapter=newArrayAdapter(this,android.R.layout.simple_list_item_1
38、,dataList);listView.setAdapter(adapter);coolWeatherDB=CoolWeatherDB.getInstance(this);listView.setOnItemClickListener(newOnItemClickListener()OverridepublicvoidonItemClick(AdapterViewarg0,Viewview,intindex,longarg3)if(currentLevel=LEVEL_PROVINCE)selectedProvince=provinceList.get(index);queryCitys();
39、elseif(currentLevel=LEVEL_CITY)selectedCity=cityList.get(index);queryCounty();elseif(currentLevel=LEVEL_COUNTY)StringcountyCode=countyList.get(index).getCountyCode();Intentintent=newIntent(ChooseAreaActivity.this,WeatherActivity.class);intent.putExtra(county_code,countyCode);startActivity(intent);fi
40、nish(););queryProvince();加載省級(jí)數(shù)據(jù)/查詢?nèi)珖?guó)的省,優(yōu)先從數(shù)據(jù)庫(kù)查詢,如果沒(méi)有查詢到再去服務(wù)器上查詢privatevoidqueryProvince()provinceList=coolWeatherDB.loadProvince();if(provinceList.size()0)dataList.clear();for(Provinceprovince:provinceList)dataList.add(province.getProvinceName();adapter.notifyDataSetChanged();listView.setSelection(0
41、);titleText.setText(”中國(guó)”);currentLevel=LEVEL_PROVINCE;elsequeryFromServer(null,province);重要程序2privatevoidinitViews()weatherInfoLayout=(LinearLayout)findViewById(R.id.weather_info_layout);cityNameText=(TextView)findViewById(R.id.city_name);publishText=(TextView)findViewById(R.id.publish_text);weather
42、DespText=(TextView)findViewById(R.id.weather_desp);temp1Text=(TextView)findViewById(R.id.temp1);temp2Text=(TextView)findViewById(R.id.temp2);currentDateText=(TextView)findViewById(R.id.current_date);switchCity=(Button)findViewById(R.id.switch_city);refreshWeather=(Button)findViewById(R.id.refresh_we
43、ather);StringcountyCode=getIntent().getStringExtra(county_code);if(!TextUtils.isEmpty(countyCode)由縣級(jí)代號(hào)去查詢天氣publishText.setText(同步中.);weatherInfoLayout.setVisibility(View.INVISIBLE);cityNameText.setVisibility(View.INVISIBLE);queryWeatherCode(countyCode);else沒(méi)有縣級(jí)代號(hào)就直接顯示本地天氣showWeather();privatevoidinitEvents()switchCity.setOnClickListener(newOnClickListener()Overridep
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項(xiàng)購(gòu)買(mǎi)服務(wù)合同范本
- 公司聘請(qǐng)物業(yè)合同范本
- 2025年安徽道路貨運(yùn)駕駛員從業(yè)資格證考試題庫(kù)
- 前臺(tái)用工合同范本
- 辦公桌椅合同范本
- 中標(biāo)平臺(tái)合同范本
- 中鐵高速公路合同范本
- 加氣砌塊合同范本
- 勞務(wù)醫(yī)院合同范本
- 公司車(chē)輛供貨合同范例
- 2025年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)參考答案
- 酒店長(zhǎng)包房租賃協(xié)議書(shū)范本
- 2025年幾內(nèi)亞水泥廠項(xiàng)目投資可行性報(bào)告
- 【道法】開(kāi)學(xué)第一課 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 口腔門(mén)診分診流程
- 提高設(shè)備基礎(chǔ)預(yù)埋螺栓一次安裝合格率
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit2第1課時(shí)Startup
- 2025年上半年天津市寧河區(qū)事業(yè)單位招聘12人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2024年科技節(jié)小學(xué)科普知識(shí)競(jìng)賽題及答案(共100題)
- 心肺復(fù)蘇課件
- 中華民族共同體概論專家講座第一講中華民族共同體基礎(chǔ)理論
評(píng)論
0/150
提交評(píng)論