安卓簡(jiǎn)易PDF閱讀器的研究與設(shè)計(jì)開(kāi)發(fā)_第1頁(yè)
安卓簡(jiǎn)易PDF閱讀器的研究與設(shè)計(jì)開(kāi)發(fā)_第2頁(yè)
安卓簡(jiǎn)易PDF閱讀器的研究與設(shè)計(jì)開(kāi)發(fā)_第3頁(yè)
安卓簡(jiǎn)易PDF閱讀器的研究與設(shè)計(jì)開(kāi)發(fā)_第4頁(yè)
安卓簡(jiǎn)易PDF閱讀器的研究與設(shè)計(jì)開(kāi)發(fā)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余37頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器簡(jiǎn)易PDF閱讀器摘要在科技日益發(fā)達(dá)的今天,社會(huì)競(jìng)爭(zhēng)越來(lái)越激烈,這要求人們不斷的攝取信息來(lái)充實(shí)自己。要求人們能隨時(shí)隨地的了解并獲取所需的信息。在這種情況下,電子書閱讀器剛好滿足了人們便捷地獲取信息的需求。本文設(shè)計(jì)的簡(jiǎn)易PDF閱讀器是基于Android平臺(tái)設(shè)計(jì)的,Android平臺(tái)是目前發(fā)展最快、最具市場(chǎng)前景的智能手機(jī)操作系統(tǒng)。本系統(tǒng)是根據(jù) GoogleAndroid平臺(tái)用戶的喜好和其平臺(tái)的特性而設(shè)計(jì)的,在GoogleAndroid平臺(tái)自帶的SD幽境下,運(yùn)用Eclipse,Photoshop等相關(guān)工具進(jìn)行開(kāi)發(fā)的。本文介紹了GoogleAndroid開(kāi)發(fā)的流程,討論了基于 Android平臺(tái)應(yīng)用程序開(kāi)發(fā)的關(guān)鍵技術(shù),對(duì)簡(jiǎn)易PDF閱讀器做了詳細(xì)的需求分析,并重點(diǎn)介紹了基于Android平臺(tái)的手機(jī)電子書閱讀器的總體設(shè)計(jì),主要包括手機(jī)電子書閱讀器的架構(gòu)設(shè)計(jì)、各功能模塊的設(shè)計(jì)與實(shí)現(xiàn)本文設(shè)計(jì)的簡(jiǎn)易PDF閱讀器通過(guò)了功能和性能方面的測(cè)試,證明了本文設(shè)計(jì)方案的可行性。通過(guò)對(duì)基于Android平臺(tái)手機(jī)簡(jiǎn)易PDF閱讀器的設(shè)計(jì)與實(shí)現(xiàn)的介紹,希望能為今后開(kāi)發(fā)出功能更強(qiáng)大的閱讀器提供有益的借鑒。關(guān)鍵詞:android,PDFSDKPDF閱讀器,SD卡讀取ASIMPLEPDFREADERABSTRACTInscienceandtechnologyincreasinglydevelopedtoday,societyismoreandmorefiercecompetition,itrequirespeopletoconstantlyabsorbinformationtoenrichthemselves.Peoplecanunderstandandgettherequiredinformationanytimeandanywhere.Inthiscase,e-bookreadersjustmeettheneedsofthepeopletoobtaininformationeasily.ThispaperdesignthesimplifiedPDFreaderisdesignedbasedontheAndroidplatform,theAndroidplatformisthefastestgrowing,mostmarketprospectofintelligentmobilephoneoperatingsystem.Thissystemisaccordingtouser'spreferencesandGoogleAndroidplatformisdesignedaccordingtothefeaturesofitsplatform,bringontheGoogleAndroidplatformSDKenvironment,usingtheEclipse,Photoshopandotherrelatedtoolsfordevelopment.GoogleAndroiddevelopmentprocesshasbeenintroducedinthispaper,basedontheAndroidplatformapplicationdevelopmentisdiscussed,thekeytechnologiesofsimplifiedPDFreaderdemandanalysisindetail,andintroducedtheoveralldesignbasedonAndroidplatformofmobilephonee-bookreader,mainlyincludesthearchitecturedesignofmobilephonee-bookreader,eachfunctionmoduledesignandimplementation.SimplePDFreaderdesigninthispaperthroughthefunctionalandperformancetesting,provedthefeasibilityofthedesign.BasedonbasedontheAndroidplatformmobilephonetheintroductionofthedesignandimplementationofasimplifiedPDFreader,hopeforthefuturetodevelopmorepowerfulreaderinordertoprovidethebeneficialreference.Keywords:Android,PDF,SDK,PDFreader,readSDcard摘要IABSTRACT2第一章緒論5概述5課題研究的目的和意義6本文的結(jié)構(gòu) 6本章小結(jié)6第二章研究現(xiàn)狀7國(guó)內(nèi)外研究現(xiàn)狀7本章小結(jié)8TOC\o"1-5"\h\z\o"CurrentDocument"第三章可行性分析 8\o"CurrentDocument"需求分析 8\o"CurrentDocument"PDF閱讀器功能需求 8\o"CurrentDocument"運(yùn)行環(huán)境 9\o"CurrentDocument"開(kāi)發(fā)工具 9\o"CurrentDocument"本章小結(jié) 9參考文獻(xiàn)30致謝32\o"CurrentDocument"符號(hào)與標(biāo)記(附錄 1)33第一章緒論概述手機(jī)已經(jīng)成為了生活中不可缺少的通訊設(shè)備,沒(méi)有手機(jī)有時(shí)會(huì)讓人覺(jué)得寸步難行。手機(jī)不僅具備傳統(tǒng)的打電話、發(fā)短信等基本的功能,而且具有強(qiáng)大的處理能力和可擴(kuò)展能力,能進(jìn)行電子圖書的閱覽、基于3G網(wǎng)絡(luò)實(shí)現(xiàn)高速數(shù)據(jù)傳輸、第三方瀏覽軟件的運(yùn)用等,越來(lái)越多的功能和業(yè)務(wù)將被開(kāi)發(fā)出來(lái)并大規(guī)模的應(yīng)用。正基于此,Google于2007年11月5日宣布推出基于 Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),號(hào)稱首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件——Android。二十世紀(jì)七十年代,著名軟件工程師 Andsan.Fandamuft美國(guó)布朗大學(xué)闡述通過(guò)計(jì)算機(jī)創(chuàng)建和閱讀文件的時(shí)候首次提出了電子書 [〔[(electronicBook,eBook)這一術(shù)語(yǔ)。電子書是利用現(xiàn)代信息技術(shù)創(chuàng)造的全新出版方式,將傳統(tǒng)的書籍出版發(fā)行方式以數(shù)字的形式通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)。閱讀器指的是一個(gè)設(shè)備,是專門用來(lái)看電子書的。隨著數(shù)字化的不斷興起,電子閱讀器市場(chǎng)的競(jìng)爭(zhēng)變得越來(lái)越激烈。電子閱讀現(xiàn)在是國(guó)家和業(yè)內(nèi)非常重視的一個(gè)新興產(chǎn)業(yè),它與國(guó)家提倡的“自主創(chuàng)新,增強(qiáng)核心競(jìng)爭(zhēng)力”、開(kāi)展低碳、節(jié)能環(huán)保的社會(huì)環(huán)境相吻合,很多廠商、科研院所都將目光放到了這個(gè)原本沒(méi)有足夠重視的領(lǐng)域上。同時(shí),手機(jī)電子書閱讀器作為廣大網(wǎng)民經(jīng)常使用的一個(gè)工具,在手機(jī)閱讀市場(chǎng)逐漸擴(kuò)大的時(shí)候,人們對(duì)于閱讀的方便性和各種功能設(shè)置都有了更高的要求。雖然現(xiàn)在手機(jī)電子書閱讀器功能己經(jīng)比較完善,但是離人們的期望還存在較大的距離,比如改善人們的閱讀環(huán)境,使人們讀起來(lái)不感到疲倦而且充滿樂(lè)趣,同時(shí)現(xiàn)在的閱讀器多媒體性能還不夠完善。因此,手機(jī)電子書閱讀器的應(yīng)用研究還大有潛力可挖。課題研究的目的和意義當(dāng)今社會(huì)手機(jī)是已經(jīng)成為了生活中不可缺少的通訊設(shè)備,隨著科技的發(fā)展手機(jī)的功能也越來(lái)越強(qiáng)大,手機(jī)電子閱讀器是手機(jī)中的一種重要軟件,其真正意義上指的是一個(gè)可以閱讀設(shè)備,是專門用來(lái)閱讀電子書的,隨著二十一世紀(jì)數(shù)字信息化的不斷興起,電子閱讀器的市場(chǎng)競(jìng)爭(zhēng)也變得越來(lái)越激烈。時(shí)下社會(huì)的進(jìn)步更是讓人們的生活越來(lái)越忙碌,抱著厚厚的書本穿梭于大街小巷已經(jīng)不再適應(yīng)這個(gè)忙碌的時(shí)代。當(dāng)人們奔波于不同的城市、出沒(méi)在不同的場(chǎng)所、搭乘不同的交通工具的時(shí)候,手機(jī)電子閱讀器就可以為人們提供方便快捷的閱讀平臺(tái),它的作用就像一座橋梁,在我們不方便利用書本或者網(wǎng)絡(luò)的時(shí)候提供一個(gè)更快更方便的平臺(tái),讓人們能隨時(shí)的閱讀自己喜歡的電子圖書。就是因?yàn)槭謾C(jī)電子閱讀器方便快捷的優(yōu)點(diǎn),使得人們把用手機(jī)電子閱讀器閱讀閱讀電子書當(dāng)做當(dāng)科技時(shí)代的一種時(shí)尚。這也讓手機(jī)電子閱讀器在人們的生活中扮演的角色越來(lái)越重要。本文的結(jié)構(gòu)本文介紹了作者從了解國(guó)內(nèi)外發(fā)展現(xiàn)狀,到配置開(kāi)發(fā)環(huán)境以及需求分析之后完成工程并且調(diào)試成功的過(guò)程,展現(xiàn)了簡(jiǎn)易 PDF閱讀器的開(kāi)發(fā)歷程。本章小結(jié)本章主要初步介紹了 android技術(shù)的起源與發(fā)展,簡(jiǎn)易 PDF閱讀器開(kāi)發(fā)的意義和目的,和電子閱讀器這個(gè)行業(yè)的背景。第二章研究現(xiàn)狀國(guó)內(nèi)外研究現(xiàn)狀最早出現(xiàn)在市場(chǎng)上的電子書閱讀器是美國(guó)SoftBook公司的SoftBook和Nov.Media公司的RocketBook。它們都具有美觀的外型形狀像一本古典的精裝書,存儲(chǔ)容量分別為8MB和32MB的內(nèi)存,分別可以容納5,000和32,000多個(gè)電子頁(yè)的信息,與計(jì)算機(jī)串口相連,可以從 SoftBook和NuvoMedia的網(wǎng)上售書連鎖店,下載書籍和期刊。2000年8月,美國(guó)微軟公司發(fā)布了一個(gè)可供人們閱讀電子書的應(yīng)用軟件Microsoft Reader,這種閱讀器軟件的核心技術(shù)是 Clear Type,微軟稱之為“對(duì)液晶顯示屏具有革命性的變革”,它是一種能使文字在顯示器上的顯示效果像印在紙上一樣平滑清晰的字符顯示技術(shù),這種技術(shù)大大提高了屏幕的分辨率和清晰度,使讀者能夠獲得最接近傳統(tǒng)書的閱讀效果。同時(shí)南開(kāi)大學(xué)津科公司開(kāi)發(fā)了一款閱讀不耗電的電子書閱讀器,該電子書閱讀器已經(jīng)面市并將投人大規(guī)模生產(chǎn)。它采用了華人科學(xué)家吳葆剛博士發(fā)明的“多穩(wěn)態(tài)液晶顯示器”,并在國(guó)際上首次實(shí)現(xiàn)了“翻頁(yè)不耗電”閱讀顯示。除了上述幾種電子書閱讀器之外,EveryBook,Librius,GlassBook等公司也都推出了自己的電子書閱讀器和閱讀軟件,遼寧出版集團(tuán)和美國(guó)秦通公司聯(lián)手合作推出了中文電子“掌上書屋”。隨著這些閱讀器的出現(xiàn),使得電子圖書、期刊這些原本只能在 PC上閱讀的東西突然變得可以移動(dòng),電子書籍與紙制書籍之間的距離縮短了一大步。同時(shí),電子書閱讀器更方便和靈活的使用功能也在不斷地研究推出,例如,可以在閱讀的時(shí)候加批注、書簽、字體可縮放、旋轉(zhuǎn)和支持聲音播放等等。本章小結(jié)本章主要介紹了電子閱讀器在國(guó)際國(guó)內(nèi)上的發(fā)展現(xiàn)狀,以及行業(yè)背景。第三章可行性分析為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,需要對(duì)開(kāi)發(fā)產(chǎn)品做出需求分析。對(duì)軟件的需求的合理把握是軟件開(kāi)發(fā)周期中非常重要的一個(gè)環(huán)節(jié),本章將對(duì)手機(jī)閱讀器作較為全面的需求分析。需求分析隨著手機(jī)功能不斷增強(qiáng),手機(jī)閱讀器已成為智能手機(jī)重要軟件之一。開(kāi)發(fā)一款符合廣大用戶需求的手機(jī)閱讀器有很好的市場(chǎng)前景和意義。本軟件的目標(biāo)是開(kāi)發(fā)一款基于Android平臺(tái)符合用戶使用需求的手機(jī)電子書閱讀器。本閱讀器支持PDF格式的文件。用戶可以通過(guò) PDF閱讀器從SDCARD擇自己想要觀看的PDF文件。本軟件具有美觀簡(jiǎn)潔便于用戶使用的觸摸界面,這也是Android操作系統(tǒng)不同于傳統(tǒng) WindowsMobile和Symbian系統(tǒng)上應(yīng)用軟件的優(yōu)勢(shì)之一。PDF閱讀器功能需求作為Android平臺(tái)上開(kāi)發(fā)的應(yīng)用軟件,它具有與用戶交互的界面,界面簡(jiǎn)潔美觀易于操作。因此,對(duì)手機(jī)閱讀器的功能規(guī)定可以從手機(jī)閱讀器的界面來(lái)劃分。手機(jī)閱讀器的用戶操作界面分為一下四部分:讀取界面,閱讀界面。運(yùn)行環(huán)境系統(tǒng)要求Android系統(tǒng)2.2版本以上,對(duì)以后繼續(xù)進(jìn)行升級(jí)開(kāi)發(fā)有可延續(xù)性。靈活性軟件基于Android操作系統(tǒng),是基于組件的開(kāi)發(fā)方式。時(shí)間特性的要求軟件的速度要在用戶可接受的范圍能擴(kuò)展需求。軟件特性要求軟件運(yùn)行速度要在用戶可接受的范圍之內(nèi),對(duì)流量、電量等消耗要在用戶可接受范圍之內(nèi)。開(kāi)發(fā)工具作者運(yùn)用Myeclipse軟件搭配androidAPK進(jìn)行軟件開(kāi)發(fā),操作系統(tǒng)為WIN764位,使用虛擬機(jī)為android4.0480*800的虛擬機(jī)。本章小結(jié)本章主要介紹了 PDF閱讀器的需求分析、PDF閱讀器的功能需求和軟件運(yùn)行需要的環(huán)境和軟件的開(kāi)發(fā)環(huán)境。第四章系統(tǒng)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)Android的架構(gòu)是Linux內(nèi)核、C/C++函數(shù)庫(kù)、Dalvik虛擬機(jī)、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,如圖1所示,通過(guò)編譯基于框架的應(yīng)用程序可以降低開(kāi)發(fā)負(fù)荷。應(yīng)用軟件原則上是在DalvikVM上運(yùn)行的。APPiLICATIOMSHome Conficei Phew Broww 111fl.ApplicationFrameworkfgr 嬲肄 融蔡 " XMPFiLibrariesAndroiqiRuntimeSurfaceMinurr Mede SQL?teFrirwwkCchjicL^rirmOf>?ftGMES FrveT^pe 帆蚪51SGl SSL 14kLINUXKERNELDecplay 尸 r\?__ FilthMemory Binder(IPQCr^F CameraDrtrer 所呻 Drw Ornr5電CMf 542 W布防爾 豁圖1Android的架構(gòu)[1]關(guān)鍵應(yīng)用程序Android平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網(wǎng)頁(yè)瀏覽器等,開(kāi)發(fā)者可以在其平臺(tái)上開(kāi)發(fā)更多有特色的應(yīng)用程序。開(kāi)發(fā)語(yǔ)百是Java。應(yīng)用程序框架[1]張鵬.Eclipse插件開(kāi)發(fā)學(xué)習(xí)筆記[Z].北京:電子工業(yè)出版社,2008Android應(yīng)用程序的開(kāi)發(fā)基于框架和組件。Android本身已在其框架中提高了許多的組件供應(yīng)用程序調(diào)用,當(dāng)然開(kāi)發(fā)者也開(kāi)放新的組件,并將組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。C/C++函數(shù)庫(kù)Android應(yīng)用程序框架之下是一套C/C+的數(shù)庫(kù),它們服務(wù)于Android應(yīng)用程序組件,其功能通過(guò)組件間接提供給開(kāi)發(fā)者。這些函數(shù)庫(kù)包括:標(biāo)準(zhǔn) C函數(shù)庫(kù)、媒體功能庫(kù)、瀏覽器引擎、2D和3D圖形庫(kù)、基于WE時(shí)用的的安全協(xié)議SSL用于點(diǎn)陣和矢量字體渲染的FreeType以及SQLite引擎等。Java程序運(yùn)行環(huán)境Android的Java程序運(yùn)行環(huán)境包含一組Java核心函數(shù)庫(kù)及 Dalvik虛擬機(jī),它們有效地優(yōu)化了Java程序的運(yùn)行過(guò)程。所有的Android應(yīng)用都運(yùn)行在它自己的進(jìn)程里,該進(jìn)程是一個(gè) Dalvik虛擬機(jī)的實(shí)例,Dalvik被設(shè)計(jì)成能在一臺(tái)設(shè)備上高效的運(yùn)行多個(gè)虛擬機(jī)實(shí)例。Dalvik虛擬機(jī)的可執(zhí)行文件被封裝成 Dalvik可執(zhí)行格式(.dex)。這是被優(yōu)化過(guò)的最小內(nèi)存依賴的格式。Java編譯器(dx工具)將注冊(cè)了的和運(yùn)行時(shí)用到的類編譯成.dex格式。Dalvik虛擬機(jī)依賴于底層 Linux內(nèi)核提供的功能,如線程機(jī)制,和內(nèi)存管理機(jī)制等。Linux內(nèi)核Android系統(tǒng)平臺(tái)是基于優(yōu)化了的Linux內(nèi)核,是其系統(tǒng)平臺(tái)的核心。它提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)等服務(wù),同時(shí)也是手機(jī)軟硬件的連接層,提供了一個(gè)屏蔽層用于屏蔽硬件和上層軟件。系統(tǒng)功能設(shè)計(jì)應(yīng)用平臺(tái)層是位于Android操作系統(tǒng)與應(yīng)用層之間的,HomeScreen>用來(lái)用用程序顯示的,它是用來(lái)管理和開(kāi)啟應(yīng)用程序的平臺(tái)。最上層的是應(yīng)用程序,該層包含手機(jī)上安裝的各種應(yīng)用程序,只要包括:日歷,地圖,聯(lián)系人,短信,電話,鬧鐘等。本文設(shè)計(jì)的手機(jī)電子說(shuō)閱讀器就是屬于應(yīng)用層應(yīng)用平臺(tái)層系統(tǒng)層Linux內(nèi)核圖2-系統(tǒng)功能設(shè)計(jì)4.3本章小結(jié)本章介紹了系統(tǒng)設(shè)計(jì)的概要第五章系統(tǒng)實(shí)現(xiàn)界面設(shè)計(jì)界面設(shè)計(jì)見(jiàn)圖3、圖4、圖5、圖6、圖7。本閱讀器的界面簡(jiǎn)單明了,使用戶在最短時(shí)間內(nèi)打開(kāi)自己想要查看的PDF省略花哨的界面只保留最有用的功能。ShowPDF-FileDPA口/sdcard/download/example.pdf[enterfilenameandpress'show']05554:aaHardwareKeybowdUsejriMirphysicalkcybgidrdtoprovideinput|antialia5BasicConlralxShowPDF-FileDPA口/sdcard/download/example.pdf[enterfilenameandpress'show']05554:aaHardwareKeybowdUsejriMirphysicalkcybgidrdtoprovideinput|antialia5BasicConlralxA@HardwareButtontidPDFViewer圖3-閱讀器初始界面圖圖4閱讀器打開(kāi)PDF界面■2:28Ba9icControl(H^rdMrireButlonx■2:28Ba9icControl(H^rdMrireButlonxAndroidPDFVieweiPdMewer:1.pdf771:5953xB4L9seconds:parse-0J4show=O.63600004POF-Cammands^26/2620124831633繆涵澄HardwareKeyboardUs€yomrphyiiica)keybaidirdtoprovideinput圖圖5-閱讀器未找到PDF界面等5554:aa■2:29BwcCnntEk口PdfVimer:file'Adcardd2,pdfnotfoundseconds:parse=0,001Ehaw=0.0PDF-CommarEcIs:26/25AndroidPDFViewerHMd^rareButldnsDPADnolrtidibh'dinAVD<cL/MENUAaHardwareKeyboardUs?yourphysicalkeytsoardtoprovideinput圖6-閱讀器查找PDF界面CameraClockContactsDevToolsDownloadsEmjilCustom

Locale2GalleryDPADnoicrmhlc^m4VDHardwar*KtyboardUs*ymirphysicalkeyboardtoprovideinputCameraClockContactsDevToolsDownloadsEmjilCustom

Locale2GalleryDPADnoicrmhlc^m4VDHardwar*KtyboardUs*ymirphysicalkeyboardtoprovideinput圖7-閱讀器在應(yīng)用程序列表中的圖標(biāo)閱讀PDF功能本功能可以在android手機(jī)上將PDF文件以圖片的形式打開(kāi),解決以往 PDF文件在手機(jī)上無(wú)法查看的問(wèn)題。部分代碼如下:packagecom.sun.pdfview。importjava.util.Iterator。importjava.util.List。importnet.sf.andpdf.utils.Utils。importandroid.graphics.Matrix。importandroid.graphics.PointF。importandroid.graphics.RectF。importandroid.util.Log。importcom.sun.pdfview.font.PDFFont。importcom.sun.pdfview.font.PDFGlyph。publicclassPDFTextFormatimplementsCloneable{/**characterspacing*/privatefloattc=0。/**wordspacing*/privatefloattw=0。/**horizontalscaling*/privatefloatth=1。/**leading*/privatefloattl=0。/**riseamount*/privatefloattr=0。/**textmode*/privateinttm=PDFShapeCmd.FILL。/**textknockout*/privatefloattk=0。/**currentmatrixtransform*/privateMatrixcur。/**matrixtransformatstartofline*/privateMatrixline。/**font*/privatePDFFontfont。/**fontsize*/privatefloatfsize=1。/**arewebetweenBTandET?*/privatebooleaninuse=false。//privateObjectarray[]=newObject[1]。}}/**buildtextrepofword*/privateStringBufferword=newStringBuffer()。//thisiswherewebuildandkeepthewordlistforthispage./**startlocationofthehunkoftext*/privatePointFwordStart。/**locationoftheendoftheprevioushunkoftext*/privatePointFprevEnd。/***createanewPDFTextFormat,withinitialvalues*/publicPDFTextFormat(){cur=newMatrix()。line=newMatrix()。wordStart=newPointF(-100,-100)。prevEnd=newPointF(-100,-100)。tc=tw=tr=tk=0。tm=PDFShapeCmd.FILL。th=1。}/***resetthePDFTextFormatforanewrun*/publicvoidreset(){cur.reset()。line.reset()。inuse=true。word.setLength(0)。}/**endaspanoftext*/publicvoidend(){inuse=false。}}/**getthecharspacing*/publicfloatgetCharSpacing(){returntc。}/**setthecharacterspacing*/publicvoidsetCharSpacing(floatspc){this.tc=spc。}/**getthewordspacing*/publicfloatgetWordSpacing(){returntw。}/**setthewordspacing*/publicvoidsetWordSpacing(floatspc){this.tw=spc。}/**Getthehorizontalscale@returnthehorizontalscale,inpercent*/publicfloatgetHorizontalScale(){returnth*100。}/**setthehorizontalscale.@paramsclthehorizontalscale,inpercent(100=normal)/publicvoidsetHorizontalScale(floatscl){this.th=scl/100。}/**gettheleading*/publicfloatgetLeading(){returntl。/**settheleading*/publicvoidsetLeading(floatspc){this.tl=spc。}/**getthefont*/publicPDFFontgetFont(){returnfont。}/**getthefontsize*/publicfloatgetFontSize(){returnfsize。}/**setthefontandsize*/publicvoidsetFont(PDFFontf,floatsize){this.font=f。this.fsize=size。}/***Getthemodeofthetext*/publicintgetMode(){returntm。}/**setthemodeofthetext.Thecorrespondenceofmtomodeisshowinthefollowingtable.misavaluefrom0-7inbinary:*000Fill001Stroke010Fill+Stroke011Nothing100Fill+Clip101Stroke+Clip110Fill+Stroke+Clip*111Clip*Therefore:Fillcorrespondstothelowbitbeing0。Clipcorrespondstothehightbitbeing1。andStrokecorresponds*tothemiddlexorlowbitbeing1.*/publicvoidsetMode(intm){intmode=0。if((m&0x1)==0){mode|=PDFShapeCmd.FILL。}if((m&0x4)!=0){mode|=PDFShapeCmd.CLIP。}if(((m&0x1)A((m&0x2)>>1))!=0){mode|=PDFShapeCmd.STROKE。}this.tm=mode。}/***Setthemodefromanothertextformatmode@parammodethetextrendermodeusingthecodesfromPDFShapeCmdandnotthewackyPDFcodes*/publicvoidsetTextFormatMode(intmode){this.tm=mode。}/***Gettherise*/publicfloatgetRise(){returntr。/**}}*settherise*/publicvoidsetRise(floatspc){this.tr=spc。}/**performacarriagereturn/publicvoidcarriageReturn(){carriageReturn(0,-tl)。}/**Thenextperformacarriagereturnbytranslatingbyxandy.Thenextcarriagereturnwillberelativetothenewlocation./publicvoidcarriageReturn(floatx,floaty){Matrixtrans=newMatrix()。trans.setTranslate(x,y)。line.preConcat(trans)。cur.set(line)。}/***Getthecurrenttransform*/publicMatrixgetTransform(){returncur。}/***setthetransformmatrixdirectly*/publicvoidsetMatrix(float[]matrix){line=newMatrix()。Utils.setMatValues(line,matrix)。cur.set(line)。/**addsometexttothepage.@paramcmdsthePDFPagetoaddthecommandsto@paramtextthetexttoadd/publicvoiddoText(PDFPagecmds,Stringtext){PointFzero=newPointF()。Matrixscale=newMatrix()。Utils.setMatValues(scale,fsize,0,0,fsize*th,0,tr)。Matrixat=newMatrix()。Listl=font.getGlyphs(text)。for(Iteratori=l.iterator()。i.hasNext()。){PDFGlyphglyph=(PDFGlyph)i.next()。at.set(cur)。at.preConcat(scale)。PointFadvance=glyph.addCommands(cmds,at,tm)。floatadvanceX=(advance.x*fsize)+tc。if(glyph.getChar()==''){advanceX+=tw。}advanceX*=th。cur.preTranslate(advanceX,advance.y)。}float[]src={zero.x,zero.y}。float[]dst=newfloat[src.length]。cur.mapPoints(dst,src)。prevEnd.set(dst[0],dst[1])。}/**addsometexttothepage.@paramcmdsthePDFPagetoaddthecommandsto@paramaryanarrayofStringsandDoubles,wheretheStringsrepresenttexttobeadded,andtheDoublesrepresentkerning*amounts.*/publicvoiddoText(PDFPagecmds,Objectary[])throwsPDFParseException{for(inti=0。i<ary.length。i++){if(ary[i]instanceofString){doText(cmds,(String)ary[i])。}elseif(ary[i]instanceofDouble){floatval=((Double)ary[i]).floatValue()/1000f 。cur.preTranslate(-val*fsize*th,0)。}else{thrownewPDFParseException("BadelementinTJarray")。}}}/***finishanyunfinishedwords.TODO:writethis!*/publicvoidflush(){//TODO:finishanyunfinishedwords}/***Clonethetextformat*/@OverridepublicObjectclone(){PDFTextFormatnewFormat=newPDFTextFormat()。//copyvaluesnewFormat.setCharSpacing(getCharSpacing())。newFormat.setWordSpacing(getWordSpacing())。newFormat.setHorizontalScale(getHorizontalScale())。newFormat.setLeading(getLeading())。newFormat.setTextFormatMode(getMode())。newFormat.setRise(getRise())。//copyimmutablefieldsnewFormat.setFont(getFont(),getFontSize())。//clonetransform(mutable)//newFormat.getTransform().setTransform(getTransform())。returnnewFormat。}}5.3本章小結(jié)本章主要介紹了PDF閱讀器的界面布局,界面樣式,和PDF閱讀器其中的功能,并且展示部分代碼。第六章系統(tǒng)測(cè)試Android手機(jī)系統(tǒng)測(cè)試之打斷事件Android手機(jī)提供的打斷事件與以往手機(jī)有著一些機(jī)制上的不同,當(dāng)然也有很多跟以前一樣的機(jī)制。所以我們要從他的應(yīng)用程序打斷機(jī)理出發(fā),定制本系統(tǒng)的系統(tǒng)測(cè)試用例的打斷事件。1.打斷事件一般分為系統(tǒng)基本打斷事件;2.Back鍵;3.改變手機(jī)方向;4.長(zhǎng)按Home鍵,切換應(yīng)用程序;5.內(nèi)容沖突檢測(cè)(contentprovider);6.長(zhǎng)按Power鍵,調(diào)出關(guān)機(jī)窗口;Home鍵回homeapp,當(dāng)前測(cè)試的應(yīng)用就會(huì)放到后臺(tái)處于 stop狀態(tài)。如果想監(jiān)控到Activity生命周期的變化,必然會(huì)在Create或Start等處有代碼來(lái)進(jìn)行處理。在startActivityForResu函數(shù)中,mInstrumentation.execStartActivity()一句讓我們看到至少有一個(gè)mInstrumentation的對(duì)象受委托在啟動(dòng)Activity,這個(gè)委托是有可能加入監(jiān)控動(dòng)作的。publicvoidstartActivityForResult(Intentintent,intrequestCode){ }在以peform開(kāi)頭的幾個(gè)函數(shù)中,本系統(tǒng)再次發(fā)現(xiàn)了對(duì) mInstrumentation對(duì)象的調(diào)用。例如peformStart()函數(shù)。finalvoidperformStart(){ }該類的接口主要有以下幾類:對(duì) Activity監(jiān)控對(duì)象的處理接口,Activity狀態(tài)改變時(shí)的回調(diào)通知接口,生成 Activity和Application的接口,向Activity發(fā)送事件通知的接口,性能處理的接口等。先來(lái)看callActivityOnCreate()函數(shù)。publicvoidcallActivityOnCreate(Activityactivity,Bundleicicle){ }再來(lái)看本文章前文提到的execStartActivity()函數(shù)。publicActivityResultexecStartActivity( }測(cè)試中發(fā)現(xiàn)的問(wèn)題及修復(fù)本系統(tǒng)在設(shè)計(jì)開(kāi)發(fā)的過(guò)程當(dāng)中,遇到了不少的問(wèn)題,在老師的細(xì)心幫助和指導(dǎo),在各位朋友,同時(shí)的同心協(xié)助下都已一一解決。本程序的最主要問(wèn)題是在文件源獲取時(shí),發(fā)生因?yàn)槭謾C(jī)儲(chǔ)存卡內(nèi)部文件繁瑣,樣式冗雜,導(dǎo)致本程序在遍歷內(nèi)存卡,添加可用文件的時(shí)候出現(xiàn)錯(cuò)誤的判斷,使得電子書不能正常的導(dǎo)入或者導(dǎo)入手機(jī)之后程序卻不能正確的讀取,在同學(xué)的幫助之下,本程序最終采用直接輸入文件名查詢文件,完美的解決了文件加載錯(cuò)誤的問(wèn)題。本章小結(jié)本章主要介紹了軟件的測(cè)試過(guò)程,和其中問(wèn)題和修復(fù)過(guò)程。第七章總結(jié)主要結(jié)論隨著智能手機(jī)和 3G網(wǎng)絡(luò)的發(fā)展,手機(jī)的功能和性能、通信網(wǎng)絡(luò)的數(shù)據(jù)業(yè)務(wù)支持能力將極大增強(qiáng),手機(jī)將脫離傳統(tǒng)的打電話、發(fā)短信等基本的功能,而基于智能手機(jī)強(qiáng)大的處理能力和可擴(kuò)展能力,基于3G網(wǎng)絡(luò)高速數(shù)據(jù)傳輸,越來(lái)越多的功能和業(yè)務(wù)將被開(kāi)發(fā)出來(lái)并大規(guī)模的應(yīng)用。而Android手機(jī)平臺(tái)作為移動(dòng)平臺(tái)的新秀,以其良好的性能和強(qiáng)大的功能,以開(kāi)源的形式受到廣大開(kāi)發(fā)者和手機(jī)制造商的青睞,在這種情況下,GoogleAndroid無(wú)疑成為我們進(jìn)行智能手機(jī)開(kāi)發(fā)的一個(gè)非常好的選擇。本文,筆者通過(guò)對(duì) Android這個(gè)橫空出世的平臺(tái)的簡(jiǎn)要介紹,概述了其眾多的優(yōu)點(diǎn)和其對(duì)整個(gè)智能手機(jī)乃至手機(jī)軟件開(kāi)發(fā)行業(yè)的意義和重要性,闡明了其研究的重要性和必行性。而后,筆者根據(jù) AndroidMarket上用戶的喜愛(ài)程度來(lái)選擇了研究方向:基于Android手機(jī)平臺(tái)的PDF閱讀器。并根據(jù)此工程自身的特點(diǎn)和Android平臺(tái)的特點(diǎn),選取了相應(yīng)的開(kāi)發(fā)工具,并對(duì)其做了簡(jiǎn)單的介紹。而后根據(jù)電子書閱讀器的特點(diǎn)選擇了數(shù)據(jù)庫(kù)存取方式,并根據(jù) Android手機(jī)的特點(diǎn)制定了基于Andorid手機(jī)平臺(tái)下的電子商業(yè)閱讀器的布局(界面),然后根據(jù) Android平臺(tái)的自身特點(diǎn)進(jìn)行了開(kāi)發(fā),并對(duì)其關(guān)鍵性代碼進(jìn)行了說(shuō)明。并對(duì)該工程做了相關(guān)的測(cè)試。在本課題完成的過(guò)程中,筆者完成了以下工作:閱讀了大量的相關(guān)書籍,對(duì) Android手機(jī)平臺(tái)的開(kāi)發(fā)有了較為深層次的了解。實(shí)踐了開(kāi)發(fā)環(huán)境的搭建,并最開(kāi)發(fā)工具做了相關(guān)的了解和優(yōu)化,最終選取了當(dāng)前開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具的配置。開(kāi)發(fā)并測(cè)試了基于Android平臺(tái)下的PDF閱讀器,對(duì)一些已知的和用戶反饋的bug和不足之處進(jìn)行了修改。研究展望由于時(shí)間倉(cāng)促,本系統(tǒng)還有些功能需要進(jìn)一步完善,下一步努力的方向如下:實(shí)現(xiàn)在線閱讀網(wǎng)站內(nèi)PD皿能。提供閱讀UMD,CHM,HTML,PDB^式的書籍功能。提供編輯PD皿能。參考文獻(xiàn)[1]趙繼海.電子書閱讀器的發(fā)展及其對(duì)圖書館的影響 [J].大學(xué)圖書館學(xué)報(bào),2001,19(4)高峰,李玲.試論電子書對(duì)圖書館的影響 [J].山西廣播電視大學(xué)學(xué)報(bào),2007,12(1)祁英紅.幾種常用電子書刊閱讀器的比較 [J].甘肅科技縱橫,2006,35(6)周康.電子書悄悄走近我們[J].出版參考 ,2006,(27)高煥堂.應(yīng)用框架原理與程序設(shè)計(jì) 36技[M].臺(tái)灣:MISOO設(shè)計(jì)中心,2008張鵬,姜昊,許力.Eclipse插件開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2008張鵬.Eclipse插件開(kāi)發(fā)學(xué)習(xí)筆記 [Z].北京:電子工業(yè)出版社,20082007[8]劉慧.JavaME實(shí)用詳解―用Eclipse進(jìn)行移動(dòng)開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2007余志龍.GoogleAndroidSDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2009歷時(shí)將近兩個(gè)月的時(shí)間終于將這篇論文寫完,在論文的寫作過(guò)程中遇到了無(wú)數(shù)的困難和障礙,都在同學(xué)和老師的幫助下度過(guò)了。尤其要強(qiáng)烈感謝我的論文指導(dǎo)老師一蔣文蓉老師,她對(duì)我進(jìn)行了無(wú)私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行論文的修改和改進(jìn)。另外,在校圖書館查找資料的時(shí)候,圖書館的老師也給我提供了很多方面的支持與幫助。在此向幫助和指導(dǎo)過(guò)我的各位老師表示最中心的感謝!感謝這篇論文所涉及到的各位學(xué)者。本文引用了數(shù)位學(xué)者的研究文獻(xiàn),如果沒(méi)有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫作。感謝我的同學(xué)和朋友,在我寫論文的過(guò)程中給予我了很多你問(wèn)素材,還在論文的撰寫和排版燈過(guò)程中提供熱情的幫助。由于我的學(xué)術(shù)水平有限,所寫論文難免有不足之處,懇請(qǐng)各位老師和學(xué)友批評(píng)和指正!符號(hào)與標(biāo)記(附錄 1)部分代碼:packagecom.sun.pdfview。importjava.io.File。importjava.io.FileOutputStream。importjava.io.IOException。importjava.lang.ref.WeakReference。importjava.util.ArrayList。importjava.util.HashMap。importjava.util.Stack。importnet.sf.andpdf.pdfviewer.ByteBuffer。importnet.sf.andpdf.utils.Utils。importandroid.graphics.Matrix。importandroid.graphics.Path。importandroid.graphics.RectF。importandroid.graphics.Path.Direction。importandroid.graphics.Path.FillType。importandroid.os.Debug。importcom.sun.pdfview.colorspace.PDFColorSpace。importcom.sun.pdfview.decode.PDFDecoder。importcom.sun.pdfview.font.PDFFont。publicclassPDFParserextendsBaseWatchable{/**emitafileofDCTstreamdata.*/publicfinalstaticStringDEBUG_DCTDECODE_DATA="debugdctdecode"staticfinalbooleanRELEASE=true。TOC\o"1-5"\h\zstaticfinalintPDF_CMDS_RANGE1_MIN=1 。staticfinalintPDF_CMDS_RANGE1_MAX=Integer.MAX_VALUE。staticfinalintPDF_CMDS_RANGE2_MIN=0 。staticfinalintPDF_CMDS_RANGE2_MAX=0 。privateintcmdCnt。// parsingvariablesprivateStack<Object>stack。 //stackofObjectprivateStack<ParserState>parserStates。 //stackofRenderState//thecurrentrenderstateprivateParserStatestate。privatePathpath。privateintclip。privateintloc。privatebooleanresend=false。privateToktok。privatebooleancatchexceptions。 //IndicatesstateofBX...EX/**aweakreferencetothepagewerenderinto.Forthepage*toremainavailable,someothercodemustretainastrongreferencetoit.*/privateWeakReferencepageRef。/**theactualcommand,forusewithinasingeiteration.Notethat*thismustbereleasedattheendofeachiterationtoassurethepagecanbecollectedifnotinuse*/privatePDFPagecmds。// resultvariablesbyte[]stream。HashMap<String,PDFObject>resources。//publicstaticintdebuglevel=4000。//TODO

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論