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