版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于Android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)</p><p> 摘要:隨著智能手機(jī)一步步走進(jìn)人們的生活,它將成為人們獲取信息的主要設(shè)備,相關(guān)應(yīng)用越來越廣泛,并在人們的日常生活中扮演著越來越重要的角色。因此,關(guān)鍵應(yīng)用程序的開發(fā)成為影響移動(dòng)智能終端普及的重要因素,設(shè)計(jì)并開發(fā)實(shí)用、方便的應(yīng)用程序具有重要的意義和良好的市場(chǎng)前景。Android作為當(dāng)前最流行的操作平臺(tái),自然也存在著大量的應(yīng)用服務(wù)需求。
2、</p><p> Android是基于Linux平臺(tái)完全開源的手機(jī)操作系統(tǒng),同時(shí)開發(fā)語(yǔ)言為Java,因此我選擇了以Android為平臺(tái)的手機(jī)天氣預(yù)報(bào)系統(tǒng)來作為我的畢業(yè)設(shè)計(jì),目的是幫助用戶隨時(shí)隨地查詢天氣信息及天氣變化情況,讓生活更加舒適方便。本文詳細(xì)講述了Android平臺(tái)下天氣軟件的界面設(shè)計(jì)及界面的實(shí)現(xiàn)、控件的使用、界面的布局等內(nèi)容,結(jié)合中國(guó)氣象網(wǎng)的天氣數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xiàn)給用戶,使用戶可
3、以更加賞心悅目地體驗(yàn)本軟件的服務(wù)。</p><p> 關(guān)鍵詞:Android 天氣軟件 手機(jī)天氣預(yù)報(bào)軟件系統(tǒng)</p><p> System implementation of weather query based on Android</p><p><b> Abstract</b></p><p> Wi
4、th the development of intelligent mobile phone step by step into people's lives, it will become the main device to obtain information, related to more widely, and plays a more and more important role in people's
5、daily life. Therefore, the development of critical applications has become an important factor affecting the popularization of mobile intelligent terminal, application design and development of practical, convenient has
6、important significance and good market prospects. Android as the m</p><p> Android is a mobile phone operating system Linux platform based on open source, at the same time, the development of language Java,
7、 so I chose the platform of mobile phone weather system with Android as my graduation design, the purpose is to help the user whenever and wherever possible query weather information and weather condition, make life more
8、 comfortable and convenient. This paper describes the layout of content, interface design and interface control weather software under the Android pl</p><p> Keyword: Android weather software the software
9、 system of mobile phone weather</p><p><b> 目錄</b></p><p> 第一章 緒論……………………………………………………………………………………...….1</p><p> 1.1 研究?jī)?nèi)容………………………………………………………………………................. .…
10、1</p><p> 1.2 課題背景和意義………………………………………………………………………….......1</p><p> 1.3 發(fā)展現(xiàn)狀及趨勢(shì)…………………………………………………………………………........1</p><p> 第二章 系統(tǒng)分析……………………………………………………………………………….…....2</p>
11、<p> 2.1需求分析……………………………………………………………………………………… 2</p><p> 2.2 Android系統(tǒng)的特點(diǎn)…………………………………………………………………………...2</p><p> 2.3系統(tǒng)規(guī)劃……………………………………………………………………………………….3</p><p> 2.4系統(tǒng)構(gòu)
12、架圖…………………………………………………………………………………….4</p><p> 第三章 Android開發(fā)環(huán)境及相關(guān)技術(shù)………………………………………………………..….....4</p><p> 3.1 Android開發(fā)環(huán)境介紹…………………………………………………………...…………….4</p><p> 3.2 Android開發(fā)平臺(tái)搭
13、建…………………………………………………………………………5</p><p> 3.3相關(guān)技術(shù)介紹…………………………………………………………………………………..5</p><p> 第四章 程序設(shè)計(jì)…………………………………………………………………………….............10</p><p> 4.1 界面設(shè)計(jì)………………………………………………
14、………………………………………10</p><p> 4.2 項(xiàng)目框架………………………………………………………………………………………13</p><p> 4.3 主要功能實(shí)現(xiàn)………………………………………………………………………….……...14</p><p> 4.31 獲取城市碼db_weather.db 數(shù)據(jù)庫(kù)文件…………………………………………
15、……...14</p><p> 4.32 實(shí)現(xiàn)可伸縮性列表的構(gòu)建與過濾………………………………………….....................18</p><p> 4.33 GPS定位功能的實(shí)現(xiàn)…………………………………………..........................................21</p><p> 4.34 Widget
16、窗體小部件的更新…………………………………………..................................25</p><p> 第五章 功能測(cè)試………………………………………………………………………….................27</p><p> 第六章 結(jié)論…………………………………………………………………………………………31</p><p
17、> 致謝…………………………………………………………………………………………………..31</p><p> 參考文獻(xiàn)………………………………………………………………………………………..........32</p><p><b> 第一章 緒論</b></p><p><b> 1.1研究?jī)?nèi)容 </b>&
18、lt;/p><p> Android平臺(tái)手機(jī)氣象軟件是基于Android手機(jī)平臺(tái),運(yùn)用Java語(yǔ)言,從Google上獲取天氣預(yù)報(bào)信息,開發(fā)出針對(duì)使用Android平臺(tái)的手機(jī)天氣預(yù)報(bào)系統(tǒng)。</p><p> 本文詳細(xì)介紹了加載界面、實(shí)時(shí)天氣界面、未來天氣界面和搜索界面進(jìn)行界面設(shè)計(jì)及實(shí)現(xiàn),目的是使用戶能夠更加賞心悅目地體驗(yàn)此軟件帶來的服務(wù)。通過對(duì)界面的布局及控件的應(yīng)用等相關(guān)內(nèi)容的學(xué)習(xí),使我們對(duì)
19、Android平臺(tái)下界面開發(fā)工作有一個(gè)初步的了解,并且經(jīng)過這次開發(fā)過程,能夠基本掌握這些內(nèi)容。軟件開發(fā)后能夠幫助用戶隨時(shí)隨地搜索由中國(guó)氣象局提供的全國(guó)2564個(gè)縣級(jí)以上城市的天氣信息,并且把數(shù)據(jù)顯示在一個(gè)界面美觀、布局合理窗口內(nèi),使用戶能夠舒適的享受軟件帶來的服務(wù)。</p><p> 1.2課題背景和意義 </p><p> 近幾年來隨著智能手機(jī)的不斷普及,應(yīng)用的需求與日俱增,應(yīng)用的開
20、發(fā)成為當(dāng)下最熱門的技術(shù)之一。Android是一個(gè)真正意義上的開源智能手機(jī)操作系統(tǒng),該系統(tǒng)一經(jīng)推出立即受到全球移動(dòng)設(shè)備廠商和開發(fā)者的熱捧。為順應(yīng)潮流,本設(shè)計(jì)旨在搭載Android的移動(dòng)設(shè)備上運(yùn)行,實(shí)現(xiàn)天氣狀況的實(shí)時(shí)更新與顯示,方便人們的出行與生活。</p><p> Android平臺(tái)手機(jī)氣象軟件的開發(fā)可以進(jìn)一步擴(kuò)大氣象信息的覆蓋面,讓廣大公眾能夠在第一時(shí)間方便且快捷地獲取最新的氣象預(yù)報(bào)(預(yù)警)信息,以便提前預(yù)防
21、,把氣象災(zāi)害造成的損失降到最低。同時(shí)也可以強(qiáng)化氣象公共服務(wù)的職能,完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮了氣象事業(yè)對(duì)經(jīng)濟(jì)社會(huì)發(fā)展的現(xiàn)實(shí)性作用。</p><p> 1.3發(fā)展現(xiàn)狀及趨勢(shì)</p><p> Android系統(tǒng)自推出以來,就以明顯的優(yōu)勢(shì)逐漸擴(kuò)大自大的市場(chǎng)份額。據(jù)美國(guó)某市場(chǎng)調(diào)研機(jī)構(gòu)2012年發(fā)布的一份最新報(bào)告顯示。2012年一季度在美
22、國(guó),基于Android系統(tǒng)的智能手機(jī)的銷售量已占據(jù)全美手機(jī)銷售量的28%份額,而大名頂頂?shù)腎Phone手機(jī)其市場(chǎng)份額緊追其后,占到21%的市場(chǎng)份額,已經(jīng)確定了Android系統(tǒng)的市場(chǎng)占有比。據(jù)業(yè)內(nèi)人士分析,隨著Android系統(tǒng)相應(yīng)軟件的不斷開發(fā)應(yīng)用,選擇Android系統(tǒng)手機(jī)或者無線終端設(shè)備的人會(huì)越來越多,其市場(chǎng)霸主的地位在更新更好的系統(tǒng)出現(xiàn)之前是不可動(dòng)搖地。 Google官方數(shù)據(jù)顯示,Android電子市場(chǎng)(Android Ma
23、rket)上的應(yīng)用程序數(shù)量已經(jīng)突破45萬個(gè),一年內(nèi)增加30萬個(gè)。相信在不久的將來會(huì)有更多的用戶選擇Android系統(tǒng)的手機(jī)。Android是以Linux為核心的手機(jī)操作平臺(tái),作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語(yǔ)言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。</p>
24、<p><b> 第二章 系統(tǒng)分析</b></p><p><b> 2.1 需求分析</b></p><p> 本軟件是一個(gè)App Widget應(yīng)用程序,啟動(dòng)程序后可以進(jìn)行城市、更新頻率的設(shè)置,可以通過圖片和文字顯示當(dāng)前和未來的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等。這些天氣數(shù)據(jù)是通過后臺(tái)服務(wù)獲取的,這個(gè)后臺(tái)服務(wù)可以按照一定
25、時(shí)間間隔,從Google上獲取天氣預(yù)報(bào)信息,并將天氣信息保存在數(shù)據(jù)庫(kù)中。</p><p> 從上面的描述中可以基本了解軟件的功能需求:</p><p> (1) 啟動(dòng)App Widget應(yīng)用程序;</p><p> (2) 設(shè)置界面:對(duì)要顯示天氣預(yù)報(bào)的城市及更新頻率進(jìn)行設(shè)置;</p><p> (3) 顯示界面:通過文字和圖片顯示當(dāng)前
26、的天氣情況,包括日期、時(shí)間、城市、最高溫度、最低溫度、當(dāng)前溫度等。</p><p> (4) 詳細(xì)界面:通過文字圖片動(dòng)畫顯示當(dāng)前的天氣情況,包括城市當(dāng)前天氣、溫度、風(fēng)向、風(fēng)速;同時(shí)顯示今后三天的天氣情況。</p><p> 2.2 Android系統(tǒng)的特點(diǎn)</p><p> 1、開放性。Google與開放性手機(jī)聯(lián)盟合作開發(fā)了android,Google通過與動(dòng)
27、行商,通過與運(yùn)營(yíng)商,設(shè)備制造商,開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化,開放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式生態(tài)系統(tǒng)。</p><p> 2、應(yīng)用程序無界限。Android上的應(yīng)用可以通過標(biāo)準(zhǔn)API訪問核心移動(dòng)設(shè)備功能。通過互聯(lián)網(wǎng),應(yīng)用程序可以聲明它們的功能可提供其它應(yīng)用程序使用。</p><p> 3、應(yīng)用程序是在平等的條件下創(chuàng)建的,移動(dòng)設(shè)備
28、上的應(yīng)用程序可以被替換或擴(kuò)展,即使是撥號(hào)或主屏幕這樣的核心組件。</p><p> 4、應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)。應(yīng)用程序可以輕松地嵌入HTML,javascript和樣式表,還可以通過Webview顯示內(nèi)容。</p><p> 5、應(yīng)用程序可以并行運(yùn)行。Android是一種完整的多任務(wù)環(huán)境,應(yīng)用程序可以在其中并行運(yùn)行,在后臺(tái)運(yùn)行時(shí),應(yīng)用程序可以生成通知引起注意。</p>
29、<p><b> 2.3 系統(tǒng)規(guī)劃</b></p><p> 由上述的需求,現(xiàn)將系統(tǒng)分為三大模塊:天氣顯示界面模塊、預(yù)報(bào)城市設(shè)置模塊與Widget桌面小部件模塊。各系統(tǒng)模塊功能如下:</p><p> 1). 天氣顯示界面模塊</p><p> 顯示指定城市三天內(nèi)的天氣狀況,包括日期、城市名稱、溫度、風(fēng)力與當(dāng)日的建議,用戶
30、可通過按菜單鍵來顯示菜單更新當(dāng)前天氣與設(shè)置天氣顯示的界面背景,以及跳轉(zhuǎn)至設(shè)置預(yù)報(bào)城市界面來更換預(yù)報(bào)城市。</p><p> 2). 預(yù)報(bào)城市設(shè)置模塊</p><p> 由自動(dòng)設(shè)置預(yù)報(bào)城市與手動(dòng)設(shè)置二部分組成,自動(dòng)設(shè)置實(shí)現(xiàn)GPS定位功能,自動(dòng)確定當(dāng)前用戶所在地;而手動(dòng)設(shè)置則通過可伸展性下拉列表單擊選擇系統(tǒng)數(shù)據(jù)庫(kù)中預(yù)存的城市來進(jìn)行設(shè)置,同時(shí)為了方便用戶查找,支持以輸入框的形式來過濾查詢預(yù)報(bào)
31、城市。當(dāng)單擊選中城市時(shí)跳轉(zhuǎn)至天氣顯示界面,來顯示該城市當(dāng)三天內(nèi)的天氣狀況;第一次運(yùn)行時(shí)自動(dòng)跳到該界面。</p><p> 3).Widget桌面小部件模塊</p><p> 為了方便用戶實(shí)時(shí)了解天氣狀況,特別添加在Android系統(tǒng)桌面上顯示當(dāng)前天氣與時(shí)間的天氣小部件,使用戶拿起手機(jī)的第一時(shí)刻就能了解天氣,同時(shí)當(dāng)用戶單擊小部件時(shí),自動(dòng)跳轉(zhuǎn)至天氣顯示界面,顯示三天內(nèi)的詳細(xì)天氣。</
32、p><p><b> 2.4 系統(tǒng)構(gòu)架圖</b></p><p><b> 圖2-4系統(tǒng)構(gòu)架圖</b></p><p> 第三章Android開發(fā)環(huán)境及相關(guān)技術(shù)</p><p> 3.1 Android開發(fā)環(huán)境介紹</p><p> Android平臺(tái)使用Java編程語(yǔ)
33、言來開發(fā)應(yīng)用程序,而Android提供了對(duì)Java的核心支持。考慮到Java虛擬機(jī)的執(zhí)行效率和占用資源情況,Google重新設(shè)計(jì)了Java的編譯器,命名為Dalvik。Dalvik是經(jīng)過優(yōu)化的Java編譯器,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik應(yīng)用作為一個(gè)獨(dú)立的Linux進(jìn)程執(zhí)行,獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。</p><p> 項(xiàng)目的開發(fā)在Eclipse環(huán)
34、境中進(jìn)行,由于進(jìn)行的是Android應(yīng)用程序的開發(fā),需要在Eclipse安裝ADT插件,即Android開發(fā)工具,這樣Eclipse就可以和Android SDK建立連接,在Eclipse中啟動(dòng)Android模擬器、調(diào)試程序等工作。</p><p> 簡(jiǎn)言之,需要以下軟件,才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā)。</p><p><b> Jav
35、a SDK</b></p><p><b> Eclipse</b></p><p> Android SDK</p><p><b> ADT</b></p><p> 3.2 Android開發(fā)平臺(tái)搭建</p><p> Android開發(fā)平臺(tái)搭建步
36、驟:</p><p> ①首先到http://www.eclipse.org/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載Java EE 集成版本,可以為平臺(tái)的搭建省下不少工作。接著再去http://java.sun.com/javase/downloads/index.jsp 站點(diǎn)下載后安裝下載http://dl.google.com/android/android-sdk-win
37、dows-1.5_r1.zip,Android SDK1.5后解壓。第一步下載工序就結(jié)束了。</p><p> ②雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動(dòng),選擇Eclipse菜單中的Help-> Install New Software-> 選項(xiàng)卡上的Available Software,點(diǎn)擊右側(cè)的“Add”輸入http://dl-ssl.google.com/android/
38、eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會(huì)就會(huì)出現(xiàn)一個(gè)Developer Tools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android 開發(fā)工具插件,然后找到Android DDMS和Android Development Tools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。</p>
39、<p> ③重啟后選擇Eclipse菜單中的Windows-> Preferences 在左側(cè)的Android項(xiàng)目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。</p><p> ?、茉赪indowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的Android SDK目錄下的tools文件夾。</p><p><
40、;b> 3.3相關(guān)技術(shù)介紹</b></p><p> 3.3.1 Activity</p><p> 在Android應(yīng)用程序中,一個(gè)活動(dòng)Activity通常就是一個(gè)單獨(dú)的界面。每一個(gè)界面都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并且從Activity基類中繼承而來,Activity將會(huì)顯示由空間組成的用戶接口,并對(duì)事件做出響應(yīng)。大多數(shù)的應(yīng)用都是由多個(gè)Activity顯示組成,例如,
41、第一個(gè)界面用來顯示加載界面,第二界面用來顯示實(shí)時(shí)天氣界面,第三個(gè)界面用來顯示未來一周的天氣界面。</p><p> 這里的每一個(gè)界面就是一個(gè)Activity,很容易是從一個(gè)界面到一個(gè)新的界面,并且完成新的Activity。當(dāng)一個(gè)新的界面打開后,前一個(gè)界面將會(huì)暫停,并保留在歷史棧中。用戶可以返回到歷史棧中的前一個(gè)界面,當(dāng)界面不再使用時(shí),從歷史棧中刪除。</p><p> 簡(jiǎn)單理解,Act
42、ivity代表一個(gè)用戶所能看到的界面,主要用于處理應(yīng)用程序的整體性工作,例如,監(jiān)聽系統(tǒng)事件(按鍵事件、觸摸屏事件等),為用戶顯示指定的View,啟動(dòng)其他Activity等。所有應(yīng)用的Activity都繼承于android.app.Activity類,該類是Android提供的基層類,其他的Activity繼承該父類后,通過父類的方法實(shí)現(xiàn)各種功能,這種設(shè)計(jì)在其他領(lǐng)域也較為常見。</p><p> 3.3.2 In
43、tent</p><p> Android基本的設(shè)計(jì)理念是鼓勵(lì)減少組件間的耦合,因此Android提供了Intent(意圖),Intent提供了一種通用的消息系統(tǒng),它允許在你的應(yīng)用程序與其他的應(yīng)用程序間傳遞Intent來執(zhí)行動(dòng)作和產(chǎn)生時(shí)間。使用Intent可以激活A(yù)ndroid應(yīng)用的三個(gè)核心組件:活動(dòng)、服務(wù)和廣播接收器。</p><p> Intent可以劃分為顯示意圖和隱式意圖。顯示
44、意圖調(diào)用Intent。SetClass方法明確制定了組件名的Intent為顯示意圖,顯示意圖明確制定了Intent應(yīng)該傳遞給那個(gè)組件,在同一個(gè)應(yīng)用內(nèi)部使用的。隱式意圖沒有明確指定組件名的Intent為隱式意圖。Android系統(tǒng)會(huì)根據(jù)隱式意圖中設(shè)置的動(dòng)作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來處理這個(gè)意圖。</p><p> Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、
45、動(dòng)作涉及數(shù)據(jù)和附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個(gè)媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的結(jié)構(gòu)。</p><p> 3.3.3 Service</p><p> 如果把Activity比喻為前臺(tái)程序,那么Service就是后臺(tái)
46、程序,Service的整個(gè)生命周期都只會(huì)在后臺(tái)執(zhí)行。Service跟 Activity一樣也由Intent調(diào)用。由于Service在后臺(tái)運(yùn)行,所以沒有界面,用來處理耗時(shí)比較長(zhǎng),而且Service不是一個(gè)單獨(dú)的進(jìn)程,也不是一個(gè)單獨(dú)的線程。Service有兩種類型:</p><p> 本地服務(wù)(Local Service):用于應(yīng)用程序內(nèi)部;</p><p> 遠(yuǎn)程服務(wù)(Remote Se
47、rcie):用于android系統(tǒng)內(nèi)部的應(yīng)用程序之間;</p><p> 前者用于實(shí)現(xiàn)應(yīng)用程序自己的一些耗時(shí)任務(wù),比如查詢升級(jí)信息,并不占用應(yīng)用程序比如Activity所屬線程,而是單開線程后臺(tái)執(zhí)行,這樣用戶體驗(yàn)比較好。后者可被其他應(yīng)用程序復(fù)用,例如天氣預(yù)報(bào)服務(wù),其他應(yīng)用程序不需要再寫這樣的服務(wù),調(diào)用已有的即可。</p><p> Service的生命周期,Service有startS
48、ervice和bindService兩種啟動(dòng)Service方法,每種方法Service的生命周期是不一樣的。</p><p> 通過startService() —— Service會(huì)經(jīng)歷 onCreate --> onStartCommand(),stopService的時(shí)候直接onDestroy,如果是調(diào)用者直接退出而沒有調(diào)用stopService的話,Service會(huì)一直在后臺(tái)運(yùn)行,下次調(diào)用者再起來
49、仍然可以stopService;</p><p> 通過bindService() —— Service只會(huì)運(yùn)行onCreate()-->onBind() 這個(gè)時(shí)候調(diào)用者和Service綁定在一起 unbindService的時(shí)候onUnbind() --> onDestroyed(),調(diào)用者退出了,Srevice就會(huì)調(diào)用onUnbind() --> onDestroyed()。在這里需要注意
50、的是Service的onCreate的方法只會(huì)被調(diào)用一次,就是你無論多少次的startService又 bindService,Service只被創(chuàng)建一次。如果先是bind了,那么start的時(shí)候就直接運(yùn)行Service的onStart方法,如果先是start,那么bind的時(shí)候就直接運(yùn)行onBind方法。如果你先bind上了,就stop不掉了,只能先UnbindService, 再StopService,所以是先start還是先bin
51、d行為是有區(qū)別的。</p><p> 3.3.4 Layout布局</p><p> 布局方式有很多種,比如線性布局(Linear Layout)、相對(duì)布局(Relative Layout)、表格布局(Table Layout)、網(wǎng)格視圖(Grid View)、標(biāo)簽布局(Tab Layout)、列表視圖(List View)和絕對(duì)布局(Absolute Layout)。本文設(shè)計(jì)主要采用
52、線性布局(Linear Layout),所以就線性布局我們來做簡(jiǎn)單地介紹。</p><p> 線性布局 LinearLayout:線性布局是所用布局中最常用的方式之一,RadioGroup, TabWidget,TableLayout,TableRow,ZoomControls類的父類。LinearLayout可以讓它的子元素垂直或水平的方式排成一行(不設(shè)置方向的時(shí)候默認(rèn)按照垂直方向排列)。LinearLayo
53、ut以你為它設(shè)置的垂直或水平的屬性值,來排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一個(gè)垂直列表的每一行只會(huì)有一個(gè)元素,而不管他們有多寬,而一個(gè)水平列表將會(huì)只有一個(gè)行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對(duì)齊(相對(duì)一個(gè)元素的右對(duì)齊、中間對(duì)齊或者左對(duì)齊)。</p><p> LinearLayout還支持為單獨(dú)的子元素指定weight 。好處就
54、是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個(gè)大屏幕中,一串小對(duì)象擠成一堆的情況,而是允許他們放大填充空白。子元素指定一個(gè)weight 值,剩余的空間就會(huì)按這些子元素指定的weight比例分配給這些子元素。默認(rèn)的weight值為0。例如,如果有三個(gè)文本框,其中兩個(gè)指定了weight值為1,那么,這兩個(gè)文本框?qū)⒌缺壤胤糯螅⑻顫M剩余的空間,而第三個(gè)文本框不會(huì)放大。</p><p> 3.3.5 控件介紹
55、</p><p> TextView —— 文本控件,可以用它來顯示文字,就像一個(gè)標(biāo)簽一樣,或者你可以認(rèn)為是html中的span。對(duì)于TextView是怎么設(shè)置顯示的文本,怎樣設(shè)置字體的大小,字體的顏色,字體的樣式。TextView包含以下子類:Button, CheckedTextView,Chronometer,DigitalClock,EditText。以下簡(jiǎn)單介紹TextView的屬性:</p&g
56、t;<p> android:id —— 控件的標(biāo)識(shí)符</p><p> android:layout_width —— 設(shè)置控件的寬度</p><p> android:layout_height —— 設(shè)置控件的高度</p><p> android:layout_marginTop —— 設(shè)置文本的上外邊距</p><
57、p> android:textSize —— 設(shè)置文本文字的的大小</p><p> android:paddingLeft —— 設(shè)置元素左內(nèi)邊距</p><p> Button —— 按鈕控件,在button內(nèi)部可以放置內(nèi)容,比如文本或圖像。<button>與</button>標(biāo)簽之間的所有內(nèi)容都是按鈕的內(nèi)容,其中包括任何可接受的正文內(nèi)容,比如文本或
58、或多媒體。比如,我們可以在按鈕中包括了一個(gè)圖像和相關(guān)的文本,用它們?cè)诎粹o中創(chuàng)建一個(gè)吸引人的標(biāo)記圖像。不過button禁止使用的元素是圖像映射,因?yàn)樗鼘?duì)鼠標(biāo)和鍵盤敏感的動(dòng)作會(huì)干擾表單按鈕的行為。以下簡(jiǎn)單介紹Button的屬性:</p><p> android:id —— 控件的標(biāo)識(shí)符</p><p> android:layout_width —— 設(shè)置按鈕的寬度</p>
59、<p> android:layout_height —— 設(shè)置按鈕的高度</p><p> android:textSize —— 設(shè)置按鈕里文字的大小</p><p> android:layout_marginTop —— 設(shè)置按鈕的上外邊距</p><p> android:text —— 設(shè)置按鈕中的文字</p><
60、p> android:visibility —— 設(shè)置按鈕里的元素是否可見</p><p> EditText —— 文本編輯框,TextView的直接子類,所以EditText會(huì)繼成父類TextView的一些方法。在布局中配置EditText也需同時(shí)配置一個(gè)Button,這樣可以在代碼中監(jiān)聽Button的事件,以便獲取當(dāng)前在EditView中輸入的內(nèi)容并且顯示出來。在EditView可以限制輸入的字符
61、串類型。以下簡(jiǎn)單介紹EditText的屬性:</p><p> android:id —— 控件的標(biāo)識(shí)符</p><p> android:layout_width —— 設(shè)置輸入框的寬度</p><p> android:layout_height —— 設(shè)置輸入框的高度</p><p> android:layout_weight
62、 —— 設(shè)置輸入框占父控件的比例</p><p> android:inputType —— 設(shè)置輸入框內(nèi)的字符串類型</p><p> android:hint —— 設(shè)置在輸入框輸入內(nèi)容前默認(rèn)的文字</p><p> ImageView —— 標(biāo)簽可以顯示任意圖像,例如圖標(biāo)。ImageView類可以加載各種來源的圖片(如資源或圖片庫(kù)),需要計(jì)算圖像的尺寸,
63、以便它可以在其他布局中使用,并提供例如縮放和著色等各種顯示選項(xiàng),在本文用來顯示天氣圖片。以下簡(jiǎn)為ImageView的屬性:</p><p> android:id —— 設(shè)置圖片的標(biāo)識(shí)符</p><p> android:layout_width —— 設(shè)置圖片的寬度</p><p> android:layout_height —— 設(shè)置圖片的高度</
64、p><p> android:visibility —— 設(shè)置圖片是否可見性</p><p> ProgressBar —— 進(jìn)度條控件,通常在應(yīng)用程序執(zhí)行諸如復(fù)制文件或打印文檔等任務(wù)時(shí)使用。如果沒有視覺提示,應(yīng)用程序的用戶可能會(huì)認(rèn)為應(yīng)用程序不響應(yīng)。通過在應(yīng)用程序中使用 ProgressBar,可以警告用戶應(yīng)用程序正在執(zhí)行冗長(zhǎng)的任務(wù)且應(yīng)用程序仍在響應(yīng)。以下簡(jiǎn)單介紹ProgressBar的屬
65、性:</p><p> android:max —— 設(shè)置進(jìn)度條的最大進(jìn)度值</p><p> android:progress —— 設(shè)置進(jìn)度條初始化的進(jìn)度值</p><p> android:secondaryProgress—— 設(shè)置二級(jí)進(jìn)度條的值</p><p> android:layout_gravity —— 設(shè)置進(jìn)度條
66、位置</p><p> android:style —— 設(shè)置進(jìn)度條的風(fēng)格是長(zhǎng)方形還是圓形</p><p> CheckBox —— 復(fù)選框,通常用于某選項(xiàng)的打開或關(guān)閉,可以選擇任意數(shù)目的復(fù)選框;</p><p> 7.RadioButton —— 單選框,為用戶提供由兩個(gè)或多個(gè)互斥選項(xiàng)組成的選項(xiàng)集。雖然單選按鈕和復(fù)選框看似功能類似,卻存在重要差異:當(dāng)用戶選擇
67、某單選按鈕時(shí),同一組中的其他單選按鈕不能同時(shí)選定。相反,卻可以選擇任意數(shù)目的復(fù)選框。定義單選按鈕組將告訴用戶,這里有一組選項(xiàng),您可以從中選擇一個(gè)且只能選擇一個(gè)。</p><p><b> 第四章 程序設(shè)計(jì)</b></p><p><b> 4.1界面設(shè)計(jì)</b></p><p> 4.1.1 當(dāng)?shù)谝淮芜\(yùn)行程序時(shí),跳轉(zhuǎn)
68、至城市設(shè)置界面進(jìn)行預(yù)報(bào)城市的選擇:</p><p> 圖4-11 設(shè)置城市界面</p><p> 4.1.2 用戶可以通過單擊選擇“定位當(dāng)前城市”的方式調(diào)用系統(tǒng)GPS功能自動(dòng)定位預(yù)報(bào)城市:</p><p> 圖4-12 自動(dòng)定位界面</p><p> 4.1.3 用戶可通過輸入框過濾查詢當(dāng)前系統(tǒng)中預(yù)存的城市:</p>&
69、lt;p> 圖4-13 輸入城市界面</p><p> 4.11天氣顯示界面:</p><p> 4.11.1選擇了預(yù)報(bào)城市后,系統(tǒng)跳轉(zhuǎn)至天氣顯示界面,顯示該城市三天內(nèi)的實(shí)時(shí)天氣:</p><p> 圖4-111 主界面</p><p> 4.11.2 在天氣界面中用戶可通過按菜單鍵來調(diào)出菜單,選擇城市,更新天氣與更換背景&l
70、t;/p><p> 圖4-112 更換壁紙界面</p><p><b> 4.2 項(xiàng)目框架</b></p><p> WeatherSystem工程目錄結(jié)構(gòu)及其源代碼文件如圖4-2所示</p><p><b> 圖4-2</b></p><p> 4.3 主要功能實(shí)現(xiàn)&
71、lt;/p><p> 4.3.1 獲取城市碼db_weather.db 數(shù)據(jù)庫(kù)文件</p><p> 獲取全國(guó)各地的城市碼,是通過訪問中央氣象局網(wǎng)從省份直轄市到城鎮(zhèn)一級(jí)一級(jí)深入得到的,獲得一個(gè)地區(qū)的城市碼總共需要訪問4次網(wǎng)絡(luò),分別如下:</p><p> 訪問http://m.weather.com.cn/data5/city.xml得到省份直轄市列表與它的編號(hào):
72、</p><p> 2. 訪問http://m.weather.com.cn/data5/city<省份編號(hào)>.xml得到該省份直轄市的城市編號(hào)(如訪問山東:http://m.weather.com.cn/data5/city12.xml)</p><p> 3. 訪問http://m.weather.com.cn/data5/city<城市編號(hào)>.xml得到該
73、城市的縣區(qū)編號(hào)(如訪問濟(jì)南:http://m.weather.com.cn/data5/city1201.xml)</p><p> 4. 訪問http://m.weather.com.cn/data5/city<縣區(qū)編號(hào)>.xml得到該縣區(qū)的城市碼(如訪問長(zhǎng)清:http://m.weather.com.cn/data5/city120102.xml)</p><p> 首
74、先實(shí)現(xiàn)上述功能需使用Android的網(wǎng)絡(luò)訪問技術(shù),故編寫工具類WebAccessTools類如下:</p><p> 由上面訪問的可知,得到的編碼與名稱都是“編碼|名稱”的形式,因此在這也編寫一個(gè)解析得到城市碼的工具類WeatherInfoParser,用于解析從服務(wù)器中得到的城市碼:</p><p> 編寫這兩個(gè)類后現(xiàn)在就是編寫從服務(wù)器端用程序遍歷得到全國(guó)各地的城市名與城市碼,并將它
75、們分別的保存在String[][] provinces數(shù)組,String[][] childs數(shù)組與String[][] cityCode中:</p><p> 接下來就是將得到的上面的三個(gè)數(shù)組建立數(shù)據(jù)庫(kù)文件db_weather.db保存起來,用到android.database.sqlite.SQLiteDatabase類的靜態(tài)方法:</p><p> SQLiteDatabase
76、openOrCreateDatabase(String path, CursorFactory factory)來創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)文件,其中的path表示數(shù)據(jù)庫(kù)存放的路徑,而factory中游標(biāo)工廠,這里可將它設(shè)為空,從而得到SQLiteDatabase對(duì)象,則再調(diào)用它的execSQL(String sql)方法來執(zhí)行保存數(shù)據(jù)庫(kù)的操作,從而將上面的三個(gè)數(shù)組轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的數(shù)據(jù),最后使用ADT插件中的DDMS工具將得到的數(shù)據(jù)庫(kù)文件從Andr
77、oid模擬器中導(dǎo)出,最終就得到了db_weather.db文件。以后上述的代碼就可以不使用,直接將db_weather.db文件放入資源文件夾res目錄中的raw目錄中,則在程序第一次運(yùn)行時(shí)導(dǎo)入到/data/data/com.weather.app/databases目錄中就行了,其中關(guān)于數(shù)據(jù)庫(kù)的導(dǎo)入實(shí)際是Java中文件的復(fù)制。</p><p> 4.3.2 實(shí)現(xiàn)可伸縮性列表的構(gòu)建與過濾</p>
78、<p> 實(shí)現(xiàn)可伸縮性列表是通過繼承android.widget.BaseExpandableListAdapter適配器實(shí)現(xiàn)的,其中主要實(shí)現(xiàn)它的public View getGroupView()得列表的一級(jí)列表和public void getChildView()得到列表的二級(jí)子列表實(shí)現(xiàn)的,在這里由于只是實(shí)現(xiàn)文本顯示功能,故用TextView組件來填充就行了,如果要構(gòu)造這個(gè)自定義的適配器,則只需在提供存放省份直轄市的一級(jí)
79、列表的數(shù)組String[] groups和存放對(duì)應(yīng)的城鎮(zhèn)的二級(jí)列表的String[][] childs就行了。</p><p> 同時(shí)為了兼具過濾功能,還要需再實(shí)現(xiàn)android.widget.Filterable接口,這個(gè)接口有一個(gè)getFilter()返回Filter過濾器的列表,故還要提供一個(gè)Filter過濾類,在本系統(tǒng)中,實(shí)現(xiàn)的是一個(gè)內(nèi)部類CityFilter,它繼承android.widget.Fil
80、ter類,覆蓋實(shí)現(xiàn)了兩個(gè)方法,一個(gè)是performFiltering()得到FilterResults過濾結(jié)果對(duì)象方法,另一個(gè)是根據(jù)得到的FilterResults對(duì)象更新適配器的publishResults()方法。</p><p> 其中的performFiltering(CharSequence constraint)方法的實(shí)現(xiàn)是通過constraint這個(gè)關(guān)鍵字以省份直轄市為單位進(jìn)行匹配,如果匹配成功,
81、則添加該省份以下的所有城市,如果匹配不成功,則再逐一與這個(gè)省份的下的城市配匹,則只添加匹配的城市,其中匹配的結(jié)果放在Map<Integer,ArrayList<Integer>>values這樣的向量中,再由新建的FilterResults封裝返回,(具體實(shí)現(xiàn)如下):</p><p> 1. 首先是對(duì)關(guān)鍵字進(jìn)行判斷是否為空,如為空則由values添加所有省份與城市,其中的allGroup
82、s和allChilds保存的是所有的省份與對(duì)應(yīng)的城市: </p><p> 2. 如果關(guān)鍵字constraint不為空,則以省份為單位進(jìn)行匹配,省份匹配的添加下面的所在城鎮(zhèn),如果不匹配,則進(jìn)行步深入匹配城鎮(zhèn),添加符合條件的城鎮(zhèn):</p><p> 3. 得到過濾的結(jié)果后將其用FilterResource封裝后返回:</p><p> 另外的publi
83、shResults(CharSequence constraint,FilterResults results)方法就是根據(jù)上面得到的results對(duì)象來得到新的String[] groups與String[][] Childs數(shù)組,再調(diào)用BaseExpandableListAdapter父類的notifyDataSetChanged()方法來更新列表,從而實(shí)現(xiàn)過濾后結(jié)果的顯示(具體實(shí)現(xiàn)如下):</p><p>
84、 1. 首先將參數(shù)FiltersResuls對(duì)象轉(zhuǎn)換為Map<Integer, ArrayList<Integer>>filterResult,然后來判斷過濾后的結(jié)果長(zhǎng)度時(shí)否為0,如果長(zhǎng)度為0則說明過濾后的結(jié)果為空,則調(diào)用父類的notifyDataSetInvalidated()方法來阻止列表的更新:</p><p> 2. 如果長(zhǎng)度不為0,則說明存在過濾結(jié)果,則將它轉(zhuǎn)換為groups
85、數(shù)組與childs數(shù)組,并調(diào)用notifyDataSetChanged()方法實(shí)再更新:</p><p> 如上所述則就實(shí)現(xiàn)了帶有過濾性可伸展性列表適配性的實(shí)現(xiàn),則在使用時(shí)在XML組件配置文件中使用ExpandableListView列表,并調(diào)用它的setAdapter()方法來,加載自定義的適配器。而在使用它的過濾功能時(shí)則調(diào)用自定義適配器的getFilter()得到過濾Filter對(duì)象,再調(diào)用Filter對(duì)象
86、的filter(String)方法實(shí)現(xiàn)的,在本系統(tǒng)中才用的時(shí)觸發(fā)文本輸入框EditText的TextChangedListener事件時(shí)調(diào)用從而實(shí)現(xiàn)手動(dòng)選擇預(yù)報(bào)城市的過濾查詢。</p><p> 4.3.3 GPS定位功能的實(shí)現(xiàn)</p><p> Android中調(diào)用GPS功能,首先要獲取GPS定位管理器LocationManager,獲取LocationManager后就是獲取Loc
87、ationProvider,可以通過Criteria對(duì)象設(shè)置過濾條件來獲得最符合用戶需求的LocationProvider,得到LocationProvider后就可通過調(diào)用LocationMananger對(duì)象的getLastKnownLocation()方法來獲取Location地址封裝對(duì)象,最后由實(shí)例化的Geocoder將Location中的經(jīng)度和緯度反編譯為地址信息集合List對(duì)象,從而由List對(duì)象來得到當(dāng)前用戶地址名。在開發(fā)過
88、程中通過Eclipse中的ADT插件的DDMS可以為Android模擬器指定任意地址,如下:</p><p> 當(dāng)在模擬器控制面板中指定經(jīng)緯度后,則會(huì)在模擬器中出現(xiàn)GPS的標(biāo)志:</p><p> 但在實(shí)際開發(fā)調(diào)用GPS功能過程時(shí),只能獲取經(jīng)度與緯度,而在使用Geocoder反編譯地址時(shí)報(bào)錯(cuò):</p><p> 使用的調(diào)用代碼如下:</p>&l
89、t;p> 后來通過網(wǎng)上搜索得知在Android2.2模擬器中調(diào)用Geocoder需要backend服務(wù):</p><p> ”The Geocoder class requires a backend service that is not included in the core android framework. The Geocoder query methods will return an
90、empty list if there no backend service in the platform.“</p><p> 但并有說此服務(wù)要怎么得到,這看起來像是Android2.2模擬器的一個(gè)Bug,故而在本設(shè)計(jì)中采用訪問[http://maps.google.cn/maps/geo?output=xml&q=經(jīng)度,緯度]的形式來得到詳備的地址信息(來源于:http://www.iteye.c
91、om/problems/69517),如下訪問http://maps.google.cn/maps/geo?output=xml&q=30.659269,104.065762:</p><p> 其中的output參數(shù)指定的是服務(wù)器響應(yīng)的格式,除了XML格式還可以為JSON,CSV等格式。</p><p> 由此可知,為了實(shí)現(xiàn)GPS的定位功能還需要實(shí)現(xiàn)一個(gè)解析XML的工具類,在
92、本系統(tǒng)中由工具類LocationXMParser完成,它繼承至org.xml.sax.helpers.DefaultHandler類,用于專門用于解析XML文件。</p><p> 上述的GPS功能具體實(shí)現(xiàn)過程如下:</p><p> 得到LocationManager系統(tǒng)定位服務(wù)管理者:</p><p> 2. 設(shè)置Geocoder對(duì)象,過濾得到符合條件的L
93、ocationProvider,再LocationProvider得到封裝經(jīng)緯度信息的Location對(duì)象:</p><p> 3. 得到經(jīng)緯度后再訪問http://maps.google.cn/maps/geo來得到含地址信息的XML文本內(nèi)容,并用自定義的LocationXMParser工具類解析封裝得到此經(jīng)緯度對(duì)應(yīng)的城市名:</p><p> 上面代碼中的getDetailAdre
94、ss()方法返回的是一個(gè)Map對(duì)象,其中封裝了從XML中解析得到的國(guó)家、省份、縣區(qū)和城市四個(gè)信息,在得到這些信息后,系統(tǒng)將與數(shù)據(jù)庫(kù)中預(yù)存的省份城市相比較,最終匹配得到該地區(qū)的城市碼完成GPS自動(dòng)定位功能的實(shí)現(xiàn)。</p><p> 4.3.4 Widget窗體小部件的更新</p><p> 由于widget中的時(shí)鐘關(guān)系,需要對(duì)widget顯示進(jìn)行時(shí)刻的更新用來保持與系統(tǒng)中時(shí)間的一致。實(shí)現(xiàn)
95、這個(gè)功能需要用到AlarmManager類,這個(gè)類專門用來設(shè)定在某個(gè)指定的時(shí)間去完成指定的事件。設(shè)計(jì)思路是在Widget的onUpdate方法中啟動(dòng)一個(gè)自定義更新后臺(tái)服務(wù),更新widget,并設(shè)定下一分鐘再次調(diào)用此服務(wù)。具體實(shí)現(xiàn)過步驟如下:</p><p> 1. 首先自定義一個(gè)后臺(tái)運(yùn)行服務(wù)類繼承至Service類,實(shí)現(xiàn)它的服務(wù)開始運(yùn)行調(diào)用的onStart()方法:</p><p>
96、2. 然后在實(shí)現(xiàn)AppWidgetProvider的widget類的onUpdate方法中啟動(dòng)這個(gè)自定義的服務(wù):</p><p> 3. 除了啟動(dòng)這個(gè)服務(wù)是不夠的,當(dāng)用戶刪除widget部件時(shí),后臺(tái)服務(wù)也必須停止,這樣就必須實(shí)現(xiàn)Service類中的另一個(gè)方法onDestroy()方法,該方法在Service停止時(shí)調(diào)用,在這里用于取消AlarmManager設(shè)置的警報(bào)服務(wù):</p><p>
97、; 4. 則在widget類的onDisabled()方法中調(diào)用stopService方法來停止后臺(tái)服務(wù),其中的onDisabled方法在widget被用戶刪除時(shí)由系統(tǒng)自動(dòng)調(diào)用:</p><p> 在自定了一個(gè)Service服務(wù)后,系統(tǒng)必須在清單文件AndroidManifest.xml中聲明自定義的服務(wù):</p><p> 這樣就實(shí)現(xiàn)了widget的更新功能,其實(shí)在配制widget
98、的AppWidgetProviderInfo的配制文件中通過設(shè)置android:updatePeriodMillis屬性來設(shè)置widget的自動(dòng)更新,它的單位中毫秒,但由于自動(dòng)更新對(duì)性能的損壞,故它有一個(gè)最低值,這最低值長(zhǎng)于一分鐘,故而與該系統(tǒng)的要求不符,故以調(diào)用后臺(tái)Service的方式來解決。</p><p><b> 第五章 功能測(cè)試</b></p><p>
99、 在完成界面代碼的編寫工作之后,結(jié)合其他模塊,進(jìn)行測(cè)試。右鍵單擊項(xiàng)目目錄Run As ? Android Application,然后選擇啟動(dòng)設(shè)備,測(cè)試效果如下:</p><p><b> 圖5:?jiǎn)?dòng)虛擬機(jī)</b></p><p> 5.1 當(dāng)系統(tǒng)初次啟動(dòng)時(shí),由于沒有設(shè)置預(yù)報(bào)城市,則自動(dòng)由MianActivity天氣顯示視圖跳轉(zhuǎn)到SetCityActivity城市
100、設(shè)置視圖,并要求用戶選擇預(yù)報(bào)城市,如下:</p><p><b> 圖5-1</b></p><p> 5.2 接下來點(diǎn)擊確定選擇城市,則系統(tǒng)確定用戶單擊城市的城市碼跳轉(zhuǎn)至天氣顯示界面,如下:</p><p> 圖5-21 圖5-22 </p&g
101、t;<p> 5.3 跳轉(zhuǎn)到天氣顯示界面后,可單擊“菜單”按鈕來顯示天氣的菜單:</p><p> 圖5-31 圖5-32</p><p> 5.4 選擇“壁紙”菜單項(xiàng)可以更換程序背景圖片如下:</p><p> 圖5-41
102、 圖5-42</p><p> 5.5 選擇“設(shè)置城市”菜單項(xiàng),則跳轉(zhuǎn)至設(shè)置城市的視圖界面,在這里可以在輸入城市的關(guān)鍵字在進(jìn)行過濾查詢,這樣就及大的方便了用戶的選擇:</p><p> 圖5-51 圖5-52</p><p> 5.6 如果要定位當(dāng)前的城市,以單擊“定位當(dāng)前城市”自
103、動(dòng)設(shè)置城市,而在此之前必須,在DDMS控制面板中在指定一個(gè)經(jīng)緯度,來開啟GPS功能:</p><p><b> 圖5-61</b></p><p><b> 圖5-62</b></p><p> 所有界面顯示正常,且數(shù)據(jù)正確,測(cè)試成功!</p><p><b> 第六章 總結(jié)<
104、;/b></p><p> 經(jīng)過數(shù)個(gè)月的努力,在指導(dǎo)老師趙洋與同學(xué)的指導(dǎo)幫助下基于Android平臺(tái)的天氣軟件開發(fā)終于完成了。由于Android智能手機(jī)日益普及,手機(jī)天氣軟件可以讓用戶隨時(shí)隨地了解天氣,為用戶的日常生活多一些幫助,讓生活多一些舒適。所以基于Android智能手機(jī)的平臺(tái)進(jìn)行天氣軟件的開發(fā),從一開始什么都不懂一直摸索著運(yùn)用了很多高級(jí)技術(shù)完成了這個(gè)軟件。</p><p>
105、 在這個(gè)過程中,我學(xué)會(huì)了很多知識(shí),比如Android環(huán)境的搭建、Intent、Activity、Service、ContentProvider、SQLite等,但我學(xué)會(huì)的最重要的一點(diǎn)是,利用現(xiàn)有的資源去解決問題,在圖書館、在網(wǎng)絡(luò)上尋找答案。Android環(huán)境搭建的基本工作完成后,本文對(duì)界面的控件、布局和美觀方面進(jìn)行設(shè)計(jì),結(jié)合小組其他成員的建數(shù)據(jù)庫(kù)、獲取數(shù)據(jù)信息和整體設(shè)計(jì)方面等成果,通過模擬器顯示出加載界面、實(shí)時(shí)天氣界面、未來天氣界面和
106、選擇城市天氣界面。</p><p> 目前,這個(gè)軟件目前運(yùn)行良好,但是網(wǎng)絡(luò)的不穩(wěn)定性對(duì)軟件的運(yùn)行有一定的影響。與此同時(shí),這個(gè)軟件還可以進(jìn)一步發(fā)展,例如,第一次登陸時(shí)亂碼問題還沒有成功解決,如果把這個(gè)問題解決將會(huì)對(duì)用戶有更多的幫助,使他們的生活更加愉悅和方便。</p><p><b> 致謝</b></p><p> 通過這一階段的學(xué)習(xí)和研
107、究,該項(xiàng)目終于完成,雖然耗費(fèi)了許多精力和時(shí)間,但從另一方面它驗(yàn)證了我的知識(shí)能力,讓我有了不斷提高自身素質(zhì)的意識(shí)。在這里我再次衷心的感謝我的指導(dǎo)老師趙洋對(duì)我的指導(dǎo)和啟發(fā),沒有他的幫助,我不可能圓滿完成論文的工作。</p><p> 同時(shí),我還要謝謝我們小組成員的同學(xué)們?cè)谠O(shè)計(jì)過程中的幫助,幫我解決課題中的一些問題,使得界面設(shè)計(jì)做的令大家滿意,系統(tǒng)才能更順利的完成。</p><p> 最后,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)--畢業(yè)設(shè)計(jì)
- 基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)
- 基于android系統(tǒng)的天氣預(yù)報(bào)查詢系統(tǒng)
- 基于Android手機(jī)的天氣預(yù)報(bào)查詢系統(tǒng).pdf
- 軟件工程畢業(yè)論文-基于android的天氣預(yù)報(bào)查詢系統(tǒng)的實(shí)現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于Android的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于android手機(jī)天氣預(yù)報(bào)系統(tǒng)
- 基于android的天氣預(yù)報(bào)軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 淺析基于android的天氣預(yù)報(bào)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(論文原稿)
- 基于android的天氣預(yù)報(bào)短信系統(tǒng)的畢業(yè)設(shè)計(jì)說明書
- 基于android手機(jī)移動(dòng)天氣預(yù)報(bào)系統(tǒng)
- 基于Windows Mobile手機(jī)天氣預(yù)報(bào)查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于android天氣預(yù)報(bào)課程設(shè)計(jì)
- android平臺(tái)天氣預(yù)報(bào)widget的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- android平臺(tái)天氣預(yù)報(bào)widget的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 手機(jī)天氣預(yù)報(bào)系統(tǒng)畢業(yè)設(shè)計(jì).pdf
- 手機(jī)天氣預(yù)報(bào)系統(tǒng)畢業(yè)設(shè)計(jì).pdf
- 基于ios的天氣預(yù)報(bào)查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)說明書畢業(yè)論文
- 基于android平臺(tái)的天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與開發(fā)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論