




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
...wd......wd......wd...摘要在科技日益興旺的今天,社會(huì)競(jìng)爭(zhēng)越來(lái)越劇烈,這要求人們不斷的獲取信息來(lái)充實(shí)自己。這就要求人們能隨時(shí)隨地的了解并獲取所需的信息。與此同時(shí),手機(jī)的功能越來(lái)越強(qiáng)大,將脫離傳統(tǒng)的打、發(fā)短信等根本的功能,在這種情況下,新聞閱讀器可以滿足人們對(duì)外界信息了解的需求。本系統(tǒng)是在Android平臺(tái)下設(shè)計(jì)的,在GoogleAndroid平臺(tái)的SDK2.1環(huán)境下,運(yùn)用Eclipse進(jìn)展開發(fā)。論文概括的介紹了Android開發(fā)的流程,并重點(diǎn)的介紹了基于Android平臺(tái)的RSS閱讀器的開發(fā)過(guò)程。論文首先介紹了課題的研究背景、研究現(xiàn)狀和主要研究?jī)?nèi)容;然后對(duì)系統(tǒng)中用到的理論知識(shí)和相關(guān)技術(shù)進(jìn)展了詳細(xì)的闡述,包括Android平臺(tái)的相關(guān)理論知識(shí)、Android環(huán)境的搭建、數(shù)據(jù)源的選取、數(shù)據(jù)的解析方法以及系統(tǒng)的詳細(xì)實(shí)現(xiàn)過(guò)程。系統(tǒng)選用了新浪RSS源以及pull解析方法。系統(tǒng)完成以后,可以實(shí)現(xiàn)RSS閱讀器的根本功能,論文闡述了具體實(shí)現(xiàn)方法以及相應(yīng)的關(guān)鍵代碼段。本課題完成設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)已經(jīng)試運(yùn)行正常。用戶使用該系統(tǒng)可以方便、及時(shí)的閱讀到自己感興趣的新聞關(guān)鍵詞:RSS閱讀器,Android操作系統(tǒng),Pull解析算法AbstractIt'smoreadvancedintechnologytoday,andthesocialcompetitionismoreandmorefierce,whichrequiresconstantaccesstoinformationtopeopletoenrichthemselves.Atthesametime,mobilephonesbecomemoreandmorepowerful,willbreakawayfromtraditionalphonecalls,sendingmessagesandotherbasicfunctions.Inthiscase,thenewsreaderistomeetthepeople'sunderstandingoftheneedsofoutsideinformation.ThissystemisdesignedintheAndroidplatform,comeswiththeGoogleAndroidPlatformSDK2.1environment,theuseofEclipsefordevelopment.ThispaperdescribesthegeneralprocessofAndroiddevelopment,andfocusontheintroductionoftheAndroidplatform-basedRSSreaderdevelopmentprocess.Thispaperintroducestheresearchbackground,currentsituationandmaincontent;andthendescribesthetheoreticalknowledgeandrelatedtechnologiesusedinthesystemindetail,includingthetheoryofAndroidplatform,buildingAndroidenvironment,theselectionofdatasources,dataanalyticalmethodsandthedetailedimplementationprocess.ThesystemselectsSinaRSSsourceandPullparsingmethod.Aftercompletingthesystem,youcanachievethebasicfunctionsofRSSReader,thepaperdescribesthespecificimplementationmethodandthecorrespondingkeycode.Thedesignandimplementationofthesystemhasbeentestrunnormally.Userscaneasilyusethesystem,readtimelynewsofpersonalinterest.Keywords:RSSreader,AndroidOperatingSystem,Pullparsingmethod目錄TOC\o"1-2"\h\z\u摘要IAbstractII1緒論11.1課題背景11.2課題研究的目的和意義21.3研究現(xiàn)狀32Android相關(guān)理論知識(shí)62.1Android平臺(tái)介紹62.2Android開發(fā)環(huán)境的搭建143相關(guān)技術(shù)理論193.1RSS技術(shù)簡(jiǎn)介193.2Pull解析算法研究204Android平臺(tái)下RSS閱讀器的詳細(xì)分析設(shè)計(jì)與實(shí)現(xiàn)224.1問(wèn)題的提出224.2解決方案234.3主要功能詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)245總結(jié)與展望395.1本文工作總結(jié)395.2下一步工作展望39致謝40參考文獻(xiàn)41緒論課題背景現(xiàn)在手機(jī)已經(jīng)成為了人們生活中不可或缺的通訊設(shè)備,沒有手機(jī)有時(shí)會(huì)讓人覺得寸步難行。手機(jī)將脫離傳統(tǒng)的打、發(fā)短信等根本的功能,而基于智能手機(jī)強(qiáng)大的處理能力和可擴(kuò)展能力以及3G網(wǎng)絡(luò)高速數(shù)據(jù)傳輸,越來(lái)越多的功能和業(yè)務(wù)將被開發(fā)出來(lái)并大規(guī)模的應(yīng)用。正因?yàn)槿绱?,?dāng)全世界的目光聚焦的時(shí)候,Google于2007年11月5日宣布推出基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng),號(hào)稱首個(gè)為移動(dòng)終端打造的真正開發(fā)和完整的移動(dòng)軟件——Android。Android是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),早期由Google開發(fā),后由開放手機(jī)聯(lián)盟〔OpenHandsetAlliance〕開發(fā)。它采用了軟件層(softwarestack,又名以軟件疊層)的構(gòu)架,主要分為三局部。底層以Linux內(nèi)核作為根基,由C語(yǔ)言開發(fā),只提供根基功能。中間層包括函數(shù)庫(kù)Library和虛擬機(jī)VirtualMachine,由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),由Java編寫。Android不僅僅只是一個(gè)操作系統(tǒng),它包括了:1、經(jīng)過(guò)Google剪裁和調(diào)優(yōu)的LinuxKernel,對(duì)于掌上設(shè)備的硬件提供了很好的支持。Google在Linux方面的應(yīng)用能力不容置疑,Google公司幾乎所有的幾十萬(wàn)服務(wù)器全部是自己修改正的Linux操作系統(tǒng)。2、經(jīng)過(guò)Google修改的Java虛擬機(jī)Dalvik,是基于ApacheHarmony虛擬機(jī)版本進(jìn)展改進(jìn)而來(lái),能夠提供極高的執(zhí)行性能。有了Java虛擬機(jī),大局部Java核心類庫(kù)都已經(jīng)可以直接運(yùn)行。3、大量立即可用的類庫(kù)和應(yīng)用軟件,例如瀏覽器Webkit,數(shù)據(jù)庫(kù)SQLite,讓你可輕易開發(fā)出來(lái)媲美于桌面應(yīng)用復(fù)雜度的手機(jī)軟件。4、Google已經(jīng)開發(fā)好了大量現(xiàn)成的應(yīng)用軟件,同時(shí)可以直接使用Google很多在線服務(wù)。5、Google提供了基于Eclipse的完整開發(fā)環(huán)境、模擬器、文檔、幫助、例如等將極大推動(dòng)Android快速的推廣和開展?;贏ndroid眾多的優(yōu)點(diǎn),圍繞Android形成了一個(gè)移動(dòng)手機(jī)聯(lián)盟,主要的手機(jī)廠商幾乎全部在列,而此聯(lián)盟在極大的推動(dòng)Android平臺(tái)的推廣和開展,在未來(lái)的幾年必將大方異彩,將極大的推動(dòng)整個(gè)手機(jī)操作系統(tǒng)甚至是互聯(lián)網(wǎng)乃至軟件行業(yè)的開展。課題研究的目的和意義Android這個(gè)平臺(tái)對(duì)于Google對(duì)于群眾的意義不在于手機(jī)本身,Android存在的目的也不在于挑起手機(jī)操作系統(tǒng)之間的混戰(zhàn),而在于推動(dòng)移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)鏈的迅速成型。具有開源特性的Android平臺(tái)打破了之前Symbian、windowsmobile等操作系統(tǒng)收取高額的授權(quán)費(fèi)用的模式,使得只能手機(jī)本錢大大的降低;而正是由于它開發(fā)源代碼,使得手機(jī)產(chǎn)生更多個(gè)性化的應(yīng)用。同時(shí),合作方能夠在這里得到利潤(rùn)或者創(chuàng)造價(jià)值,手機(jī)軟件行業(yè)得到維護(hù)協(xié)調(diào)開展。以Google、蘋果和諾基亞為中心各自形成的生態(tài)鏈將以原來(lái)數(shù)倍的速度推動(dòng)移動(dòng)互聯(lián)網(wǎng)的開展,這正是Google推出Android平臺(tái)的意義,也是Android平臺(tái)存在的使命。而作為Android平臺(tái)成員之一的中國(guó)移動(dòng)也投資成立了一家通訊公司,專門從事Google手機(jī)軟件的應(yīng)用以及本地化的軟件的開發(fā),比方將在Google手機(jī)平臺(tái)上添加飛信、輸入法等一系列符合國(guó)內(nèi)用戶使用特色的功能。國(guó)內(nèi)眾多企業(yè)也將眼光投入到Android上面,并啟動(dòng)了相關(guān)的方案來(lái)深入的理解并開展Android。更多的手機(jī)軟件開發(fā)企業(yè)已經(jīng)或者籌備著將公司進(jìn)展轉(zhuǎn)型,從其方向的開發(fā)轉(zhuǎn)向到Android的開發(fā)。綜上所述,無(wú)論是在國(guó)內(nèi)還是在國(guó)外,Android平臺(tái)對(duì)手機(jī)軟件行業(yè)和移動(dòng)手機(jī)平臺(tái)將發(fā)揮極大地推動(dòng)作用,而在未來(lái)的幾年或者一段時(shí)間內(nèi),Android將越發(fā)的凸顯自己的重要性。基于此,我們有必要通過(guò)進(jìn)展相關(guān)的研究來(lái)了解Android平臺(tái),來(lái)了解開發(fā)Android的那一大批人的先進(jìn)的理念和思想,并通過(guò)這些來(lái)了解手機(jī)軟件行業(yè),進(jìn)而了解未來(lái)無(wú)移動(dòng)互聯(lián)網(wǎng)的開展趨勢(shì),從而更好的適應(yīng)時(shí)代的需要。研究現(xiàn)狀本節(jié)對(duì)各大站點(diǎn)對(duì)RSS的支持情況以及現(xiàn)有RSS閱讀器進(jìn)展了分析和綜合,提出了系統(tǒng)實(shí)現(xiàn)可以借鑒的地方。各種站點(diǎn)對(duì)RSS的支持情況目前支持RSS的站點(diǎn)主要分為下面幾種:新聞資訊類站點(diǎn)、BSP站點(diǎn)、獨(dú)立博客站點(diǎn)、其他站點(diǎn)。新聞資訊類站點(diǎn)指的是傳統(tǒng)的門戶網(wǎng)站,這類門戶網(wǎng)站一般是站長(zhǎng)管理式的,信息涉及非常廣泛、來(lái)源比擬集中、權(quán)威性比擬高,一直受到傳統(tǒng)互聯(lián)網(wǎng)用戶的青睞。用戶可以從這一類網(wǎng)站了解到各種需要的綜合信息。幾大典型的例子有新浪門戶、搜狐門戶和騰訊門戶等等。為了迎合用戶的需要這類網(wǎng)站一般也有推出RSS訂閱功能,這類網(wǎng)站的信息更新非常頻繁、信息量也比擬巨大,因此,用戶不怎么傾向于訂閱此類網(wǎng)站。BSP站點(diǎn),即Blogserviceprovider〔博客服務(wù)提供商〕,這類站點(diǎn)為用戶提供博客服務(wù),除了提供根本的博客添加、評(píng)論之外,大局部BSP都會(huì)針對(duì)某個(gè)博客提供RSS訂閱功能。比方新浪博客和博客園等等。這類網(wǎng)站在RSS信息更新方面的特點(diǎn)是:更新相對(duì)不頻繁、也不規(guī)律。但是用戶比擬傾向于訂閱這類網(wǎng)站,因?yàn)樵S多博客的話題是針對(duì)某一特定領(lǐng)域的,而用戶的閱讀傾向往往也是針對(duì)某一領(lǐng)域的。獨(dú)立博客站點(diǎn),指的是博主自己申請(qǐng)域名,自己開通并且自己維護(hù)的博客。這類博客站點(diǎn)一般使用已有的博客系統(tǒng)〔比方wordpress〕,而這些博客系統(tǒng)一般都會(huì)提供RSS訂閱功能。在信息方面,獨(dú)立博客一直是IT從業(yè)人員比擬青睞的網(wǎng)站,比方月光博客、小眾軟件等等。在國(guó)外,這一類博客站點(diǎn)更加流行。其他站點(diǎn),指的是迎合用戶特殊需求的站點(diǎn)。這類站點(diǎn)提供了某些定期更新的特殊信息,比方天氣預(yù)報(bào)信息,學(xué)校就業(yè)信息,學(xué)院通知信息。這類信息不適合所有用戶,但就算如此,提供RSS訂閱服務(wù)能使得關(guān)心它的用戶一勞永逸。這類信息更新的頻繁度往往沒有什么規(guī)律。對(duì)RSS源站點(diǎn)信息,我們總結(jié)如表1.1所示:表SEQ表格\*ARABIC1.1各種RSS源網(wǎng)站情況比照RSS源站點(diǎn)用戶群體RSS支持程度更新頻繁程度新聞門戶群眾用戶一般頻繁BSP站點(diǎn)專注某個(gè)領(lǐng)域的用戶好不頻繁獨(dú)立博客站點(diǎn)專業(yè)用戶非常好不頻繁其他站點(diǎn)具有特殊需求的用戶不好不確定移動(dòng)閱讀器實(shí)現(xiàn)方案離線閱讀器離線RSS閱讀器主要指的是用一個(gè)客戶端軟件進(jìn)展RSS閱讀,例如瀏覽器自帶的RSS閱讀,以及桌面RSS閱讀器。這類閱讀器的主要優(yōu)點(diǎn)是:〔1〕通過(guò)本地緩存將內(nèi)容呈現(xiàn)給用戶,使得RSS閱讀不受網(wǎng)絡(luò)影響?!?〕響應(yīng)速度快,加載速度快。它的主要缺點(diǎn)是:〔1〕RSS信息的獲取由客戶端完成,增加了客戶端的處理負(fù)擔(dān)?!?〕由于訂閱信息都在本地,因此不便于用戶轉(zhuǎn)移數(shù)據(jù)。對(duì)手機(jī)來(lái)說(shuō),計(jì)算能力和內(nèi)存空間屬于稀缺資源,因此離線RSS閱讀器實(shí)現(xiàn)方案并不適合手機(jī)。此外,離線閱讀器的實(shí)現(xiàn)方案和互聯(lián)網(wǎng)的開展趨勢(shì)也是背道而馳的。在線閱讀器在線閱讀器大多是通過(guò)瀏覽器訪問(wèn)的一類閱讀器,對(duì)于在線閱讀器來(lái)說(shuō),各個(gè)訂閱網(wǎng)站信息的獲取是由提供服務(wù)的一方完成的,客戶端只負(fù)責(zé)接收服務(wù)端返回的數(shù)據(jù)并且正確顯示。在線閱讀器的特點(diǎn)是依靠網(wǎng)絡(luò)、極大化的減輕客戶端的負(fù)擔(dān)、便于用戶在不同客戶端使用軟件及其數(shù)據(jù)等等。隨著web2.0的開展,一些在線RSS閱讀器已經(jīng)進(jìn)入人們的視野,典型的范例有Google閱讀器、鮮果網(wǎng)、抓蝦網(wǎng)和哪吒網(wǎng),這些網(wǎng)站也相繼都推出了各自的手機(jī)版。這些手機(jī)版的RSS閱讀器都是我們需要借鑒的。但是,對(duì)普通用戶來(lái)說(shuō),RSS是個(gè)比擬難以理解的東西〔尤其是在國(guó)內(nèi)〕,因此這類手機(jī)閱讀器的普及是個(gè)重大難題,我們的工作重點(diǎn),就是屏蔽RSS閱讀器的技術(shù)細(xì)節(jié),給用戶提供直觀的、全面的、易懂的服務(wù)。Android相關(guān)理論知識(shí)Android平臺(tái)介紹Android系統(tǒng)簡(jiǎn)介Android一詞的本義指“機(jī)器人〞,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序——移動(dòng)工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Googleandroid平臺(tái)的系統(tǒng)構(gòu)架圖如圖2.1所示:圖2.1Googleandroid平臺(tái)的系統(tǒng)構(gòu)架圖雖然Android是Google公司推出的產(chǎn)品,但更貼切的說(shuō)法應(yīng)該是開放手機(jī)聯(lián)盟的產(chǎn)品。開放手機(jī)聯(lián)盟是由大約30家公司組成的聯(lián)盟,致力于將“更好的〞和“開放的〞手機(jī)推向市場(chǎng)。其網(wǎng)站上的一句話很好的闡述了這一點(diǎn):“Android是本著成為第一個(gè)開放、完整、免費(fèi)、專門針對(duì)移動(dòng)設(shè)備開發(fā)的平臺(tái)這一目標(biāo),完全從零開場(chǎng)創(chuàng)立的。〞Android系統(tǒng)架構(gòu)應(yīng)用程序Android以Java為編程語(yǔ)言,從接口到功能,都有層出不窮的變化,其中Activity等同于J2ME的MIDlet,一個(gè)Activity類〔class〕負(fù)責(zé)創(chuàng)立視窗〔window〕,一個(gè)活動(dòng)中的Activity就是在foreground〔前景〕模式,背景運(yùn)行的程序叫做Service。兩者之間通過(guò)由ServiceConnection和AIDL連結(jié),到達(dá)復(fù)數(shù)程序同時(shí)運(yùn)行的效果。如果運(yùn)行中的Activity全部畫面被其他Activity取代時(shí),該Activity便被停頓〔stopped〕,甚至被系統(tǒng)去除〔kill〕。View等同于J2ME的Displayable,程序人員可以通過(guò)View類與“XMLlayout〞檔將UI放置在視窗上,Android1.5的版本可以利用View打造出所謂的Widgets,其實(shí)Widget只是View的一種,所以可以使用xml來(lái)設(shè)計(jì)layout,HTC的AndroidHero手機(jī)即含有大量的widget。至于ViewGroup是各種layout的根基抽象類〔abstractclass〕,ViewGroup之內(nèi)還可以有ViewGroup。View的構(gòu)造函數(shù)不需要再Activity中調(diào)用,但是Displayable的是必須的,在Activity中,要通過(guò)findViewById()來(lái)從XML中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件〔event〕息息相關(guān),兩者之間通過(guò)Listener結(jié)合在一起,每一個(gè)View都可以注冊(cè)一個(gè)eventlistener,例如:當(dāng)View要處理用戶觸碰〔touch〕的事件時(shí),就要向Android框架注冊(cè)View.OnClickListener。另外還有Image等同于J2ME的BitMap。中介軟件操作系統(tǒng)與應(yīng)用程序的溝通橋梁,應(yīng)用分為兩層:函數(shù)層〔Library〕和虛擬機(jī)〔VirtualMachine〕。Bionic是Android改進(jìn)libc的版本。Android同時(shí)包含了Webkit,所謂的Webkit就是AppleSafari瀏覽器背后的引擎。Surfaceflinger是就2D或3D的內(nèi)容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自制的BionicLibc。Android采用OpenCORE作為根基多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。Android使用skia為核心圖形引擎,搭配OpenGL/ES。skia與LinuxCairo功能相當(dāng),但相較于LinuxCairo,skia功能還只是雛形的。2005年Skia公司被Google收購(gòu),2007年初,SkiaGL源碼被公開,目前Skia也是GoogleChrome的圖形引擎。Android的多媒體數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)又分為共用數(shù)據(jù)庫(kù)及私用數(shù)據(jù)庫(kù)。用戶可通過(guò)ContentResolver類〔Column〕取得共用數(shù)據(jù)庫(kù)。Android的中間層多以Java實(shí)現(xiàn),并且采用特殊的Dalvik虛擬機(jī)〔DalvikVirtualMachine〕。Dalvik虛擬機(jī)是一種“暫存器型態(tài)〞〔RegisterBased〕的Java虛擬機(jī),變量皆存放于暫存器中,虛擬機(jī)的指令相對(duì)減少。Dalvik虛擬機(jī)可以有多個(gè)實(shí)例〔instance〕,每個(gè)Android應(yīng)用程序都用一個(gè)自屬的Dalvik虛擬機(jī)來(lái)運(yùn)行,讓系統(tǒng)在運(yùn)行程序時(shí)可到達(dá)優(yōu)化。Dalvik虛擬機(jī)并非運(yùn)行Java字節(jié)碼〔Bytecode〕,而是運(yùn)行一種稱為.dex格式的文件。硬件抽象層Android的HAL〔硬件抽象層〕是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊。HAL的目的是為了把Androidframework與Linuxkernel隔開,讓Android不至過(guò)度依賴Linuxkernel,以達(dá)成kernelindependent的概念,也讓Androidframework的開發(fā)能在不考慮驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)展開展。HALstub是一種代理人〔proxy〕的概念,stub是以*.so檔的形式存在。Stub向HAL“提供〞操作函數(shù)〔operations〕,并由Androidruntime向HAL取得stub的operations,再callback這些操作函數(shù)。HAL里包含了許多的stub〔代理人〕。Runtime只要說(shuō)明“類型〞,即moduleID,就可以取得操作函數(shù)。編程語(yǔ)言Android是運(yùn)行于Linuxkernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了到達(dá)商業(yè)應(yīng)用,必須移除被GNUGPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到userspace,使得Linuxdriver與Linuxkernel徹底分開。bionic/libc/kernel/并非標(biāo)準(zhǔn)的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所產(chǎn)生的,這樣做是為了保存常數(shù)、數(shù)據(jù)構(gòu)造與宏。目前Android的Linuxkernel控制包括安全〔Security〕,存儲(chǔ)器管理〔MemoryManagement〕,程序管理〔ProcessManagement〕,網(wǎng)絡(luò)堆?!睳etworkStack〕,驅(qū)動(dòng)程序模型〔DriverModel〕等。下載Android源碼之前,先要安裝其構(gòu)建工具Repo來(lái)初始化源碼。Repo是Android用來(lái)輔助Git工作的一個(gè)工具。Android系統(tǒng)的特點(diǎn)與功能Android系統(tǒng)的特點(diǎn)1、開放性。Google與開放手機(jī)聯(lián)盟合作開發(fā)了Android,Google通過(guò)與運(yùn)行商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方面結(jié)成深層次的合作伙伴關(guān)系,希望通過(guò)建設(shè)標(biāo)準(zhǔn)化、開放式的移動(dòng)軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)形成一個(gè)開放式的生態(tài)系統(tǒng)。2、應(yīng)用程序無(wú)界限。Android上的應(yīng)用可以通過(guò)標(biāo)準(zhǔn)API訪問(wèn)核心移動(dòng)設(shè)備功能。通過(guò)互聯(lián)網(wǎng),應(yīng)用程序可以聲明它們的功能可以提供應(yīng)其他應(yīng)用程序使用。3、應(yīng)用程序是在平等的條件下創(chuàng)立的。移動(dòng)設(shè)備上的應(yīng)用程序可以被替換或擴(kuò)展,即使是撥號(hào)程序或主屏幕這樣的核心組件。4、應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)。應(yīng)用程序可以輕松地嵌入HTML、JavaScript和樣式表,還可以通過(guò)WebView顯示網(wǎng)絡(luò)內(nèi)容。5、應(yīng)用程序可以并行運(yùn)行。Android是一種完整的多任務(wù)環(huán)境,應(yīng)用程序可以在其中并行運(yùn)行。在后臺(tái)運(yùn)行時(shí),應(yīng)用程序可以生成通知以引起注意。Android系統(tǒng)的功能1、支持虛擬鍵盤。虛擬鍵盤的出現(xiàn)意味著基于Android1.5或以上版本的移動(dòng)設(shè)備可以同時(shí)支持物理鍵盤和虛擬鍵盤。2、使用Widget實(shí)現(xiàn)桌面的個(gè)性化??梢杂肳idget修飾自己的桌面。大多數(shù)小的web應(yīng)用都是從網(wǎng)絡(luò)上獲得實(shí)時(shí)數(shù)據(jù)并展示給用戶的。Android預(yù)裝了5個(gè)桌面Widget,包括數(shù)字時(shí)鐘、日歷、音樂(lè)播放器、相框和搜索。3、用在線文件夾快速游覽數(shù)據(jù)。類似于OSXLeopard的QuickLook特征,Android的在線文件夾可顯示常見的數(shù)據(jù)條目,比方聯(lián)系人、喜歡的應(yīng)用、E-mail信息、播放列表、書簽、RSS源等,并不需要運(yùn)行系統(tǒng)程序處理特定的數(shù)據(jù)條目。4、視頻錄制和分享。Android還有錄制和分享視頻的功能,對(duì)回放和MPEG-4、3GP等視頻格式也有了更好的支持??梢酝ㄟ^(guò)E-mail、MMS或直接上傳到Y(jié)ouTube等方式來(lái)分享視頻。5、圖片上傳。在線分享圖片需要的點(diǎn)擊更少。完成照相后,當(dāng)瀏覽圖片或選擇Google在線圖片服務(wù)Picasa時(shí),只需輕點(diǎn)“分享〞就會(huì)擁有1Gb的免費(fèi)圖片存儲(chǔ)空間。6、更快、更兼容的游覽器。Android的基于Webkit內(nèi)核的游覽器帶來(lái)了重要的調(diào)速裝置(SpeedPumb),這得益于新的Wenkit渲染引擎和優(yōu)化的Java腳本編譯器(SquireFish).7、VoiceSearch語(yǔ)音搜索。帶有語(yǔ)音識(shí)別技術(shù)的Google手機(jī)已于2008年11月面世,它支持語(yǔ)音搜索功能。該功能增強(qiáng)了默認(rèn)的搜索能力,已超過(guò)純文本搜索。8、立體聲藍(lán)牙和免提。除了增強(qiáng)的免提體驗(yàn),Android還支持立體聲藍(lán)牙(A2Dphe和AVCRP),并有自動(dòng)配對(duì)功能。9、強(qiáng)大的GPS技術(shù)。Android內(nèi)部提供了大量的GPS組件,我們可以很輕松地獲得設(shè)備當(dāng)前的位置等信息,讓導(dǎo)航等功能更加完美。10、Android系統(tǒng)硬件檢測(cè)。Android可自動(dòng)檢測(cè)和修復(fù)SD卡的文件系統(tǒng),允許第三方應(yīng)用顯示Android系統(tǒng)的硬件特征。為了讓用戶下載到與自己的設(shè)備匹配的應(yīng)用,我們可以檢測(cè)用戶設(shè)備的硬件信息,讓滿足應(yīng)用要求的設(shè)備安裝該程序,當(dāng)更多的Android設(shè)備建設(shè)在不同的硬件上時(shí),這個(gè)功能顯得很實(shí)用。Android平臺(tái)與iPhone平臺(tái)的比照過(guò)去智能手機(jī)市場(chǎng)的領(lǐng)先者是WindowsMobile/SmartPhone和BlackBerry,同時(shí)Symbian和Palm也在其中角逐。但隨著iPhone橫空出世,就以簡(jiǎn)單易用,并功能強(qiáng)大,作為了智能手機(jī)的代名詞。近來(lái)android也以其開源、免費(fèi)的特質(zhì)強(qiáng)勢(shì)來(lái)襲,下面就其孰優(yōu)孰劣進(jìn)展一下比照。開發(fā)平臺(tái)的比照對(duì)于iPhone平臺(tái)的開發(fā),首先要熟悉Apple的MACOS或者是Unix系統(tǒng)的開發(fā)根基,iPhone的開發(fā)工具Xcode并不支持Windows平臺(tái),因此開發(fā)者首先要擁有一臺(tái)mac電腦;語(yǔ)言學(xué)習(xí)方面,熟悉C語(yǔ)言的工程師可以省一點(diǎn)力,因?yàn)樵贠bjective-C中,可以直接編寫C程序,唯有用戶接口的局部,一定得仰賴Objective-C。Android采用java開發(fā),因此Android對(duì)系統(tǒng)資源的操作程度已接近PC客戶端開發(fā)。程序兼容性問(wèn)題iPhone獨(dú)此一家,因此可以很好控制應(yīng)用兼容性問(wèn)題,而Android平臺(tái)的手機(jī)聯(lián)盟戰(zhàn)略,便有各家廠商的不同規(guī)格型號(hào)的機(jī)器,因而Google通過(guò)手機(jī)廠商統(tǒng)一硬件的規(guī)格手段到達(dá)兼容性的平衡。不過(guò),也確實(shí)有開發(fā)者擔(dān)憂Android的開放平臺(tái),未來(lái)難保手機(jī)廠商不會(huì)因?yàn)樽陨淼男枨蠖兴{(diào)整,仍可能導(dǎo)致兼容性問(wèn)題發(fā)生。封閉和開放的審核制度封閉和嚴(yán)格的審核一直都是iPhone做為Apple設(shè)計(jì)理念和保證app質(zhì)量的評(píng)審手段之一,在app應(yīng)用開發(fā)完成,上架AppStore上前,Apple也必須審核軟件的內(nèi)容,以防止包含色情與暴力,或者有Bug的軟件,影響整個(gè)市集的質(zhì)量。由于iPhone軟件的銷售與安裝,只能透過(guò)AppStore這個(gè)唯一的管道,有志進(jìn)入IPhone市場(chǎng)的開發(fā)者,也不得不買賬。相較于Apple的封閉,Android就顯得開放許多,AndroidMarket則是被動(dòng)審查機(jī)制(只有被足夠多的用戶舉報(bào),Google才會(huì)對(duì)此進(jìn)展審核),程序上傳幾個(gè)小時(shí)后,使用者就可以下載。事實(shí)上開發(fā)者不經(jīng)由AndroidMarket,也有其他途徑營(yíng)銷。如:安卓市場(chǎng)。封閉與開放的作法各有好處,由Apple把關(guān)且鎖定銷售管道的作法,對(duì)消費(fèi)者而言,可以確保質(zhì)量;而開發(fā)者也省得比擬各市集之間的優(yōu)劣。而Android的開放作法,則有不設(shè)限的好處──開發(fā)者不用擔(dān)憂Apple因?yàn)樽陨砝娴目紤],而駁回軟件上架的申請(qǐng)。消費(fèi)者的選擇自由度也高出很多。UI交互上的差異在傳統(tǒng)手機(jī)時(shí)代,用戶直接用鍵盤、按鍵操作數(shù)據(jù)。iPhone的操作有別于之前傳統(tǒng)手機(jī)的體驗(yàn),iPhone大觸摸屏概念推出,用戶可以直接對(duì)內(nèi)容進(jìn)展操作排除其他中間設(shè)備控制,降低用戶使用門檻,對(duì)內(nèi)容操作也有很直接的體驗(yàn)。Android則保存?zhèn)鹘y(tǒng)手機(jī)的一些特征(返回、搜索、home、menu實(shí)體按鍵),也同樣有大觸摸屏;兩者之間的硬件差異,因此也決定了交互視覺上本質(zhì)的差異;iPhone遵從Apple精簡(jiǎn)設(shè)計(jì)風(fēng)格,用隱喻的視覺方式提示用戶進(jìn)展使用操作,同樣也直觀表達(dá)下一步的操作流程。大局部操作直接和內(nèi)容交互完成,用戶體驗(yàn)統(tǒng)一連貫,典型案例:解鎖。Android有實(shí)體按鍵,承載其余過(guò)多的根本操作,將用戶停留在最重要的內(nèi)容上,因?yàn)橛懈嘤布僮?,也能有更豐富的表現(xiàn),典型案例:軌跡球顏色提醒。缺點(diǎn):局部操作,屏幕與按鍵之間來(lái)回轉(zhuǎn)換。title和導(dǎo)航指引手持移動(dòng)設(shè)備的特性決定屏幕的有限,在應(yīng)用程序的層級(jí)關(guān)系中如何指引用戶完成操作,便尤為重要。iPhone:應(yīng)用程序有信息層級(jí)關(guān)系,iPhone利用title區(qū)域進(jìn)展操作指引,title的左邊是返回。讓用戶明確層級(jí)之間的關(guān)系。Android:頁(yè)面的回退依靠實(shí)體返回按鍵,因此title區(qū)域不必要操作,在視覺上減小了高度,擴(kuò)大了內(nèi)容區(qū)域。缺點(diǎn):沒有一個(gè)好的導(dǎo)航指引。Android平臺(tái)開發(fā)過(guò)程研究Android移動(dòng)平臺(tái)作為21世紀(jì)的新秀,受到了越來(lái)越多的開發(fā)者的追捧,在這股開發(fā)的浪潮中,逐漸形成了一套具有Android特色的開發(fā)流程。由于Android的優(yōu)越性,其開發(fā)顯得非常的有規(guī)律性可尋。大致的開發(fā)流程如下:1、需求分析。作為一個(gè)軟件,它必須有其存在的意義和價(jià)值。而這價(jià)值和意義就需要靠需求分析來(lái)確定。2、功能分析。作為一個(gè)手機(jī)軟件,它的任務(wù)就是給用戶使用的。如何提供最好的用戶體驗(yàn)就值得每一個(gè)程序員深思。這也是衡量一個(gè)程序成功與否的關(guān)鍵所在。3、界面設(shè)計(jì)。作為一個(gè)手機(jī)軟件,它只能在極有限的區(qū)域中顯示自己。如何在有限的空間里面更完美的展現(xiàn)出自己的獨(dú)特之處就顯得尤為重要了。4、系統(tǒng)開發(fā)。作為一個(gè)軟件的主體局部,系統(tǒng)開發(fā)的好壞直接決定了該系統(tǒng)的性能和壽命。5、測(cè)試。在任何一個(gè)軟件開發(fā)行業(yè)中,無(wú)論是J2EE、J2SE、J2ME等等其他開發(fā)中,測(cè)試時(shí)必不可少的一環(huán)。在Android開發(fā)中,由于手機(jī)的高頻率使用,和硬件系統(tǒng)上的缺乏,使得對(duì)軟件的要求更加的嚴(yán)格,這就要求在開發(fā)完成后,在對(duì)其進(jìn)展嚴(yán)格的測(cè)試。而測(cè)試又包括了單元測(cè)試、系統(tǒng)測(cè)試等等方面的測(cè)試。6、發(fā)布。在完成了一個(gè)系統(tǒng)的開發(fā)后,就要將其發(fā)布,只有經(jīng)過(guò)廣闊用戶的考驗(yàn),才算是一個(gè)合格的產(chǎn)品。在Android平臺(tái)中,Google提供了一套完整的發(fā)布機(jī)制——Googlemarket。Android開發(fā)環(huán)境的搭建下載需要用到的工具1、下載JAVA的IDE開發(fā)工具–Eclipse到Eclipse官方網(wǎng)站下載EclipseForJavaEE的最新Windows版本下載頁(yè)面地址::///downloads/,如圖2.1所示:圖2.1下載Eclipse2、下載Java開發(fā)包—JavaSEDevelopmentKit(JDK)JDK6到Sun官方網(wǎng)站下載JDK6,選擇JDK6Update12下載頁(yè)面地址:://java.sun/javase/downloads/index.jsp,如圖2.2所示:圖2.2下載JDK3、下載Android開發(fā)包—AndroidSDK到Google的官方網(wǎng)站下載ForWindows的Android的開發(fā)包下載地址:://dl.google/android/android-sdk_r11-windows下載完需要的工具之后,開場(chǎng)安裝1、安裝Eclipse:下載回來(lái)的Eclipse(eclipse-jee-ganymede-SR2-win32.zip)直接解壓即可2、安裝JDK6:運(yùn)行下載回來(lái)的JSK安裝包(jdk-6u25-windows-i586.exe),一路“下一步〞即可3、安裝Android開發(fā)包(SDK):下載回來(lái)的SDK包(android-sdk_r11-windows.zip)直接解壓即可讓Eclipse自動(dòng)安裝Android開發(fā)插件(ADT-plugin)1、啟動(dòng)安裝完(解壓)后的Eclipse目錄下的Ecplise.exe2、點(diǎn)擊菜單“Help〞->“SoftwareUpdates〞,在翻開的窗口中切換到選項(xiàng)頁(yè)“AvailableSoftware〞3、首先點(diǎn)擊選項(xiàng)“Addsite…〞,然后手動(dòng)輸入以下地址:://dl-ssl.google/android/eclipse/,點(diǎn)擊“OK〞4、剛剛參加的地址,點(diǎn)擊“Install…〞進(jìn)展ADT(AndroidDevelopmentTools)的安裝工作。5、Eclipse此時(shí)會(huì)從參加的地址中自動(dòng)下載跟安裝ADT,稍等一會(huì),安裝完畢后,提示需要重啟Eclipse,點(diǎn)擊“OK〞重啟Eclipse。如圖2.3所示:配置AndroidSDK路徑重啟Eclipse后,點(diǎn)擊菜單“Window〞->“Preference〞,翻開配置窗口,在左邊選中Android,在右邊輸入AndroidSDK的路徑(剛剛步驟下載的AndroidSDK解壓出來(lái)的目錄),點(diǎn)擊“OK〞,如圖2.4所示:圖2.3安裝ADT圖2.4配置AndroidSDK路徑創(chuàng)立AVD為使android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)立AVD。在eclipse中選擇Windows>AndroidSDKandAVDManager,點(diǎn)擊左側(cè)面板的VirtualDevices,再右側(cè)點(diǎn)擊New。填入Name,選擇Target的API,SDCard大小任意〔推薦256M〕,Skin隨便選,Hardware目錄保持默認(rèn)值。點(diǎn)擊CreateAVD即可完成創(chuàng)立AVD。本系統(tǒng)是在AndroidSDK2.1下完成的。自此Android開發(fā)環(huán)境搭建完成。相關(guān)技術(shù)理論RSS技術(shù)簡(jiǎn)介信息傳播工具多種多樣,包括可以免費(fèi)收聽的無(wú)線電播送、公共和有線電視、印刷媒體,甚至包括Internet這樣顛覆性的技術(shù),以及其龐大的Web站點(diǎn)和電子郵件訂閱。雖然選擇很多,但是這些工具都存在一個(gè)問(wèn)題:很難在龐雜的海量數(shù)據(jù)中準(zhǔn)確查找到真正感興趣的信息和價(jià)值。幸運(yùn)的是,RSS可以幫助我們解決這個(gè)問(wèn)題。RSS是“ReallySimpleSyndication〞的縮寫。RSS是一種內(nèi)容發(fā)布者用來(lái)發(fā)布信息的XML數(shù)據(jù)格式,這些信息經(jīng)過(guò)了分類并適合人機(jī)閱讀。RSS提要通常使用諸如新聞閱讀器這種人類可讀的友好格式進(jìn)展處理并顯示給用戶,本教程中構(gòu)建的應(yīng)用程序就是這樣一種新聞閱讀器。RSS提要同樣可以供計(jì)算機(jī)使用,從而生成后續(xù)的、聚合的信息源。舉例來(lái)說(shuō),定期檢索并提供應(yīng)旅行社本地預(yù)訂系統(tǒng)的租賃列表就是一個(gè)機(jī)器使用RSS提要的例子。在討論新聞內(nèi)容時(shí)經(jīng)常會(huì)提到RSS,然而,除新聞以外,這種格式可用于組織和發(fā)布其他很多類型的信息。例如,很多Web站點(diǎn)都發(fā)布可用的pod-cast的RSS提要,從而發(fā)布音頻和視頻內(nèi)容。Handango是一個(gè)流行的移動(dòng)軟件和內(nèi)容的在線商店,它根據(jù)移動(dòng)平臺(tái)分類,提供新的流行軟件標(biāo)題的提要。例如,提供針對(duì)Windows?Mobile、Blackberry、Palm和其他平臺(tái)的提要。用不了多久,很可能就會(huì)提供針對(duì)Android應(yīng)用程序的提要了!RSS的格式是XML數(shù)據(jù),這表示數(shù)據(jù)本身就包含描述性元素,也就是說(shuō)它是自包含的。隨著行業(yè)的逐步標(biāo)準(zhǔn)化,XML構(gòu)造在過(guò)去幾年也經(jīng)歷了一些變化。最新的版本也是應(yīng)用最廣的版本是2.0。RSS2.0是一種相對(duì)簡(jiǎn)單的XML構(gòu)造,很容易由計(jì)算機(jī)程序解析。RSS是站點(diǎn)用來(lái)和其他站點(diǎn)之間共享內(nèi)容的一種簡(jiǎn)易方式〔也叫聚合內(nèi)容〕,通常被用于新聞和其他按順序排列的網(wǎng)站,例如Blog。一段工程的介紹可能包含新聞的全部介紹,Blogpost等等?;蛘邇H僅是額外的內(nèi)容或者簡(jiǎn)短的介紹。這些工程的鏈接通常都能鏈接到全部的內(nèi)容。網(wǎng)絡(luò)用戶可以在客戶端借助于支持RSS的新聞聚合工具軟件〔例如NewzCrawler、FeedDemon〕,在不翻開網(wǎng)站內(nèi)容頁(yè)面的情況下閱讀支持RSS輸出的網(wǎng)站內(nèi)容。網(wǎng)站提供RSS輸出,有利于讓用戶發(fā)現(xiàn)網(wǎng)站內(nèi)容的更新。RSS的優(yōu)點(diǎn)。如果沒有RSS,用戶就不得不每日都來(lái)您的網(wǎng)站檢查新的內(nèi)容。對(duì)許多用戶來(lái)說(shuō)這樣太費(fèi)時(shí)了。通過(guò)RSSfeed〔RSS通常被稱為Newsfeed或RSSfeed〕,用戶們可以使用RSS聚合器來(lái)更快地檢查您的網(wǎng)站更新〔RSS聚合器是用來(lái)聚集并分類RSSfeed的網(wǎng)站或軟件〕。由于RSS數(shù)據(jù)很小巧并可快速加載,它可輕易地被類似移動(dòng)或PDA的服務(wù)使用。擁有相似內(nèi)容的網(wǎng)站環(huán)〔Web-rings〕可以輕易地在它們的網(wǎng)站共享內(nèi)容,使這些網(wǎng)站更出色更有價(jià)值。Pull解析算法研究構(gòu)建RSS閱讀器應(yīng)用程序的核心操作就是獲取并處理XML數(shù)據(jù)。當(dāng)前GoogleAndroid處理讀取XML數(shù)據(jù)有三種主流方式:DOM解析、Pull解析、SAX解析。下面來(lái)對(duì)這三種解析方法來(lái)進(jìn)展比擬:DOM解析XML文件時(shí),會(huì)將XML文件的所有內(nèi)容讀取到內(nèi)存中,然后允許您使用DOMAPI遍歷XML樹、檢索所需的數(shù)據(jù)。使用DOM操作XML的代碼看起來(lái)比擬直觀,并且,在某些方面比基于SAX的實(shí)現(xiàn)更加簡(jiǎn)單。但是,因?yàn)镈OM需要將XML文件的所有內(nèi)容讀取到內(nèi)存中,所以內(nèi)存的消耗比擬大,特別是對(duì)于運(yùn)行Android的移動(dòng)設(shè)備來(lái)說(shuō),因?yàn)樵O(shè)備的資源比擬珍貴,所以建議還是采用SAX或者PULL來(lái)解析XML文件,當(dāng)然,如果XML文件的內(nèi)容比擬小的時(shí)候采用DOM是可行的。SAX是一個(gè)解析速度快并且占用內(nèi)存少的xml解析器,非常適合用于Android等移動(dòng)設(shè)備。SAX解析XML文件采用的是事件驅(qū)動(dòng),也就是說(shuō),它并不需要解析完整個(gè)文檔,在按內(nèi)容順序解析文檔的過(guò)程中,SAX會(huì)判斷當(dāng)前讀到的字符是否合法XML語(yǔ)法中的某局部,如果符合就會(huì)觸發(fā)事件。所謂事件,其實(shí)就是一些回調(diào)〔callback〕方法,這些方法(事件)定義在ContentHandler接口。如果在一個(gè)XML文檔中我們只需要前面一局部數(shù)據(jù),假設(shè)使用SAX方式或DOM方式會(huì)對(duì)整個(gè)文檔進(jìn)展解析,盡管XML文檔中后面的大局部數(shù)據(jù)我們其實(shí)都不需要解析,因此這樣實(shí)際上就浪費(fèi)了處理資源。因此使用PULL方式比擬適宜。Pull解析器和SAX解析器雖有區(qū)別但也有相似性。他們的區(qū)別為:SAX解析器的工作方式是自動(dòng)將事件推入注冊(cè)的事件處理器進(jìn)展處理,因此你不能控制事件的處理主動(dòng)完畢;而Pull解析器的工作方式為允許你的應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,正因?yàn)槭侵鲃?dòng)獲取事件,因此可以在滿足了需要的條件后不再獲取事件,完畢解析。這是他們主要的區(qū)別。而他們的相似性在運(yùn)行方式上,Pull解析器也提供了類似SAX的事件,開場(chǎng)文檔START_DOCUMENT和完畢文檔END_DOCUMENT,開場(chǎng)元素START_TAG和完畢元素END_TAG,遇到元素內(nèi)容TEXT等,但需要調(diào)用next()方法提取它們〔主動(dòng)提取事件〕。Android系統(tǒng)中和Pull方式相關(guān)的包為org.xmlpull.v1,在這個(gè)包中提供了Pull解析器的工廠類XmlPullParserFactory和Pull解析器XmlPullParser,XmlPullParserFactory實(shí)例調(diào)用newPullParser方法創(chuàng)立XmlPullParser解析器實(shí)例,接著XmlPullParser實(shí)例就可以調(diào)用getEventType()和next()等方法依次主動(dòng)提取事件,并根據(jù)提取的事件類型進(jìn)展相應(yīng)的邏輯處理。另外Pull方式比擬簡(jiǎn)單,而且可以根據(jù)判斷停頓解析〔DOM和SAX都需要對(duì)文件的文章解析中途不能停頓〕。綜合考慮,本系統(tǒng)的實(shí)現(xiàn)用到的是Pull解析算法來(lái)解析數(shù)據(jù)源。Android平臺(tái)下RSS閱讀器的詳細(xì)分析設(shè)計(jì)與實(shí)現(xiàn)問(wèn)題的提出需求分析1、系統(tǒng)開發(fā)背景。在信息高速開展的今天,人們對(duì)信息非常的重視,希望能夠隨時(shí)隨地的獲取即時(shí)更新的信息。而新聞閱讀器剛好可以滿足人們的要求。在傳統(tǒng)的平臺(tái)例如IPhone,有許多類似的程序,都受到了用戶的好歡送。通過(guò)武漢某公司在Googleandroidmarket上面的程序的調(diào)查,發(fā)現(xiàn)關(guān)于信息方面的程序普遍受到廣闊用戶的歡送。因此本系統(tǒng)將能滿足人們對(duì)信息的需求。2、系統(tǒng)功能的描述1)頻道的切換:用戶能按照自己的需求來(lái)切換自己所需要的頻道。2)新聞的閱讀:當(dāng)用戶翻開一個(gè)新聞的時(shí)候,用戶能準(zhǔn)確無(wú)誤并且方便的讀取到新聞的內(nèi)容。3)新聞的收藏:當(dāng)用戶覺得某一個(gè)新聞?dòng)腥さ臅r(shí)候,用戶能將其添加到自己所喜歡的新聞列表中。4)新聞的更新:當(dāng)RSS更新以后,程序能做相應(yīng)的更新,能與網(wǎng)絡(luò)上的內(nèi)容保持一致性。做到即時(shí)更新。系統(tǒng)功能構(gòu)造根據(jù)系統(tǒng)需求描敘和系統(tǒng)數(shù)據(jù)流圖,得出系統(tǒng)功能構(gòu)造如圖4.1所示:RSS閱讀器新聞?lì)l道顯示與切換新聞的顯示新聞的收藏與刪除圖4.1系統(tǒng)功能構(gòu)造圖解決方案為了解決上一節(jié)所提出的需求分析,我們提出下面的解決方案,它遵循了android平臺(tái)開發(fā)的規(guī)律,具體流程如圖4.2所示:數(shù)據(jù)源的選取數(shù)據(jù)源的選取數(shù)據(jù)的解析系統(tǒng)的布局設(shè)計(jì)系統(tǒng)穩(wěn)定性的設(shè)計(jì)與檢測(cè)開場(chǎng)完畢圖4.2系統(tǒng)解決方案流程圖在開發(fā)前期,筆者先找到了適合作為新聞源的RSS源的數(shù)據(jù)源,并找到最優(yōu)的解析算法——Pull。在數(shù)據(jù)準(zhǔn)備完成后,筆者為基于Googleandroid移動(dòng)平臺(tái)的新聞閱讀器的界面做了詳細(xì)的規(guī)劃。在完成這些以后,筆者對(duì)系統(tǒng)的穩(wěn)定性進(jìn)展了相關(guān)的調(diào)研,然后做出了相應(yīng)的假設(shè),并進(jìn)展驗(yàn)證,最后通過(guò)驗(yàn)證的結(jié)果來(lái)對(duì)系統(tǒng)的穩(wěn)定性做了相應(yīng)的檢測(cè)和操作。主要功能詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)RSS數(shù)據(jù)源的選取基于Android平臺(tái)的RSS閱讀器作為一款新聞閱讀器,對(duì)RSS源的要求及其苛刻:(1)RSS源必須是穩(wěn)定的,除非出現(xiàn)特殊情況,否則不會(huì)出現(xiàn)無(wú)法讀取的情況。(2)RSS源的更新頻率必須盡量的高,能做到將第一手的新聞資料上傳更新,使得用戶能最早的獲得相關(guān)新聞資料。(3)RSS源的訪問(wèn)速度。由于基于GoogleAndroid平臺(tái)的新聞閱讀器的使用對(duì)象是手機(jī),而手機(jī)則是通過(guò)GPS、WIFI等其他的無(wú)線網(wǎng)絡(luò)訪問(wèn)RSS源,所以對(duì)RSS源的訪問(wèn)速度有較高的要求。(4)RSS源的格式。由于讀取RSS源的內(nèi)容是通過(guò)解析相應(yīng)的XML文件而獲得的,所以基于GoogleAndroid平臺(tái)的新聞閱讀器對(duì)RSS源的格式有非常高的要求,既當(dāng)RSS源的格式一旦固定,無(wú)論是將來(lái)的更新或者是添加等其他操作的時(shí)候RSS源的格式必須保持一定?;谝陨蠋c(diǎn),加上本人的個(gè)人喜好,并經(jīng)過(guò)測(cè)試,本系統(tǒng)選擇了新浪RSS源。RSS源的解析構(gòu)建RSS閱讀器應(yīng)用程序的核心操作是獲取并處理XML數(shù)據(jù)。當(dāng)前GoogleAndroid處理讀取XML數(shù)據(jù)有三種主流方式:DOM解析、Pull解析、SAX解析。下面來(lái)對(duì)這三種解析方法來(lái)進(jìn)展比擬:DOM解析XML文件時(shí),會(huì)將XML文件的所有內(nèi)容讀取到內(nèi)存中,然后允許您使用DOMAPI遍歷XML樹、檢索所需的數(shù)據(jù)。使用DOM操作XML的代碼看起來(lái)比擬直觀,并且,在某些方面比基于SAX的實(shí)現(xiàn)更加簡(jiǎn)單。但是,因?yàn)镈OM需要將XML文件的所有內(nèi)容讀取到內(nèi)存中,所以內(nèi)存的消耗比擬大,特別對(duì)于運(yùn)行Android的移動(dòng)設(shè)備來(lái)說(shuō),因?yàn)樵O(shè)備的資源比擬珍貴,所以建議還是采用SAX或者PULL來(lái)解析XML文件,當(dāng)然,如果XML文件的內(nèi)容比擬小的時(shí)候采用DOM是可行的。SAX是一個(gè)解析速度快并且占用內(nèi)存少的xml解析器,非常適合用于Android等移動(dòng)設(shè)備。SAX解析XML文件采用的是事件驅(qū)動(dòng),也就是說(shuō),它并不需要解析完整個(gè)文檔,在按內(nèi)容順序解析文檔的過(guò)程中,SAX會(huì)判斷當(dāng)前讀到的字符是否合法XML語(yǔ)法中的某局部,如果符合就會(huì)觸發(fā)事件。所謂事件,其實(shí)就是一些回調(diào)〔callback〕方法,這些方法(事件)定義在ContentHandler接口。如果在一個(gè)XML文檔中我們只需要前面一局部數(shù)據(jù),假設(shè)使用SAX方式或DOM方式會(huì)對(duì)整個(gè)文檔進(jìn)展解析,盡管XML文檔中后面的大局部數(shù)據(jù)我們其實(shí)都不需要解析,因此這樣實(shí)際上就浪費(fèi)了處理資源。使用PULL方式正適宜。Pull解析器和SAX解析器雖有區(qū)別但也有相似性。他們的區(qū)別為:SAX解析器的工作方式是自動(dòng)將事件推入注冊(cè)的事件處理器進(jìn)展處理,因此你不能控制事件的處理主動(dòng)完畢;而Pull解析器的工作方式為允許你的應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,正因?yàn)槭侵鲃?dòng)獲取事件,因此可以在滿足了需要的條件后不再獲取事件,完畢解析。這是他們主要的區(qū)別。而他們的相似性在運(yùn)行方式上,Pull解析器也提供了類似SAX的事件,開場(chǎng)文檔START_DOCUMENT和完畢文檔END_DOCUMENT,開場(chǎng)元素START_TAG和完畢元素END_TAG,遇到元素內(nèi)容TEXT等,但需要調(diào)用next()方法提取它們〔主動(dòng)提取事件〕。Android系統(tǒng)中和Pull方式相關(guān)的包為org.xmlpull.v1,在這個(gè)包中提供了Pull解析器的工廠類XmlPullParserFactory和Pull解析器XmlPullParser,XmlPullParserFactory實(shí)例調(diào)用newPullParser方法創(chuàng)立XmlPullParser解析器實(shí)例,接著XmlPullParser實(shí)例就可以調(diào)用getEventType()和next()等方法依次主動(dòng)提取事件,并根據(jù)提取的事件類型進(jìn)展相應(yīng)的邏輯處理。//創(chuàng)立XmlPullParser,有兩種方式//方式一:使用工廠類XmlPullParserFactoryXmlPullParserFactorypullFactory=XmlPullParserFactory.newInstance();XmlPullParserxmlPullParser=pullFactory.newPullParser();//方式二:使用Android提供的實(shí)用工具類android.util.XmlXmlPullParserxmlPullParser=Xml.newPullParser();XmlPullParser.setInput(InputStreaminputStream,StringinputEncoding)解析對(duì)應(yīng)的輸入文件XmlPullParser.getEventType()得到元素PULL方式比擬簡(jiǎn)單,而且可以根據(jù)判斷停頓解析〔DOM和SAX都需要對(duì)文件的文章解析中途不能停頓〕。因此在本RSS閱讀器系統(tǒng)中,RSS數(shù)據(jù)源的解析用到的是方式一使用工廠類XmlPullParserFactory來(lái)創(chuàng)立XmlPullParser。系統(tǒng)界面的設(shè)計(jì)在講述系統(tǒng)界面的設(shè)計(jì)之前,我們先來(lái)介紹一下Android中的四大組件。對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由四種構(gòu)造塊組織而成的,這四種構(gòu)造塊如下ActivityIntentReceiverServiceContentProvider但是,并不是每一個(gè)Android應(yīng)用程序都需要這四種構(gòu)造塊,這不是必須的,某些時(shí)候,我們只需要這四種中的幾種組合成我們的應(yīng)用。Activity:Activity是Android構(gòu)造塊中最根本的一種,在應(yīng)用中,一個(gè)activity通常就是一個(gè)單獨(dú)的屏幕。每一個(gè)activity都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類,并且繼承于Activity這個(gè)基類。這個(gè)activity類將會(huì)顯示由幾個(gè)Views控件組成的用戶接口,并對(duì)事件做出響應(yīng)。大部份的應(yīng)用都會(huì)包含多個(gè)的屏幕。例如,一個(gè)短消息應(yīng)用程序?qū)?huì)有一個(gè)屏幕用于顯示聯(lián)系人列表,第二個(gè)屏幕用于寫短消息,同時(shí)還會(huì)有用于瀏覽舊短消息及進(jìn)展系統(tǒng)設(shè)置的屏幕。每一個(gè)這樣的屏幕,就是一個(gè)activity。從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)單的。在一些應(yīng)用中,一個(gè)屏幕甚至?xí)祷刂到o前一個(gè)屏幕。當(dāng)一個(gè)新的屏幕翻開后,前一個(gè)屏幕將會(huì)暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個(gè)屏幕。當(dāng)屏幕不再使用時(shí),還可以從歷史堆棧中刪除。默認(rèn)情況下,Android將會(huì)保存從主屏幕到每一個(gè)應(yīng)用的運(yùn)行屏幕。Android使用了Intent這個(gè)特殊類,實(shí)現(xiàn)在屏幕與屏幕之間移動(dòng)。Intent類用于描述一個(gè)應(yīng)用將會(huì)做什么事。在Intent的描述構(gòu)造中,有兩個(gè)最重要的局部:動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類型有:MAIN〔activity的門戶〕、VIEW、PICK、EDIT等。而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式進(jìn)展表示。例如:要查看一個(gè)人的聯(lián)系方式,你需要?jiǎng)?chuàng)立一個(gè)動(dòng)作類型為VIEW的intent,以及一個(gè)表示這個(gè)人的URI。與之有關(guān)系的一個(gè)類叫IntentFilter。相對(duì)于intent是一個(gè)有效的做某事的請(qǐng)求,一個(gè)intentfilter則用于描述一個(gè)activity〔或者IntentReceiver〕能夠操作哪些intent。一個(gè)activity如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè)IntentFilter,這個(gè)IntentFilter要知道怎么去處理VIEW動(dòng)作和表示一個(gè)人的URI。IntentFilter需要在AndroidManifest.xml中定義。通過(guò)解析各種intent,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)單的。當(dāng)向前導(dǎo)航時(shí),activity將會(huì)調(diào)用startActivity(IntentmyIntent)方法。然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對(duì)應(yīng)的activity。新的activity接收到myIntent的通知后,開場(chǎng)運(yùn)行。當(dāng)startActivity方法被調(diào)用將觸發(fā)解析myIntent的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵好處:A、Activities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個(gè)請(qǐng)求;B、Activities可以在任何時(shí)候被一個(gè)具有一樣IntentFilter的新的Activity取代Intentreceiver:當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€(gè)外部的事件〔如當(dāng)呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí),或者到了晚上時(shí)〕做出響應(yīng),你可以使用一個(gè)IntentReceiver。雖然IntentReceiver在感興趣的事件發(fā)生時(shí),會(huì)使用NotificationManager通知用戶,但它并不能生成一個(gè)UI。IntentReceiver在AndroidManifest.xml中注冊(cè),但也可以在代碼中使用Context.registerReceiver()進(jìn)展注冊(cè)。當(dāng)一個(gè)intentreceiver被觸發(fā)時(shí),你的應(yīng)用不必對(duì)請(qǐng)求調(diào)用intentreceiver,系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)你的應(yīng)用。各種應(yīng)用還可以通過(guò)使用Context.broadcastIntent()將它們自己的intentreceiver播送給其它應(yīng)用程序。Service:一個(gè)Service是一段長(zhǎng)生命周期的,沒有用戶界面的程序。比擬好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。在一個(gè)媒體播放器的應(yīng)用中,應(yīng)該會(huì)有多個(gè)activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂(lè)重放這個(gè)功能并沒有對(duì)應(yīng)的activity,因?yàn)槭褂谜弋?dāng)然會(huì)認(rèn)為在導(dǎo)航到其它屏幕時(shí)音樂(lè)應(yīng)該還在播放的。在這個(gè)例子中,媒體播放器這個(gè)activity會(huì)使用Context.startService()來(lái)啟動(dòng)一個(gè)service,從而可以在后臺(tái)保持音樂(lè)的播放。同時(shí),系統(tǒng)也將保持這個(gè)service一直執(zhí)行,直到這個(gè)service運(yùn)行完畢。另外,我們還可以通過(guò)使用Context.bindService()方法,連接到一個(gè)service上〔如果這個(gè)service還沒有運(yùn)行將啟動(dòng)它〕。當(dāng)連接到一個(gè)service之后,我們還可以service提供的接口與它進(jìn)展通訊。拿媒體播放器這個(gè)例子來(lái)說(shuō),我們還可以進(jìn)展暫停、重播等操作。ContentProvider:應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件中、SQL數(shù)據(jù)庫(kù)中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時(shí),ContentProvider將會(huì)很有用。一個(gè)ContentProvider類實(shí)現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此ContentProvider處理的各種數(shù)據(jù)類型。下面開場(chǎng)講述本RSS閱讀器主界面的設(shè)計(jì)。先看看整個(gè)系統(tǒng)的架構(gòu)流程圖如圖4.3所示:MainActivityMainActivityNewsView主菜單界面新聞大類新聞小類新聞內(nèi)容頁(yè)面顯示新聞標(biāo)題圖4.3RSS閱讀器系統(tǒng)架構(gòu)流程圖MainActivity是程序的主體局部,整個(gè)程序的執(zhí)行從這里開場(chǎng),在MainActivity里調(diào)用NewsCategory.java中的方法,進(jìn)入NewsView,在NewsView中展示主菜單的布局,包括主界面和新聞大類,新聞小類的顯示可以通過(guò)新聞大類的頻道切換來(lái)完成,新聞大類和新聞小類是分別是在GetNewsMenu.java和GetNewsTitle.java中用pull解析法獲取RSS數(shù)據(jù)源,點(diǎn)擊新聞標(biāo)題以后可以進(jìn)入新聞頁(yè)面閱讀新聞內(nèi)容。由于RSS源是從新浪網(wǎng)獲取,而且為了迎合不同人群的不同喜好的新聞?lì)愋?,所以主界面可以多設(shè)計(jì)幾個(gè)新聞?lì)悇e選擇的菜單,本系統(tǒng)仿照新浪首頁(yè)的菜單顯示方式,主界面如圖4.4所示:圖4.4RSS閱讀器主界面1點(diǎn)擊向左或者向右可以獲得更多的新聞?lì)悇e,如圖4.5和圖4.6所示:圖4.5RSS閱讀器主界面2圖4.6RSS閱讀器主界面3其中“新聞中心〞包含了所有類別,而且在進(jìn)入該RSS閱讀器的時(shí)候,光標(biāo)會(huì)默認(rèn)的停在“新聞中心〞上,每個(gè)頻道下面都有對(duì)應(yīng)的新聞小類,新聞小類下面才是一條條新聞的標(biāo)題?,F(xiàn)在先介紹頻道之間的切換,上圖中的向左向右鍵便是用來(lái)實(shí)現(xiàn)頻道切換功能的,下面是實(shí)現(xiàn)頻道切換的關(guān)鍵代碼:publicvoidonClick(Viewv){switch(v.getId()){caseR.id.main_backward_imageView:mViewFlipper.showPrevious();break;caseR.id.main_next_imageView:mViewFlipper.showNext();break;default:break; }if(v.getId()>=R.id.tv01&&v.getId()<=R.id.tv15){ Log.d(this.toString(),"onClick"); TextViewtv=(TextView)findViewById(v.getId());list=map.get(tv.getText().toString().replaceAll("\n","").replaceAll("",""));if(list!=null){mListView.setAdapter(newDemoListAdapter(this,list)); }else{ Log.e(LOG,"List<NewsCategory>isnull"); } } }上述代碼中的switch語(yǔ)句便是用來(lái)實(shí)現(xiàn)頻道切換的,其中上一頁(yè)的ID是R.id.main_backward_imageView,當(dāng)程序執(zhí)行到這個(gè)case的時(shí)候,便調(diào)用showPrevious〔〕方法來(lái)顯示前一頁(yè)的主菜單內(nèi)容,圖4.4的前一頁(yè)是圖4.6;同樣的,下一頁(yè)的ID是R.id.main_next_imageView,當(dāng)程序執(zhí)行到這個(gè)case的時(shí)候,便調(diào)用showNext〔〕方法來(lái)顯示后一頁(yè)的內(nèi)容,圖4.4的后一頁(yè)是圖4.5。其實(shí)包括以上15個(gè)新聞?lì)悇e在內(nèi),每個(gè)選項(xiàng)都對(duì)應(yīng)了一個(gè)屬于自己的ID,即“新聞中心〞、“體育頻道〞、……、“視頻頻道〞的ID分別是R.id.tv01……R.id.tv15,在主程序中使用ID來(lái)進(jìn)展調(diào)用,所有這些ID對(duì)應(yīng)的選項(xiàng)都包含在main.xml中。上述代碼中的if語(yǔ)句實(shí)現(xiàn)了當(dāng)點(diǎn)擊所有這些新聞?lì)l道圖標(biāo)時(shí)程序應(yīng)該調(diào)用的方法。新聞閱讀界面設(shè)計(jì)在新聞顯示界面我們采用GoogleAndroid比擬流行的WebView來(lái)進(jìn)展顯示,下面以“體育頻道〞為例,效果如圖4.7所示:圖4.7點(diǎn)擊“體育頻道〞以后的界面顯示實(shí)現(xiàn)這個(gè)界面的關(guān)鍵代碼包含在GetNewsMenu.java里,通過(guò)pull解析方法使用工廠類XmlPullParserFactory創(chuàng)立XmlPullParser來(lái)解析從新浪網(wǎng)RSS源里讀取的xml數(shù)據(jù),關(guān)鍵代碼如下:publicclassGetNewsMenu{publicstaticMap<String,List<NewsCategory>>PullParseXML()throwsException{List<NewsCategory>listNews=null; NewsCategorynewsCategory=null; StringmapKey=null; XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance(); XmlPullParserxmlPullParser=pullParserFactory.newPullParser(); Log.e("PullParseXML","getXML"); xmlPullParser.setInput(GetNewsMenu.class.getClassLoader().getResourceAsStream("sina_news.xml"),"UTF-8");Log.e("PullParseXML","PullParseXMLstart");inteventType=xmlPullParser.getEventType();while(eventType!=XmlPullParser.END_DOCUMENT){ StringnodeName=xmlPullParser.getName();switch(eventType){caseXmlPullParser.START_DOCUMENT:break;caseXmlPullParser.START_TAG:if("item".equals(nodeName)){ newsCategory=newNewsCategory(); }if("title".equals(nodeName)&&newsCategory!=null){ newsCategory.setTitle(xmlPullParser.nextText()); }if("link".equals(nodeName)&&newsCategory!=null){ newsCategory.setLink(xmlPullParser.nextText()); }break;caseXmlPullParser.END_TAG:if("item".equals(nodeName)){ listNewsTitle.add(newsCategory); }break;default:break; } eventType=xmlPullParser.next(); }returnlistNewsTitle; }}}下面來(lái)談?wù)劷馕鲞^(guò)程,這段代碼首先使用工廠類XmlPullParserFactory創(chuàng)立XmlPullParser,然后通過(guò)調(diào)用XmlPullParserFactory.newInstance()方法來(lái)獲取XmlPullParser的實(shí)例,設(shè)置好輸入流XML文件裝載器后開場(chǎng)while循環(huán),pull解析器讀到的XML返回的數(shù)字如下所示:讀取到xml的聲明返回?cái)?shù)字0START_DOCUMENT;讀取到xml的完畢返回?cái)?shù)字1END_DOCUMENT;讀取到xml的開場(chǎng)標(biāo)簽返回?cái)?shù)字2START_TAG;讀取到xml的完畢標(biāo)簽返回?cái)?shù)字3END_TAG;讀取到xml的文本返回?cái)?shù)字4TEXT通過(guò)while循環(huán)中的switch語(yǔ)句中的不同case來(lái)判斷元素是否是START_DOCUMENT、END_DOCUMENT、START_TAG、END_TAG、TEXT中的一種,再進(jìn)展相應(yīng)解析,只要這個(gè)事件返回的不是1我們就一直讀取xml文件。每一個(gè)case在break以后,都會(huì)調(diào)用xmlPullParser.next()方法,依次主動(dòng)提取事件,并根據(jù)提取的事件類型進(jìn)展相應(yīng)的邏輯處理?,F(xiàn)在我們?cè)谛侣刴enu菜單里可以選擇自己感興趣的體育新聞,例如點(diǎn)擊“英超〞以后,界面效果如圖4.8所示。這個(gè)界面顯示的都是新聞標(biāo)題,同樣是通過(guò)pull解析方法使用工廠類XmlPullParserFactory創(chuàng)立XmlPullParser來(lái)解析從新浪網(wǎng)RSS源里讀取的xml數(shù)據(jù),方法和技術(shù)與前面介紹的根本一致,這里就不再贅述。圖4.8點(diǎn)擊“英超〞以后的界面顯示此時(shí)便可以根據(jù)自己的喜好來(lái)看標(biāo)題選擇自己感興趣的新聞了,至于新聞條目的上下拉動(dòng)可以通過(guò)鼠標(biāo)滾輪來(lái)實(shí)現(xiàn),比方,我們想知道“曼聯(lián)垂涎天王揚(yáng)言不購(gòu)強(qiáng)援就離隊(duì)清洗7人可獲4400萬(wàn)〞這個(gè)新聞標(biāo)題中來(lái)自英格蘭足球超級(jí)聯(lián)賽的曼聯(lián)隊(duì)所“垂涎〞的“天王〞到底是誰(shuí),可以點(diǎn)擊此新聞標(biāo)題來(lái)閱讀新聞內(nèi)容,如圖4.9所示。圖4.9RSS閱讀器中新聞內(nèi)容網(wǎng)頁(yè)顯示這些新聞都是從新浪RSS源讀取的,局部源的網(wǎng)址如下所示〔這里只包括了“體育頻道〞中從“體育要聞匯總〞到“籃球新聞〞的所有新聞?lì)悇e的RSS源鏈接〕:……<newstitle="體育頻道"><outlinetitle="體育要聞匯總"xmlUrl="://rss.sina.cn/roll
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于孩子撫養(yǎng)權(quán)的離婚合同書
- 貨物采購(gòu)合同補(bǔ)充協(xié)議
- 設(shè)備銷售與購(gòu)買合同范文
- 車險(xiǎn)綜合保險(xiǎn)合同示例
- 服務(wù)合同預(yù)付款借款范本
- 歌手簽約演出服務(wù)合同
- 服裝采購(gòu)代理合同
- 大型建筑機(jī)械租賃合同樣本范本
- 城鄉(xiāng)結(jié)合部三方共建項(xiàng)目合同
- 商鋪?zhàn)赓U合同規(guī)范樣本
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)附答案
- 《高鐵乘務(wù)安全管理與應(yīng)急處置(第3版)》全套教學(xué)課件
- 歷年湖北省公務(wù)員筆試真題2024
- 學(xué)校食品安全長(zhǎng)效管理制度
- 2.2 說(shuō)話要算數(shù) 第二課時(shí) 課件2024-2025學(xué)年四年級(jí)下冊(cè)道德與法治 統(tǒng)編版
- 滋補(bǔ)品項(xiàng)目效益評(píng)估報(bào)告
- 提綱作文(解析版)- 2025年天津高考英語(yǔ)熱點(diǎn)題型專項(xiàng)復(fù)習(xí)
- 2025年南京機(jī)電職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年春新人教版歷史七年級(jí)下冊(cè)全冊(cè)課件
- 2025年浙江臺(tái)州機(jī)場(chǎng)管理有限公司招聘筆試參考題庫(kù)含答案解析
- 《工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)》(2002年修訂本)
評(píng)論
0/150
提交評(píng)論