安卓畢業(yè)論文_第1頁
安卓畢業(yè)論文_第2頁
安卓畢業(yè)論文_第3頁
安卓畢業(yè)論文_第4頁
安卓畢業(yè)論文_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)士學(xué)位論OFBACHELOR—年)題

目:基于Android平臺的3G氣象軟件

軟件學(xué)院

年至2011年5月

南大學(xué)學(xué)士學(xué)位文原創(chuàng)性申本人鄭重申明呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果除了文中特別加以標(biāo)注引用的內(nèi)容外本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品對本文的研究作出重要貢獻(xiàn)的個(gè)人和集體均已在文中以明確方式表明。本人完全意識到本申明的法律后果由本人承擔(dān)。作者簽名:

日期:學(xué)位論文權(quán)使用授權(quán)本學(xué)位論文作者完全了解學(xué)校有關(guān)保留使用學(xué)位論文的規(guī)定同意學(xué)校保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)南昌大學(xué)可以將本論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。保密□,在本學(xué)位論文屬于不保密□。(請?jiān)谝陨舷鄳?yīng)方框內(nèi)打“√

年解密后適用本授權(quán)書。作者簽名:導(dǎo)師簽名:

日期:日期:

臺手氣象軟件隨著智能手機(jī)的快速普及,智能手機(jī)操作系統(tǒng)市場風(fēng)生水起。為了讓智能手機(jī)用戶能夠隨時(shí)隨地查詢互聯(lián)網(wǎng)所提供的服務(wù)種高效的辦法就是將應(yīng)用系統(tǒng)的功能拓展到手機(jī)終端上,讓手機(jī)能夠通過移動網(wǎng)以及互聯(lián)網(wǎng)訪問Web網(wǎng)站并處理各種各樣的業(yè)務(wù)因此智能手機(jī)的應(yīng)用軟件及其需要的服務(wù)將有廣闊的發(fā)展前景。在如今這個(gè)智能手機(jī)系統(tǒng)群雄紛爭的時(shí)候,年Google推出了一款名為的開源智能手機(jī)操作系統(tǒng),它采用Linux內(nèi)核,開放手機(jī)聯(lián)盟OHA)成員可以任意使用和修改SDK包,系統(tǒng)的開源性使其具有良好的拓展性。這款軟件包括了操作系統(tǒng)、用戶界面和應(yīng)用程序,即智能手機(jī)工作所需要的全部軟件。的最大特點(diǎn)是其開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn)包括豐富的圖形組件多媒體支持功能以及強(qiáng)大的瀏覽器因此對于軟件從業(yè)人員來說Android平臺具有無限的吸引力。本文就在分析討論Android手機(jī)軟件開發(fā)技術(shù)原理的基礎(chǔ)上,開發(fā)出能為用戶提供更好的基于Android平臺的3G手機(jī)氣象軟件。關(guān)鍵字:;氣象軟件;智能手機(jī)平臺

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ù)實(shí)............................................................................19定時(shí)更新時(shí)間................................................................................195.4

用戶界......................................................................................................19

程序入口類ForecastWidget..............................................................19設(shè)置頁面詳細(xì)頁面DetailForecastActivity........................................................225.5動態(tài)特.......................................................................................................23第六章

系統(tǒng)測......................................................................................................25第七總結(jié)..................................................................................................................29

參考文......................................................................................................................30致

..........................................................................................................................31

1.1研究內(nèi)容Android平臺手機(jī)氣象軟件是基于Android手機(jī)平臺,運(yùn)用語言,從Google上獲取天氣預(yù)報(bào)信息,開發(fā)出針對使用平臺的手機(jī)天氣預(yù)報(bào)系統(tǒng)。1.2研究意義Android平臺手機(jī)氣象軟件的開發(fā)可以進(jìn)一步擴(kuò)大氣象信息的覆蓋面廣大公眾能夠在第一時(shí)間方便且快捷地獲取最新的氣象預(yù)報(bào)(預(yù)警信息,以便提前預(yù)防把氣象災(zāi)害造成的損失降到最低同時(shí)也可以強(qiáng)化氣象公共服務(wù)的職能,完善公共服務(wù)體系、改善公共服務(wù)手段、增加公共服務(wù)產(chǎn)品、提高公共服務(wù)質(zhì)量,更好地發(fā)揮了氣象事業(yè)對經(jīng)濟(jì)社會發(fā)展的現(xiàn)實(shí)性作用。1.3研究現(xiàn)狀和發(fā)展趨勢據(jù)Gartner最新數(shù)據(jù)顯示,年第二、三季度全球智能手機(jī)銷售繼續(xù)大幅增長,其中第三季度安卓占全球智能手機(jī)市場的,僅次于塞班,成為第二大智能手機(jī)系統(tǒng)。第二、三季度與去年同期相比,增度分別是及22%,增勢迅猛。而塞班系統(tǒng)較年的市場份額,盡管終端銷量有大幅度提升,但增勢下滑10%,形勢非常嚴(yán)峻。其他操作系統(tǒng)的表現(xiàn)則要平穩(wěn)很多。

安卓是首款開源代碼的操作系統(tǒng),采用內(nèi)核,開放手機(jī)聯(lián)盟(OHA)成員可以任意使用和修改安卓的軟件包統(tǒng)的開源性使其具有良好的拓展性,一方面為眾多移動應(yīng)用開發(fā)者提供了良好的系統(tǒng)性平臺,有利于移動應(yīng)用的集合;另一方面終端廠商可以針對自身的特殊需要“定制化開發(fā)”。與此相比,盡管2010年2月,塞班基本完成開源工作,但由于代碼臃腫,用戶界面設(shè)計(jì)缺失,塞班的開源并無實(shí)際意義,錯(cuò)失發(fā)展良機(jī)。據(jù)Informa預(yù)測,年,安卓手機(jī)銷量將超過諾基亞塞班手機(jī),屆時(shí)安卓將成為全球最大的智能手機(jī)平臺。谷歌表示目前安卓手機(jī)每日平均激活量為20萬部,銷售速度加速上漲。我們認(rèn)為安卓在全球市場的成長壯大塞班市場份額不斷下跌已成不爭事實(shí)。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費(fèi)源和良好產(chǎn)業(yè)運(yùn)作策略,這三點(diǎn)為安卓在智能手機(jī)市場贏得更多的發(fā)展機(jī)遇系統(tǒng)的免費(fèi)讓更多的廠商加入推動了份額的上升代碼的開源讓更多的開發(fā)者進(jìn)入應(yīng)用開發(fā)應(yīng)用的豐富吸引了更多用戶選擇這也是谷歌值得眾多廠商學(xué)習(xí)的地方此外,谷歌通OHA聯(lián)合眾多廠商進(jìn)行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶體驗(yàn)持續(xù)改善。

2.1

系統(tǒng)分析研究目標(biāo)(1)了解應(yīng)用程序的設(shè)計(jì)和開發(fā)過程;(2)使用多種組件進(jìn)行Android平臺3G手氣象軟件的開發(fā)。本軟件是基于

Eclipse

的開發(fā)環(huán)境,依托Google氣象數(shù)據(jù)建立氣象信息數(shù)據(jù)庫,開發(fā)出了針對Android平臺的手機(jī)天氣預(yù)報(bào)系統(tǒng)。2.2需求分析本軟件是一個(gè)AppWidget應(yīng)用程序啟動程序后可以進(jìn)行城市更新頻率的設(shè)置,可以通過圖片和文字顯示當(dāng)前和未來的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的這個(gè)后臺服務(wù)可以按照一定時(shí)間間隔,從上獲取天氣預(yù)報(bào)信息,并將天氣信息保存在數(shù)據(jù)庫中。從上面的描述中可以基本了解軟件的功能需求:(1)啟動App應(yīng)用程序;(2)設(shè)置界面:對要顯示天氣預(yù)報(bào)的城市及更新頻率進(jìn)行設(shè)置;(3)顯示界面:通過文字和圖片顯示當(dāng)前的天氣情況,包括日期、時(shí)間、城市、最高溫度、最低溫度、當(dāng)前溫度等。(4)詳細(xì)界面:通過文字圖片動畫顯示當(dāng)前的天氣情況,包括城市當(dāng)前天氣、溫度、風(fēng)向、風(fēng)速、濕度;同時(shí)顯示今后四天的天氣情況。2.3性能分析程序響應(yīng)速度快、安全性高、信息處理速度快。

系3.1Android開發(fā)環(huán)境介紹Android上層應(yīng)用程序是用言開發(fā),同時(shí)還需要基于Dalvik擬機(jī)以公司推薦使用主流的Java繼承開發(fā)環(huán)境EclipseEclipse還不夠?yàn)槭鞘褂肑ava語言進(jìn)行開發(fā)該有由公司提供JavaSDK(其中包括JREJavaRuntimeEnvironment)。此外,的應(yīng)用程序開發(fā)和Java發(fā)有較大區(qū)別的,所以還需要有供的SDK。同時(shí),還需要在安裝,為發(fā)提供開發(fā)工具的升級或者變更,是Eclipse下開發(fā)工具的升級下載的工具。簡言之,需要以下軟件,才能搭A(yù)ndroid開發(fā)環(huán)境,從而進(jì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站點(diǎn)下載SDK后安裝,載/android/android-sdk-windows-1.5_r1.zip,SDK1.5后解壓。第一步下載工序就結(jié)束了。②雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動,選Eclipse菜單中的InstallNewSoftware->選項(xiàng)卡上的Software點(diǎn)擊右側(cè)Add”輸入/android/eclipse/確定后with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個(gè)Tools選項(xiàng)上以后點(diǎn)擊Next以Eclipse會自動網(wǎng)上查找開發(fā)工具插件,然后找到AndroidDDMS和AndroidDevelopment中這兩個(gè)點(diǎn)擊Finish,Eclipse就會自動下載并安裝插件了,最后會提示重啟Eclipse

③重啟后選擇菜單中的Windows->Preferences左側(cè)的Android項(xiàng)目中SDKLocation中填入AndroidSDK解壓后的目錄,然后點(diǎn)擊Apply。④在WindowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值值指向解壓后的AndroidSDK目錄下的文件夾。

4.1

程用戶界面設(shè)計(jì)根據(jù)需求分析可以知道,應(yīng)用程序應(yīng)包含三個(gè)主要的用戶界面,這里需要進(jìn)一步分析每個(gè)用戶界面中應(yīng)該包括哪些顯示內(nèi)容。在“設(shè)置頁面”中,需要對要顯示天氣預(yù)報(bào)的城市及更新頻率進(jìn)行設(shè)置。在“顯示頁面”中,顯示當(dāng)前的天氣狀況,包括城市名稱、溫度、濕度、風(fēng)向、雨雪情況和獲取數(shù)據(jù)時(shí)間等信息。在“詳細(xì)頁面”動態(tài)顯示當(dāng)前天氣情況,還要顯示未來四天的天氣情況。根據(jù)對用戶界面顯示內(nèi)容的分析,繪制出用戶界面的草圖,如圖所示。4.2

圖4-1用界面草圖數(shù)據(jù)庫設(shè)計(jì)本軟件中有兩部分?jǐn)?shù)據(jù)需要存儲,一個(gè)是顯示頁面的數(shù)據(jù),另一個(gè)詳細(xì)頁擇SQLite庫forcasts.db,并且建立兩張weather_t和weather_widget,分別存儲顯示頁面的數(shù)據(jù)和詳細(xì)頁面的數(shù)據(jù)。表4-1詳頁面的數(shù)據(jù)庫表weather_forcast結(jié)構(gòu)屬

數(shù)類

說_idwidgetIddayOfWeeklow

integerintegertextinteger

自動增加的主鍵組件的ID號周幾最低溫度

highticoncondition

integertexttext

最高溫度顯示天氣的圖標(biāo)未來天氣情況表4-2顯頁面的數(shù)據(jù)庫表weather_widget的構(gòu)屬_idcityupdateMilisisConfiguredpostalCodeforecastDateconditiontempFtempChumidityiconwindConditionlastUpdateTime

數(shù)類integertexttexttexttextintegertextintegerintegertexttexttextinteger

說存儲Widget組件id進(jìn)行天氣信息查詢的城市名進(jìn)行天氣信息查詢的頻率,單位為/次是否設(shè)置城市標(biāo)記預(yù)報(bào)日期當(dāng)前天氣情況最高溫度最低溫度當(dāng)前濕度天氣圖標(biāo)風(fēng)向風(fēng)速情況最后一次更新時(shí)間4.3

程序模塊設(shè)計(jì)從功能需求上分析可以看出,整個(gè)應(yīng)用程序應(yīng)劃分為4個(gè)模塊,分別是程序啟動用戶界面后臺服務(wù)和數(shù)據(jù)庫適配器模塊之間的關(guān)系如圖所示。

從模塊結(jié)構(gòu)圖中不難看出,后臺服務(wù)是整個(gè)應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取模塊”,負(fù)責(zé)周期性的從Google取天氣信息。后臺服務(wù)在程序啟動時(shí)就由AppWidgetProvider啟動也可由用戶界面通過startService()行啟動,啟動后的后臺服務(wù)將一直保持運(yùn)行狀態(tài)。用戶界面從數(shù)據(jù)庫中獲取天氣信息而沒有直接通過網(wǎng)絡(luò)訪問的天氣數(shù)據(jù)。之所以這么實(shí)際,一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,后臺服務(wù)可以及時(shí)更新數(shù)據(jù),以保證數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)庫適配器封裝了所有對數(shù)據(jù)庫操作的方法,用戶界面和后臺服務(wù)會調(diào)用它來實(shí)現(xiàn)數(shù)據(jù)庫操作。在完成用戶界面設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和模塊設(shè)計(jì)后,至此程序設(shè)計(jì)階段基本完成。

5.1

文件結(jié)構(gòu)與用途在程序開發(fā)階段,首先確定“臺手機(jī)氣象軟件”的工程名為ty-weather,據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立程。Weather程源代碼的結(jié)構(gòu)如圖所示。圖5.1ty-weather工程源代碼文件為了使源代碼文件的結(jié)構(gòu)更加清晰,程設(shè)置了多個(gè)命名空間,分別用來保存用戶界面數(shù)據(jù)庫、后臺服務(wù)和工具實(shí)體的源代碼文件,源代碼文件的名稱以及說明如表所示。表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“詳細(xì)頁面”的Activity天氣預(yù)報(bào)相關(guān)數(shù)據(jù)提供者,操作數(shù)據(jù)庫后臺進(jìn)程內(nèi)服務(wù)后臺時(shí)間服務(wù)實(shí)現(xiàn)AppWidget組件,并啟動服務(wù)網(wǎng)絡(luò)數(shù)據(jù)獲取模塊

com.ty.weather.utilcom.ty.weather.utilcom.ty.weather.util

ForecastEntity.javaForecastUtil.javaWidgetEntity.java

未來天氣信息的類天氣信息工具類當(dāng)前天氣信息的類Android的資源文件保存在/res的子目錄中其中/res/anim目錄中保存的是產(chǎn)生動畫效果的XML文件/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來自定義字符串和顏色的文件目錄中保存的是XML格式的數(shù)據(jù)文件有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中,具體每個(gè)資源文件的用途可以參考表:表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)換位移動動畫果(從上下)這個(gè)文件夾是工程里用的圖片如有表示天氣狀、數(shù)字等此處不贅。設(shè)置城市、氣更新頻的布局“顯示頁面的布局“詳細(xì)顯示頁面上邊顯示當(dāng)前氣的布局“詳細(xì)顯示頁面下邊顯示未來氣的布局保存顏色的XML文件保存字符串XML的文件AppWidget的屬性文件5.2

數(shù)據(jù)提供者數(shù)據(jù)提供者ForecastProvider承ContentProvider在應(yīng)用程序間共享

數(shù)據(jù)的一種接口機(jī)制應(yīng)用程序在不同的進(jìn)程中運(yùn)行,因此,數(shù)據(jù)和文件在不同的應(yīng)用程序之間是不能夠直接進(jìn)行訪問的。而CotentProvider為程序員提供了較高級的數(shù)據(jù)共享方法應(yīng)用程序可以指定需要共享的數(shù)據(jù)而其他應(yīng)用程序則可以在不知數(shù)據(jù)來源、路徑的情況下,對共享數(shù)據(jù)進(jìn)行查詢、添加、刪除和更新等操作。在ForecastProvider的代先了解一下WidgetEntity.java(前天氣信息的)和ForecastEntity.java(未來天氣信息的類)。(1)WidgetEntity.java部分代碼:publicclass{private=new

對privateInteger;

編號privateInteger;

更新率privateString;

城市privateString;privateprivateString

城市標(biāo)記預(yù)報(bào)時(shí)間天氣情況privateInteger;privateInteger;

華氏溫度攝氏溫度privateString

濕度privateString;

天氣圖標(biāo)privateString;privateprivateInteger

風(fēng)力向最后新時(shí)間是否設(shè)置}從代碼中可以看出,除對象,WidgetEntity類中有以上公有靜態(tài)屬性

、updateMilis、、、、、、、、、

,全對應(yīng)數(shù)據(jù)庫中weather_widget表。(2)ForecastEntity.java的部分代碼:publicclass{privateInteger;

編號privateString

星期privateInteger

最低溫度privateInteger;

最高溫度privateString;

天氣圖標(biāo)privateString

天氣情況

privateInteger

組件id中,WidgetEntity有性、dayOfWeek、、iconconditionwidgetId,完全對應(yīng)數(shù)據(jù)庫中weather_forcast的表。在創(chuàng)建ForecastProvider,首先需要使用數(shù)據(jù)庫、文件系統(tǒng)或網(wǎng)絡(luò)實(shí)現(xiàn)底層存儲功能這里我們采用數(shù)據(jù)庫建立了數(shù)據(jù)庫設(shè)計(jì)中的兩張表從而實(shí)現(xiàn)了底層存儲功能后在繼承ContentProvider類中實(shí)現(xiàn)基本數(shù)據(jù)操作的接口函數(shù),包括添加、刪除、查找和更新等功能。下面就核心代碼進(jìn)行分析。(1)

創(chuàng)據(jù):DatabaseHelper類SQLiteOpenHelper,SQLiteOpenHelper這個(gè)類可以助建新和開數(shù)據(jù)庫。在建立數(shù)據(jù)庫時(shí)時(shí)建立了兩個(gè)數(shù)據(jù)庫表weather_widget和weather_forcast對保存配置信息的表進(jìn)行了初始化體代碼如下所示: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è)置可以提供多個(gè)數(shù)據(jù)集用者使用通用資源標(biāo)識符對不同的數(shù)據(jù)集的數(shù)據(jù)進(jìn)行操作用來地位任何遠(yuǎn)程或本地的可用資源。ContentProvider

使用的

URI

語法結(jié)構(gòu)content://<authority>/<data_path>/<id>因此,我們就需要先來對進(jìn)行設(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í)例是一個(gè)字符串?dāng)?shù)組,里邊的每一項(xiàng)代表了需要返回的列名相當(dāng)于SQL語句中的where部分是一個(gè)字符串?dāng)?shù)組,里邊的每一項(xiàng)依次替代在第三個(gè)參數(shù)中出現(xiàn)的問號()相當(dāng)于SQL語句當(dāng)中的groupby部相當(dāng)于SQL語句當(dāng)中的having分描述是怎么進(jìn)行排序相當(dāng)于SQL當(dāng)中的limit部,控制返回的數(shù)據(jù)的個(gè)數(shù)查詢功能的核心代碼如下:publicCursor{這個(gè)函數(shù)會據(jù)庫是否存在、版本號是否可讀情況,

決定在返回?fù)?jù)庫對象,是否需數(shù)據(jù)庫。返回一個(gè)可讀的數(shù)據(jù)庫對。=聲明了一個(gè)象,該象利用傳入的參數(shù)生成個(gè)完整的查詢語句,可以完成詢工作并返回結(jié)果集()。=newnull通過一個(gè)s語句,完了通過類的辨來生成不通的對象的工作switchuriMatcher{caseWIDGETSbreak}caseWIDGETS_ID=_ID++break}caseallfordate獲得=為該S對象設(shè)它查詢工作將針對的表w條件"="+appWidgetId);按照B進(jìn)行排=+";break:);break}case=);_ID++break}}returnnullnull

}(4)

添加、刪除、更新功能由于核心代碼類似,此處不一一贅述。添加功能:publicUri刪除功能:publicintdelete(Uriselection,selectionArgs)更新功能:public{}(5)類型匹配:增刪改查通過switch判斷,進(jìn)行不同的操作,因而還需要對關(guān)鍵字進(jì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ù)在后臺運(yùn)行,直到用戶停止服務(wù)后臺服務(wù)主要有三個(gè)功能一是周期性的獲取的天氣數(shù)據(jù)并存儲到S,二是從QLite取出要顯示的數(shù)據(jù),三是定時(shí)更新“顯示頁面”的時(shí)間。

獲取天氣數(shù)據(jù)天氣數(shù)據(jù)的獲取天氣數(shù)據(jù)分為以下三個(gè)步驟:(1)

從Google提供的WService中獲取的天氣數(shù)據(jù)數(shù)據(jù)的獲取地址是:publicstaticthrows編碼出錯(cuò)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ù)進(jìn)行解析,并且將解析結(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進(jìn)行交互,而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())相當(dāng)于foreach語句,在widgetEntity.getDetails()合里打印出所有

類型為ForecastEntity的forecast變量。

讀取天氣數(shù)據(jù)實(shí)例通過WebServiceHelper.getWidgetEntity()方法操作數(shù)據(jù)庫取出所需要的數(shù)據(jù),這一部分與上一節(jié)的“將解析好的數(shù)據(jù)存儲數(shù)據(jù)庫中”的關(guān)鍵點(diǎn)相同,為節(jié)約篇幅,此處不贅述。

定時(shí)更新時(shí)間。AppWidget一啟動就會啟動F這個(gè)后臺服務(wù)服務(wù)設(shè)置了每隔20刷新一次時(shí)間示頁面通過這個(gè)后臺服務(wù)獲取系統(tǒng)時(shí)間從而顯示。核心代碼如下:=);,至此,后臺服務(wù)介紹完畢,最后還需要在ndroidManifest.xml件中注冊后臺服務(wù)。<service<service5.4

用戶界面在用戶界面設(shè)計(jì)上,采用了框架結(jié)構(gòu),提供直觀的交互操作。三個(gè)用戶界面風(fēng)格簡約、操作簡便,用戶體驗(yàn)將非常好。

程序入口類ForecastWidget在設(shè)計(jì)上采用了AppWidget框架結(jié)構(gòu),AppWidget就上顯示的小部件,通過在空白處長按,在彈出的對話框中選擇W部件來進(jìn)行創(chuàng)建。此外,長按部件后并拖動到垃圾箱里進(jìn)行刪除。創(chuàng)建AppWidget需要以下四個(gè)步驟:(1)定義W布局文件,此文件是res/layout/weather.xml,采用AbsoluteLayout方式進(jìn)行布局需要注意的是在這個(gè)文件中所使用的組件必須

是R所支持的。(2)定義W的基本屬性文件文件是res/xml/weatherwidget.xml碼如下:xml<

布局文件在啟動前首要啟動行設(shè)置==

定義組的寬度定義組件的高度"0">更新的時(shí)周期(3)創(chuàng)建ForecastWidget.java類,此類繼承自AppWidgetProvider,主要的功能有:獲取需要更新的桌面小控件;啟動獲取天氣預(yù)報(bào)信息的服務(wù);啟動時(shí)間信息的服務(wù);更新桌面小控件顯示內(nèi)容;更新時(shí)間信息。核心代碼如下:publicclassextendsAppWidgetProvider{publicvoidint{super獲需要更新桌面小控啟獲取天氣報(bào)信息的務(wù)class啟時(shí)間信息服務(wù)class}更新桌面小間顯示內(nèi)publicstatic{}更新時(shí)間信publicstatic{}(4)對應(yīng)一個(gè)r屬性,需要更新AndroidManifest.xml。代碼如下:段定義的A類-><intent-filter明可接受下面的廣播事件-><

<actionmeta-data明屬性文<meta-datareceiver

設(shè)置頁面ConfigureActivityConfigureActivity繼承Activity并且實(shí)現(xiàn)了V口,AppWidget第一次啟動之前會先運(yùn)行出現(xiàn)設(shè)置頁面用戶進(jìn)行設(shè)置,點(diǎn)擊保存按鈕就會將設(shè)置好的參數(shù)會存儲到中。心代碼如下:事件publicvoidswitch(v.getId()){caseR.id.btnSave===new,);,);,=通對象儲數(shù)據(jù)newint[]{widgetId啟獲取天氣報(bào)信息的臺服務(wù)newIntent(classbreak}}ConfigureActivity的布局文件是r采用了LinearLayout的布局方式。代碼如下:<

=><=TextView編輯框“市”-><=><==TextView編輯框“新頻率”<="2"EditText保存按鈕-><Button詳細(xì)頁面DetailForecastActivityDetailForecastActivity主要用來顯示詳細(xì)的天氣信息,包括當(dāng)天和未來四天的天氣信息為了能夠以列表的形勢顯示多行數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論