版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學(xué)士學(xué)位論OFBACHELOR—年)題
目:基于Android平臺的3G氣象軟件
軟件學(xué)院
年至2011年5月
南大學(xué)學(xué)士學(xué)位文原創(chuàng)性申本人鄭重申明呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨立進行研究所取得的研究成果除了文中特別加以標注引用的內(nèi)容外本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品對本文的研究作出重要貢獻的個人和集體均已在文中以明確方式表明。本人完全意識到本申明的法律后果由本人承擔(dān)。作者簽名:
日期:學(xué)位論文權(quán)使用授權(quán)本學(xué)位論文作者完全了解學(xué)校有關(guān)保留使用學(xué)位論文的規(guī)定同意學(xué)校保留并向國家有關(guān)部門或機構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)南昌大學(xué)可以將本論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。保密□,在本學(xué)位論文屬于不保密□。(請在以上相應(yīng)方框內(nèi)打“√
年解密后適用本授權(quán)書。作者簽名:導(dǎo)師簽名:
日期:日期:
臺手氣象軟件隨著智能手機的快速普及,智能手機操作系統(tǒng)市場風(fēng)生水起。為了讓智能手機用戶能夠隨時隨地查詢互聯(lián)網(wǎng)所提供的服務(wù)種高效的辦法就是將應(yīng)用系統(tǒng)的功能拓展到手機終端上,讓手機能夠通過移動網(wǎng)以及互聯(lián)網(wǎng)訪問Web網(wǎng)站并處理各種各樣的業(yè)務(wù)因此智能手機的應(yīng)用軟件及其需要的服務(wù)將有廣闊的發(fā)展前景。在如今這個智能手機系統(tǒng)群雄紛爭的時候,年Google推出了一款名為的開源智能手機操作系統(tǒng),它采用Linux內(nèi)核,開放手機聯(lián)盟OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開源性使其具有良好的拓展性。這款軟件包括了操作系統(tǒng)、用戶界面和應(yīng)用程序,即智能手機工作所需要的全部軟件。的最大特點是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴展的用戶體驗包括豐富的圖形組件多媒體支持功能以及強大的瀏覽器因此對于軟件從業(yè)人員來說Android平臺具有無限的吸引力。本文就在分析討論Android手機軟件開發(fā)技術(shù)原理的基礎(chǔ)上,開發(fā)出能為用戶提供更好的基于Android平臺的3G手機氣象軟件。關(guān)鍵字:;氣象軟件;智能手機平臺
AbstractWithproliferationofphones,phoneoperatingmarket,windandwater.Inforphoneuserstoanytime,anywhereservicesanwaytofunctionofsystemwillbeappliedphonephoneaccessnetworks,andvarietyofsitesandprocessbusiness.Therefore,smartphoneapplicationstheneedfortheservicewillhaveforInphoneintroducedaphonecalledopenoperatingsystem,whichLinuxkernel,OpenAlliance(OHA)canbefreetousemodifytheSDKpackage,theIthasagoodopen-sourcenatureofof.softwareincludesoperatinginterfaceapplicationsthatneedtoalltheAndroid'sbiggestopennotonlyhasaverygoodanddebuggingenvironment,butavarietyofscalableexperience,richcomponents,support,andpowerfulbrowser.Therefore,forprofessionalsis,hasunlimitedappeal.Inthisphoneonbasisofprinciple,towithplatformthe3GbasedonAndroidmeteorological:android;;platform
目錄摘要............................................................................................................................I.........................................................................................................................II第一緒論....................................................................................................................11.1研究內(nèi).......................................................................................................11.2研究意.......................................................................................................11.3研究現(xiàn)狀和發(fā)展趨...................................................................................1第二章
系統(tǒng)分........................................................................................................32.1研究目.........................................................................................................32.2需求分.........................................................................................................32.3性能分.........................................................................................................3第三章系統(tǒng)開發(fā)環(huán)境及相關(guān)技..............................................................................43.1Android開發(fā)環(huán)境介..................................................................................43.2
Android開發(fā)平臺搭.................................................................................4第四章程序設(shè)..........................................................................................................
用戶界面設(shè)................................................................................................6數(shù)據(jù)庫設(shè)....................................................................................................6程序模塊設(shè)................................................................................................7第五程序開發(fā)............................................................................................................
文件結(jié)構(gòu)與用............................................................................................9數(shù)據(jù)提供..................................................................................................10后臺服......................................................................................................16
獲取天氣數(shù)....................................................................................16讀取天氣數(shù)據(jù)實............................................................................19定時更新時間................................................................................195.4
用戶界......................................................................................................19
程序入口類ForecastWidget..............................................................19設(shè)置頁面詳細頁面DetailForecastActivity........................................................225.5動態(tài)特.......................................................................................................23第六章
系統(tǒng)測......................................................................................................25第七總結(jié)..................................................................................................................29
參考文......................................................................................................................30致
..........................................................................................................................31
1.1研究內(nèi)容Android平臺手機氣象軟件是基于Android手機平臺,運用語言,從Google上獲取天氣預(yù)報信息,開發(fā)出針對使用平臺的手機天氣預(yù)報系統(tǒng)。1.2研究意義Android平臺手機氣象軟件的開發(fā)可以進一步擴大氣象信息的覆蓋面廣大公眾能夠在第一時間方便且快捷地獲取最新的氣象預(yù)報(預(yù)警信息,以便提前預(yù)防把氣象災(zāi)害造成的損失降到最低同時也可以強化氣象公共服務(wù)的職能,完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮了氣象事業(yè)對經(jīng)濟社會發(fā)展的現(xiàn)實性作用。1.3研究現(xiàn)狀和發(fā)展趨勢據(jù)Gartner最新數(shù)據(jù)顯示,年第二、三季度全球智能手機銷售繼續(xù)大幅增長,其中第三季度安卓占全球智能手機市場的,僅次于塞班,成為第二大智能手機系統(tǒng)。第二、三季度與去年同期相比,增度分別是及22%,增勢迅猛。而塞班系統(tǒng)較年的市場份額,盡管終端銷量有大幅度提升,但增勢下滑10%,形勢非常嚴峻。其他操作系統(tǒng)的表現(xiàn)則要平穩(wěn)很多。
安卓是首款開源代碼的操作系統(tǒng),采用內(nèi)核,開放手機聯(lián)盟(OHA)成員可以任意使用和修改安卓的軟件包統(tǒng)的開源性使其具有良好的拓展性,一方面為眾多移動應(yīng)用開發(fā)者提供了良好的系統(tǒng)性平臺,有利于移動應(yīng)用的集合;另一方面終端廠商可以針對自身的特殊需要“定制化開發(fā)”。與此相比,盡管2010年2月,塞班基本完成開源工作,但由于代碼臃腫,用戶界面設(shè)計缺失,塞班的開源并無實際意義,錯失發(fā)展良機。據(jù)Informa預(yù)測,年,安卓手機銷量將超過諾基亞塞班手機,屆時安卓將成為全球最大的智能手機平臺。谷歌表示目前安卓手機每日平均激活量為20萬部,銷售速度加速上漲。我們認為安卓在全球市場的成長壯大塞班市場份額不斷下跌已成不爭事實。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費源和良好產(chǎn)業(yè)運作策略,這三點為安卓在智能手機市場贏得更多的發(fā)展機遇系統(tǒng)的免費讓更多的廠商加入推動了份額的上升代碼的開源讓更多的開發(fā)者進入應(yīng)用開發(fā)應(yīng)用的豐富吸引了更多用戶選擇這也是谷歌值得眾多廠商學(xué)習(xí)的地方此外,谷歌通OHA聯(lián)合眾多廠商進行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶體驗持續(xù)改善。
2.1
系統(tǒng)分析研究目標(1)了解應(yīng)用程序的設(shè)計和開發(fā)過程;(2)使用多種組件進行Android平臺3G手氣象軟件的開發(fā)。本軟件是基于
Eclipse
的開發(fā)環(huán)境,依托Google氣象數(shù)據(jù)建立氣象信息數(shù)據(jù)庫,開發(fā)出了針對Android平臺的手機天氣預(yù)報系統(tǒng)。2.2需求分析本軟件是一個AppWidget應(yīng)用程序啟動程序后可以進行城市更新頻率的設(shè)置,可以通過圖片和文字顯示當前和未來的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的這個后臺服務(wù)可以按照一定時間間隔,從上獲取天氣預(yù)報信息,并將天氣信息保存在數(shù)據(jù)庫中。從上面的描述中可以基本了解軟件的功能需求:(1)啟動App應(yīng)用程序;(2)設(shè)置界面:對要顯示天氣預(yù)報的城市及更新頻率進行設(shè)置;(3)顯示界面:通過文字和圖片顯示當前的天氣情況,包括日期、時間、城市、最高溫度、最低溫度、當前溫度等。(4)詳細界面:通過文字圖片動畫顯示當前的天氣情況,包括城市當前天氣、溫度、風(fēng)向、風(fēng)速、濕度;同時顯示今后四天的天氣情況。2.3性能分析程序響應(yīng)速度快、安全性高、信息處理速度快。
系3.1Android開發(fā)環(huán)境介紹Android上層應(yīng)用程序是用言開發(fā),同時還需要基于Dalvik擬機以公司推薦使用主流的Java繼承開發(fā)環(huán)境EclipseEclipse還不夠為是使用Java語言進行開發(fā)該有由公司提供JavaSDK(其中包括JREJavaRuntimeEnvironment)。此外,的應(yīng)用程序開發(fā)和Java發(fā)有較大區(qū)別的,所以還需要有供的SDK。同時,還需要在安裝,為發(fā)提供開發(fā)工具的升級或者變更,是Eclipse下開發(fā)工具的升級下載的工具。簡言之,需要以下軟件,才能搭A(yù)ndroid開發(fā)環(huán)境,從而進行應(yīng)用程序的開發(fā)。(1)JavaSDK(2)Eclipse(3)AndroidSDK(4)ADT3.2
Android開發(fā)平臺搭建開發(fā)平臺搭建步驟:①首先到/downloads/載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載JavaEE集成版本,可以為平臺的搭建省下不少工作。接著再去/javase/downloads/index.jsp站點下載SDK后安裝,載/android/android-sdk-windows-1.5_r1.zip,SDK1.5后解壓。第一步下載工序就結(jié)束了。②雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動,選Eclipse菜單中的InstallNewSoftware->選項卡上的Software點擊右側(cè)Add”輸入/android/eclipse/確定后with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個Tools選項上以后點擊Next以Eclipse會自動網(wǎng)上查找開發(fā)工具插件,然后找到AndroidDDMS和AndroidDevelopment中這兩個點擊Finish,Eclipse就會自動下載并安裝插件了,最后會提示重啟Eclipse
③重啟后選擇菜單中的Windows->Preferences左側(cè)的Android項目中SDKLocation中填入AndroidSDK解壓后的目錄,然后點擊Apply。④在WindowsXP的系統(tǒng)變量中的path變量中添加一個值值指向解壓后的AndroidSDK目錄下的文件夾。
4.1
程用戶界面設(shè)計根據(jù)需求分析可以知道,應(yīng)用程序應(yīng)包含三個主要的用戶界面,這里需要進一步分析每個用戶界面中應(yīng)該包括哪些顯示內(nèi)容。在“設(shè)置頁面”中,需要對要顯示天氣預(yù)報的城市及更新頻率進行設(shè)置。在“顯示頁面”中,顯示當前的天氣狀況,包括城市名稱、溫度、濕度、風(fēng)向、雨雪情況和獲取數(shù)據(jù)時間等信息。在“詳細頁面”動態(tài)顯示當前天氣情況,還要顯示未來四天的天氣情況。根據(jù)對用戶界面顯示內(nèi)容的分析,繪制出用戶界面的草圖,如圖所示。4.2
圖4-1用界面草圖數(shù)據(jù)庫設(shè)計本軟件中有兩部分數(shù)據(jù)需要存儲,一個是顯示頁面的數(shù)據(jù),另一個詳細頁擇SQLite庫forcasts.db,并且建立兩張weather_t和weather_widget,分別存儲顯示頁面的數(shù)據(jù)和詳細頁面的數(shù)據(jù)。表4-1詳頁面的數(shù)據(jù)庫表weather_forcast結(jié)構(gòu)屬
數(shù)類
說_idwidgetIddayOfWeeklow
integerintegertextinteger
自動增加的主鍵組件的ID號周幾最低溫度
highticoncondition
integertexttext
最高溫度顯示天氣的圖標未來天氣情況表4-2顯頁面的數(shù)據(jù)庫表weather_widget的構(gòu)屬_idcityupdateMilisisConfiguredpostalCodeforecastDateconditiontempFtempChumidityiconwindConditionlastUpdateTime
數(shù)類integertexttexttexttextintegertextintegerintegertexttexttextinteger
說存儲Widget組件id進行天氣信息查詢的城市名進行天氣信息查詢的頻率,單位為/次是否設(shè)置城市標記預(yù)報日期當前天氣情況最高溫度最低溫度當前濕度天氣圖標風(fēng)向風(fēng)速情況最后一次更新時間4.3
程序模塊設(shè)計從功能需求上分析可以看出,整個應(yīng)用程序應(yīng)劃分為4個模塊,分別是程序啟動用戶界面后臺服務(wù)和數(shù)據(jù)庫適配器模塊之間的關(guān)系如圖所示。
從模塊結(jié)構(gòu)圖中不難看出,后臺服務(wù)是整個應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取模塊”,負責(zé)周期性的從Google取天氣信息。后臺服務(wù)在程序啟動時就由AppWidgetProvider啟動也可由用戶界面通過startService()行啟動,啟動后的后臺服務(wù)將一直保持運行狀態(tài)。用戶界面從數(shù)據(jù)庫中獲取天氣信息而沒有直接通過網(wǎng)絡(luò)訪問的天氣數(shù)據(jù)。之所以這么實際,一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,后臺服務(wù)可以及時更新數(shù)據(jù),以保證數(shù)據(jù)的準確性。數(shù)據(jù)庫適配器封裝了所有對數(shù)據(jù)庫操作的方法,用戶界面和后臺服務(wù)會調(diào)用它來實現(xiàn)數(shù)據(jù)庫操作。在完成用戶界面設(shè)計、數(shù)據(jù)庫設(shè)計和模塊設(shè)計后,至此程序設(shè)計階段基本完成。
5.1
文件結(jié)構(gòu)與用途在程序開發(fā)階段,首先確定“臺手機氣象軟件”的工程名為ty-weather,據(jù)程序模塊設(shè)計的內(nèi)容,建立程。Weather程源代碼的結(jié)構(gòu)如圖所示。圖5.1ty-weather工程源代碼文件為了使源代碼文件的結(jié)構(gòu)更加清晰,程設(shè)置了多個命名空間,分別用來保存用戶界面數(shù)據(jù)庫、后臺服務(wù)和工具實體的源代碼文件,源代碼文件的名稱以及說明如表所示。表5.1ty-weather工程文件用途說明包名稱
文件名
說
明com.ty.weathercom.ty.weathercom.ty.weathercom.ty.weathercom.ty.weathercom.ty.weathercom.ty.weather
ConfigureActivity.javaDetailForecastActivity.javaForecastProvider.javaForecastService.javaForecastTimeService.javaForecastWidget.javaWebServiceHelper.java
“設(shè)置頁面”的Activity“詳細頁面”的Activity天氣預(yù)報相關(guān)數(shù)據(jù)提供者,操作數(shù)據(jù)庫后臺進程內(nèi)服務(wù)后臺時間服務(wù)實現(xiàn)AppWidget組件,并啟動服務(wù)網(wǎng)絡(luò)數(shù)據(jù)獲取模塊
com.ty.weather.utilcom.ty.weather.utilcom.ty.weather.util
ForecastEntity.javaForecastUtil.javaWidgetEntity.java
未來天氣信息的類天氣信息工具類當前天氣信息的類Android的資源文件保存在/res的子目錄中其中/res/anim目錄中保存的是產(chǎn)生動畫效果的XML文件/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來自定義字符串和顏色的文件目錄中保存的是XML格式的數(shù)據(jù)文件有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個資源文件的用途可以參考表:表5.2資源文件名稱與用途資目
文
件
說
明animdrawablelayoutvaluesxml
rotatecurrentweather.xmltranslatecloudleft.xmltranslatecloudright.xmltranslaterain01.xmltranslaterain02.xmltranslaterain03.xmltranslaterain04.xmltranslaterain05.xmlcloudy.pngdots.pngnumber_7_tahoma.pngweather_sunny.pngconfigure.xmlweather.xmldetail.xmldetailitems.xmlcolor.xmlstrings.xmlweatherwidget.xml
漸變透明度畫效果畫面轉(zhuǎn)換位移動動畫果(從左右)畫面轉(zhuǎn)換位移動動畫果(從右左)畫面轉(zhuǎn)換位移動動畫果(從上下)畫面轉(zhuǎn)換位移動動畫果(從上下)畫面轉(zhuǎn)換位移動動畫果(從上下)畫面轉(zhuǎn)換位移動動畫果(從上下)畫面轉(zhuǎn)換位移動動畫果(從上下)這個文件夾是工程里用的圖片如有表示天氣狀、數(shù)字等此處不贅。設(shè)置城市、氣更新頻的布局“顯示頁面的布局“詳細顯示頁面上邊顯示當前氣的布局“詳細顯示頁面下邊顯示未來氣的布局保存顏色的XML文件保存字符串XML的文件AppWidget的屬性文件5.2
數(shù)據(jù)提供者數(shù)據(jù)提供者ForecastProvider承ContentProvider在應(yīng)用程序間共享
數(shù)據(jù)的一種接口機制應(yīng)用程序在不同的進程中運行,因此,數(shù)據(jù)和文件在不同的應(yīng)用程序之間是不能夠直接進行訪問的。而CotentProvider為程序員提供了較高級的數(shù)據(jù)共享方法應(yīng)用程序可以指定需要共享的數(shù)據(jù)而其他應(yīng)用程序則可以在不知數(shù)據(jù)來源、路徑的情況下,對共享數(shù)據(jù)進行查詢、添加、刪除和更新等操作。在ForecastProvider的代先了解一下WidgetEntity.java(前天氣信息的)和ForecastEntity.java(未來天氣信息的類)。(1)WidgetEntity.java部分代碼:publicclass{private=new
對privateInteger;
編號privateInteger;
更新率privateString;
城市privateString;privateprivateString
城市標記預(yù)報時間天氣情況privateInteger;privateInteger;
華氏溫度攝氏溫度privateString
濕度privateString;
天氣圖標privateString;privateprivateInteger
風(fēng)力向最后新時間是否設(shè)置}從代碼中可以看出,除對象,WidgetEntity類中有以上公有靜態(tài)屬性
、updateMilis、、、、、、、、、
,全對應(yīng)數(shù)據(jù)庫中weather_widget表。(2)ForecastEntity.java的部分代碼:publicclass{privateInteger;
編號privateString
星期privateInteger
最低溫度privateInteger;
最高溫度privateString;
天氣圖標privateString
天氣情況
privateInteger
組件id中,WidgetEntity有性、dayOfWeek、、iconconditionwidgetId,完全對應(yīng)數(shù)據(jù)庫中weather_forcast的表。在創(chuàng)建ForecastProvider,首先需要使用數(shù)據(jù)庫、文件系統(tǒng)或網(wǎng)絡(luò)實現(xiàn)底層存儲功能這里我們采用數(shù)據(jù)庫建立了數(shù)據(jù)庫設(shè)計中的兩張表從而實現(xiàn)了底層存儲功能后在繼承ContentProvider類中實現(xiàn)基本數(shù)據(jù)操作的接口函數(shù),包括添加、刪除、查找和更新等功能。下面就核心代碼進行分析。(1)
創(chuàng)據(jù):DatabaseHelper類SQLiteOpenHelper,SQLiteOpenHelper這個類可以助建新和開數(shù)據(jù)庫。在建立數(shù)據(jù)庫時時建立了兩個數(shù)據(jù)庫表weather_widget和weather_forcast對保存配置信息的表進行了初始化體代碼如下所示:privatestaticclassextendsSQLiteOpenHelper{數(shù)據(jù)庫名稱privatestaticfinal數(shù)據(jù)庫版本privatestaticfinalint=構(gòu)造方法,載父類構(gòu)public{supernull}publicvoid{創(chuàng)建表publicvoid{創(chuàng)建表"CREATE++創(chuàng)建w表"CREATE++}}重寫()方publicvoidintint{}}}
(2)設(shè)置可以提供多個數(shù)據(jù)集用者使用通用資源標識符對不同的數(shù)據(jù)集的數(shù)據(jù)進行操作用來地位任何遠程或本地的可用資源。ContentProvider
使用的
URI
語法結(jié)構(gòu)content://<authority>/<data_path>/<id>因此,我們就需要先來對進行設(shè)置。代碼如下:publicstaticclassWeatherWidgetsimplements{繼承可以提自動生成的聲明publicstaticfinalUri++);publicstaticfinalString指操作多條據(jù)publicstaticfinal=指操作單條據(jù)publicstaticfinal=}(3)查詢功能先我們先了解一下query()方法。query(SQLiteDatabasedb,String[]projectionIn,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringsortOrder,Stringlimit,參數(shù)說明如表5.3參數(shù)
說
明SQLiteDatabasedbString[]projectionInStringselectionString[]selectionArgsStringgroupByStringhavingStringsortOrderStringlimit
要查詢的數(shù)據(jù)庫實例是一個字符串數(shù)組,里邊的每一項代表了需要返回的列名相當于SQL語句中的where部分是一個字符串數(shù)組,里邊的每一項依次替代在第三個參數(shù)中出現(xiàn)的問號()相當于SQL語句當中的groupby部相當于SQL語句當中的having分描述是怎么進行排序相當于SQL當中的limit部,控制返回的數(shù)據(jù)的個數(shù)查詢功能的核心代碼如下:publicCursor{這個函數(shù)會據(jù)庫是否存在、版本號是否可讀情況,
決定在返回據(jù)庫對象,是否需數(shù)據(jù)庫。返回一個可讀的數(shù)據(jù)庫對。=聲明了一個象,該象利用傳入的參數(shù)生成個完整的查詢語句,可以完成詢工作并返回結(jié)果集()。=newnull通過一個s語句,完了通過類的辨來生成不通的對象的工作switchuriMatcher{caseWIDGETSbreak}caseWIDGETS_ID=_ID++break}caseallfordate獲得=為該S對象設(shè)它查詢工作將針對的表w條件"="+appWidgetId);按照B進行排=+";break:);break}case=);_ID++break}}returnnullnull
}(4)
添加、刪除、更新功能由于核心代碼類似,此處不一一贅述。添加功能:publicUri刪除功能:publicintdelete(Uriselection,selectionArgs)更新功能:public{}(5)類型匹配:增刪改查通過switch判斷,進行不同的操作,因而還需要對關(guān)鍵字進行類型匹配。核心代碼如下:()函數(shù)用返回指定的據(jù)類*表示是條數(shù)據(jù)*表是單條據(jù)publicString{TODOswitchuriMatcher{caseWIDGETSreturnWeatherWidgets.caseWIDGETS_IDreturnWeatherWidgets.;casereturnWeatherDetails.caseFORECASTSreturnWeatherDetails.CONTENT_TYPE;casereturnWeatherDetails.CONTENT_ITEM_TYPE;}thrownew}構(gòu)造無匹配式的privatestaticfinalUriMatcher=newNO_MATCHprivatestaticfinalint=privatestaticfinalint=privatestaticfinalint=privatestaticfinalint=privatestaticfinalint=聲明了的匹配方式返回代碼
static.addURI(AUTHORITY,.addURI(AUTHORITY);.addURI(AUTHORITY.addURI(AUTHORITY);.addURI(AUTHORITY}}5.3
后臺服務(wù)后臺服務(wù)是ty-weather工程的核心模塊,在用戶啟動后持續(xù)在后臺運行,直到用戶停止服務(wù)后臺服務(wù)主要有三個功能一是周期性的獲取的天氣數(shù)據(jù)并存儲到S,二是從QLite取出要顯示的數(shù)據(jù),三是定時更新“顯示頁面”的時間。
獲取天氣數(shù)據(jù)天氣數(shù)據(jù)的獲取天氣數(shù)據(jù)分為以下三個步驟:(1)
從Google提供的WService中獲取的天氣數(shù)據(jù)數(shù)據(jù)的獲取地址是:publicstaticthrows編碼出錯ifnullthrownew}
=null;通過創(chuàng)建連=new創(chuàng)建請求newtry{(,發(fā)出請求==(,"+取出回復(fù)信=
=new}catch{throw}if!=null}returnwidgetEntity;}(2)調(diào)用輕量級XML解析器XmlPullParser對從網(wǎng)絡(luò)上獲取的字節(jié)流數(shù)據(jù)進行解析,并且將解析結(jié)果保存在idgetEntity對象中。核心代碼如下:返回類型為privatestaticthrowstry{使用工廠類來創(chuàng)建析器X=newInstance==nullintwhile(eventType)if=根據(jù)不同的簽做不同解析if({thrownew);}elseif.equals(tagName)){}elseif{}elseif{}
}(3)
}=}}catch{}returnwidgetEntity;將好據(jù)存數(shù)其是:使用對象,通過間接調(diào)用使用ContentResolver對象與ContentProvider進行交互,而ContentResolver則通過U確定需要訪問的ontentProvider的數(shù)據(jù)集。核心代碼如下,調(diào)用關(guān)系如圖.1所示。ContentResolver
URI
ContentProvide文件系統(tǒng)
數(shù)據(jù)庫
網(wǎng)絡(luò)圖調(diào)用系=nullnull=newfor:{DAYOFWEEK}注意:for(ForecastEntityforecast:widgetEntity.getDetails())相當于foreach語句,在widgetEntity.getDetails()合里打印出所有
類型為ForecastEntity的forecast變量。
讀取天氣數(shù)據(jù)實例通過WebServiceHelper.getWidgetEntity()方法操作數(shù)據(jù)庫取出所需要的數(shù)據(jù),這一部分與上一節(jié)的“將解析好的數(shù)據(jù)存儲數(shù)據(jù)庫中”的關(guān)鍵點相同,為節(jié)約篇幅,此處不贅述。
定時更新時間。AppWidget一啟動就會啟動F這個后臺服務(wù)服務(wù)設(shè)置了每隔20刷新一次時間示頁面通過這個后臺服務(wù)獲取系統(tǒng)時間從而顯示。核心代碼如下:=);,至此,后臺服務(wù)介紹完畢,最后還需要在ndroidManifest.xml件中注冊后臺服務(wù)。<service<service5.4
用戶界面在用戶界面設(shè)計上,采用了框架結(jié)構(gòu),提供直觀的交互操作。三個用戶界面風(fēng)格簡約、操作簡便,用戶體驗將非常好。
程序入口類ForecastWidget在設(shè)計上采用了AppWidget框架結(jié)構(gòu),AppWidget就上顯示的小部件,通過在空白處長按,在彈出的對話框中選擇W部件來進行創(chuàng)建。此外,長按部件后并拖動到垃圾箱里進行刪除。創(chuàng)建AppWidget需要以下四個步驟:(1)定義W布局文件,此文件是res/layout/weather.xml,采用AbsoluteLayout方式進行布局需要注意的是在這個文件中所使用的組件必須
是R所支持的。(2)定義W的基本屬性文件文件是res/xml/weatherwidget.xml碼如下:xml<
布局文件在啟動前首要啟動行設(shè)置==
定義組的寬度定義組件的高度"0">更新的時周期(3)創(chuàng)建ForecastWidget.java類,此類繼承自AppWidgetProvider,主要的功能有:獲取需要更新的桌面小控件;啟動獲取天氣預(yù)報信息的服務(wù);啟動時間信息的服務(wù);更新桌面小控件顯示內(nèi)容;更新時間信息。核心代碼如下:publicclassextendsAppWidgetProvider{publicvoidint{super獲需要更新桌面小控啟獲取天氣報信息的務(wù)class啟時間信息服務(wù)class}更新桌面小間顯示內(nèi)publicstatic{}更新時間信publicstatic{}(4)對應(yīng)一個r屬性,需要更新AndroidManifest.xml。代碼如下:段定義的A類-><intent-filter明可接受下面的廣播事件-><
<actionmeta-data明屬性文<meta-datareceiver
設(shè)置頁面ConfigureActivityConfigureActivity繼承Activity并且實現(xiàn)了V口,AppWidget第一次啟動之前會先運行出現(xiàn)設(shè)置頁面用戶進行設(shè)置,點擊保存按鈕就會將設(shè)置好的參數(shù)會存儲到中。心代碼如下:事件publicvoidswitch(v.getId()){caseR.id.btnSave===new,);,);,=通對象儲數(shù)據(jù)newint[]{widgetId啟獲取天氣報信息的臺服務(wù)newIntent(classbreak}}ConfigureActivity的布局文件是r采用了LinearLayout的布局方式。代碼如下:<
=><=TextView編輯框“市”-><=><==TextView編輯框“新頻率”<="2"EditText保存按鈕-><Button詳細頁面DetailForecastActivityDetailForecastActivity主要用來顯示詳細的天氣信息,包括當天和未來四天的天氣信息為了能夠以列表的形勢顯示多行數(shù)據(jù)并制定每行數(shù)據(jù)的布局,使用了ListActivi
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版女包原產(chǎn)地保護采購合同范本3篇
- 2025年度抹灰工程安全施工與環(huán)保驗收合同4篇
- 2025年度門窗行業(yè)電子商務(wù)平臺合作合同8篇
- 二零二五年度場陷踩踏式混戰(zhàn)安全監(jiān)管與監(jiān)督合同4篇
- 二零二五年度智慧社區(qū)管理承諾合同范本4篇
- 2025年度高層住宅鋼管腳手架安裝與拆除服務(wù)合同
- 2025年度排水溝施工與城市排水系統(tǒng)升級合同4篇
- 2025年度個人傭金提成與長期激勵合同4篇
- 2025年度智能停車場車位使用權(quán)買賣及維護服務(wù)合同4篇
- 2025年個人電子產(chǎn)品交易合同參考范本3篇
- 中華人民共和國保守國家秘密法實施條例培訓(xùn)課件
- 管道坡口技術(shù)培訓(xùn)
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識 CCAA年度確認 試題與答案
- 皮膚儲存新技術(shù)及臨床應(yīng)用
- 外研版七年級英語上冊《閱讀理解》專項練習(xí)題(含答案)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 上海市復(fù)旦大學(xué)附中2024屆高考沖刺模擬數(shù)學(xué)試題含解析
- 幼兒園公開課:大班健康《國王生病了》課件
- 小學(xué)六年級說明文閱讀題與答案大全
- 人教pep小學(xué)六年級上冊英語閱讀理解練習(xí)題大全含答案
評論
0/150
提交評論