《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器_第1頁(yè)
《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器_第2頁(yè)
《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器_第3頁(yè)
《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器_第4頁(yè)
《電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)》大作業(yè)簡(jiǎn)易PDF閱讀器_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 電子商務(wù)移動(dòng)開(kāi)發(fā)技術(shù)大作業(yè) 簡(jiǎn)易簡(jiǎn)易 pdfpdf 閱讀器閱讀器 院院 系:系:經(jīng)濟(jì)管理學(xué)院 專(zhuān)專(zhuān) 業(yè)業(yè):電子商務(wù) 班班 級(jí):級(jí):12 計(jì)商 a2 學(xué)學(xué) 號(hào):號(hào):20124831633 姓姓 名名: 授課教師:授課教師: 20152015 年年 6 6 月月 1 1 日日 定稿定稿 ii 簡(jiǎn)易簡(jiǎn)易 pdfpdf 閱讀器閱讀器 摘摘 要要 在科技日益發(fā)達(dá)的今天,社會(huì)競(jìng)爭(zhēng)越來(lái)越激烈,這要求人們不斷的攝取信息來(lái) 充實(shí)自己。要求人們能隨時(shí)隨地的了解并獲取所需的信息。在這種情況下,電子書(shū) 閱讀器剛好滿(mǎn)足了人們便捷地獲取信息的需求。本文設(shè)計(jì)的簡(jiǎn)易 pdf 閱讀器是基于 android 平臺(tái)設(shè)計(jì)的,an

2、droid 平臺(tái)是目前發(fā)展最快、最具市場(chǎng)前景的智能手機(jī)操作 系統(tǒng)。 本系統(tǒng)是根據(jù) google android 平臺(tái)用戶(hù)的喜好和其平臺(tái)的特性而設(shè)計(jì)的,在 google android 平臺(tái)自帶的 sdk 環(huán)境下,運(yùn)用 eclipse,photoshop 等相關(guān)工具進(jìn) 行開(kāi)發(fā)的。本文介紹了 google android 開(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ū)閱讀器的總體設(shè)計(jì),主要包括手機(jī)電子書(shū)閱讀器的架 構(gòu)設(shè)計(jì)、各功能模塊的設(shè)計(jì)與實(shí)現(xiàn)。 本文設(shè)計(jì)的簡(jiǎn)易 pdf 閱讀器通過(guò)

3、了功能和性能方面的測(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,pdf,sdk,pdf 閱讀器,sd 卡讀取 3 a simple pdf reader abstract in science and technology increasingly developed today, society is more and more fierce competition, it requires people to constantly absorb

4、information to enrich themselves. people can understand and get the required information anytime and anywhere. in this case, e-book readers just meet the needs of the people to obtain information easily. this paper design the simplified pdf reader is designed based on the android platform, the andro

5、id platform is the fastest growing, most market prospect of intelligent mobile phone operating system. this system is according to users preferences and google android platform is designed according to the features of its platform, bring on the google android platform sdk environment, using the ecli

6、pse, photoshop and other related tools for development. google android development process has been introduced in this paper, based on the android platform application development is discussed, the key technologies of simplified pdf reader demand analysis in detail, and introduced the overall design

7、 based on android platform of mobile phone e-book reader, mainly includes the architecture design of mobile phone e-book reader, each function module design and implementation. simple pdf reader design in this paper through the functional and performance testing, proved the feasibility of the design

8、. based on based on the android platform mobile phone the introduction of the design and implementation of a simplified pdf reader, hope for the future to develop more powerful reader in order to provide the beneficial reference. keywords: android, pdf, sdk, pdf reader, read sd card 4 目目 錄錄 摘摘 要要.1

9、abstract .2 第一章第一章 緒論緒論.5 1.11.1 概述概述.5 1.21.2 課題研究的目的和意義課題研究的目的和意義.6 1.31.3 本文的結(jié)構(gòu)本文的結(jié)構(gòu).6 1.41.4 本章小結(jié)本章小結(jié).6 第二章第二章 研究現(xiàn)狀研究現(xiàn)狀.7 2.12.1 國(guó)內(nèi)外研究現(xiàn)狀國(guó)內(nèi)外研究現(xiàn)狀.7 2.22.2 本章小結(jié)本章小結(jié).7 第三章第三章 可行性分析可行性分析.8 3.13.1 需求分析需求分析.8 3.23.2 pdfpdf 閱讀器功能需求閱讀器功能需求 .8 3.33.3 運(yùn)行環(huán)境運(yùn)行環(huán)境.8 3.43.4 開(kāi)發(fā)工具開(kāi)發(fā)工具.9 3.53.5 本章小結(jié)本章小結(jié).9 參參 考考 文文

10、 獻(xiàn)獻(xiàn).12 致致 謝謝.13 符號(hào)與標(biāo)記(附錄符號(hào)與標(biāo)記(附錄 1 1).14 第 6 頁(yè) 第一章第一章 緒論緒論 1.11.1 概述概述 手機(jī)已經(jīng)成為了生活中不可缺少的通訊設(shè)備,沒(méi)有手機(jī)有時(shí)會(huì)讓人覺(jué)得寸步難 行。手機(jī)不僅具備傳統(tǒng)的打電話(huà)、發(fā)短信等基本的功能,而且具有強(qiáng)大的處理能力 和可擴(kuò)展能力,能進(jìn)行電子圖書(shū)的閱覽、基于 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)稱(chēng)首 個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件andro

11、id。 二十世紀(jì)七十年代,著名軟件工程師 andsan.fandamu 在美國(guó)布朗大學(xué)闡述通過(guò) 計(jì)算機(jī)創(chuàng)建和閱讀文件的時(shí)候首次提出了電子書(shū)1(electronic book,ebook)這一 術(shù)語(yǔ)。電子書(shū)是利用現(xiàn)代信息技術(shù)創(chuàng)造的全新出版方式,將傳統(tǒng)的書(shū)籍出版發(fā)行方 式以數(shù)字的形式通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)。閱讀器指的是一個(gè)設(shè)備,是專(zhuān)門(mén)用來(lái)看電子 書(shū)的。隨著數(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)境相吻合,很多廠(chǎng)商、科 研院所都將目光放到了這個(gè)原本沒(méi)有足夠重視的領(lǐng)域上。

12、同時(shí),手機(jī)電子書(shū)閱讀器 作為廣大網(wǎng)民經(jīng)常使用的一個(gè)工具,在手機(jī)閱讀市場(chǎng)逐漸擴(kuò)大的時(shí)候,人們對(duì)于閱 讀的方便性和各種功能設(shè)置都有了更高的要求。 雖然現(xiàn)在手機(jī)電子書(shū)閱讀器功能己經(jīng)比較完善,但是離人們的期望還存在較大 的距離,比如改善人們的閱讀環(huán)境,使人們讀起來(lái)不感到疲倦而且充滿(mǎn)樂(lè)趣,同時(shí) 現(xiàn)在的閱讀器多媒體性能還不夠完善。因此,手機(jī)電子書(shū)閱讀器的應(yīng)用研究還大有 潛力可挖。 第 7 頁(yè) 1.21.2 課題研究的目的和意義課題研究的目的和意義 當(dāng)今社會(huì)手機(jī)是已經(jīng)成為了生活中不可缺少的通訊設(shè)備,隨著科技的發(fā)展手機(jī) 的功能也越來(lái)越強(qiáng)大,手機(jī)電子閱讀器是手機(jī)中的一種重要軟件,其真正意義上指 的是一個(gè)可以閱讀

13、設(shè)備,是專(zhuān)門(mén)用來(lái)閱讀電子書(shū)的,隨著二十一世紀(jì)數(shù)字信息化的 不斷興起,電子閱讀器的市場(chǎng)競(jìng)爭(zhēng)也變得越來(lái)越激烈。 時(shí)下社會(huì)的進(jìn)步更是讓人們的生活越來(lái)越忙碌,抱著厚厚的書(shū)本穿梭于大街小 巷已經(jīng)不再適應(yīng)這個(gè)忙碌的時(shí)代。當(dāng)人們奔波于不同的城市、出沒(méi)在不同的場(chǎng)所、 搭乘不同的交通工具的時(shí)候,手機(jī)電子閱讀器就可以為人們提供方便快捷的閱讀平 臺(tái),它的作用就像一座橋梁,在我們不方便利用書(shū)本或者網(wǎng)絡(luò)的時(shí)候提供一個(gè)更快 更方便的平臺(tái),讓人們能隨時(shí)的閱讀自己喜歡的電子圖書(shū)。 就是因?yàn)槭謾C(jī)電子閱讀器方便快捷的優(yōu)點(diǎn),使得人們把用手機(jī)電子閱讀器閱讀 閱讀電子書(shū)當(dāng)做當(dāng)科技時(shí)代的一種時(shí)尚。這也讓手機(jī)電子閱讀器在人們的生活中扮 演

14、的角色越來(lái)越重要。 1.31.3 本文的結(jié)構(gòu)本文的結(jié)構(gòu) 本文介紹了作者從了解國(guó)內(nèi)外發(fā)展現(xiàn)狀,到配置開(kāi)發(fā)環(huán)境以及需求分析之后完 成項(xiàng)目并且調(diào)試成功的過(guò)程,展現(xiàn)了簡(jiǎn)易 pdf 閱讀器的開(kāi)發(fā)歷程。 1.41.4 本章小結(jié)本章小結(jié) 本章主要初步介紹了 android 技術(shù)的起源與發(fā)展,簡(jiǎn)易 pdf 閱讀器開(kāi)發(fā)的意義 和目的,和電子閱讀器這個(gè)行業(yè)的背景。 第 8 頁(yè) 第第 2 章章 研究現(xiàn)狀研究現(xiàn)狀 2.12.1 國(guó)內(nèi)外研究現(xiàn)狀國(guó)內(nèi)外研究現(xiàn)狀 最早出現(xiàn)在市場(chǎng)上的電子書(shū)閱讀器是美國(guó) soft book 公司的 soft book 和 nov.media 公司的 rocketbook。它們都具有美觀(guān)的外型形

15、狀像一本古典的精裝書(shū), 存儲(chǔ)容量分別為 8mb 和 32mb 的內(nèi)存,分別可以容納 5,000 和 32,000 多個(gè)電子頁(yè)的 信息,與計(jì)算機(jī)串口相連,可以從 soft book 和 nuvo media 的網(wǎng)上售書(shū)連鎖店,下 載書(shū)籍和期刊。2000 年 8 月, 美國(guó)微軟公司發(fā)布了一個(gè)可供人們閱讀電子書(shū)的應(yīng)用軟件 microsoft reader, 這種閱讀器軟件的核心技術(shù)是 clear type,微軟稱(chēng)之為“對(duì)液晶顯示屏具有革命性 的變革”,它是一種能使文字在顯示器上的顯示效果像印在紙上一樣平滑清晰的字 符顯示技術(shù),這種技術(shù)大大提高了屏幕的分辨率和清晰度,使讀者能夠獲得最接近 傳統(tǒng)書(shū)的閱讀

16、效果。同時(shí)南開(kāi)大學(xué)津科公司開(kāi)發(fā)了一款閱讀不耗電的電子書(shū)閱讀器, 該電子書(shū)閱讀器已經(jīng)面市并將投人大規(guī)模生產(chǎn)。它采用了華人科學(xué)家吳葆剛博士發(fā) 明的“多穩(wěn)態(tài)液晶顯示器”,并在國(guó)際上首次實(shí)現(xiàn)了“翻頁(yè)不耗電”閱讀顯示。除 了上述幾種電子書(shū)閱讀器之外,every book,librius,glass book 等公司也都推出 了自己的電子書(shū)閱讀器和閱讀軟件,遼寧出版集團(tuán)和美國(guó)秦通公司聯(lián)手合作推出了 中文電子“掌上書(shū)屋”。隨著這些閱讀器的出現(xiàn),使得電子圖書(shū)、期刊這些原本只 能在 pc 上閱讀的東西突然變得可以移動(dòng),電子書(shū)籍與紙制書(shū)籍之間的距離縮短了一 大步。同時(shí),電子書(shū)閱讀器更方便和靈活的使用功能也在不斷地

17、研究推出,例如, 可以在閱讀的時(shí)候加批注、書(shū)簽、字體可縮放、旋轉(zhuǎn)和支持聲音播放等等。 2.22.2 本章小結(jié)本章小結(jié) 本章主要介紹了電子閱讀器在國(guó)際國(guó)內(nèi)上的發(fā)展現(xiàn)狀,以及行業(yè)背景。 第 9 頁(yè) 第第 3 章章 可行性分析可行性分析 為了開(kāi)發(fā)出真正滿(mǎn)足用戶(hù)需求的軟件產(chǎn)品,需要對(duì)開(kāi)發(fā)產(chǎn)品做出需求分析。對(duì) 軟件的需求的合理把握是軟件開(kāi)發(fā)周期中非常重要的一個(gè)環(huán)節(jié),本章將對(duì)手機(jī)閱讀 器作較為全面的需求分析。 3.13.1 需求分析需求分析 隨著手機(jī)功能不斷增強(qiáng),手機(jī)閱讀器已成為智能手機(jī)重要軟件之一。開(kāi)發(fā)一款 符合廣大用戶(hù)需求的手機(jī)閱讀器有很好的市場(chǎng)前景和意義。 本軟件的目標(biāo)是開(kāi)發(fā)一款基于 android

18、 平臺(tái)符合用戶(hù)使用需求的手機(jī)電子書(shū)閱 讀器。本閱讀器支持 pdf 格式的文件。用戶(hù)可以通過(guò) pdf 閱讀器從 sdcard 選擇自己 想要觀(guān)看的 pdf 文件。本軟件具有美觀(guān)簡(jiǎn)潔便于用戶(hù)使用的觸摸界面,這也是 android 操作系統(tǒng)不同于傳統(tǒng) windows mobile 和 symbian 系統(tǒng)上應(yīng)用軟件的優(yōu)勢(shì)之 一。 3.23.2 pdfpdf 閱讀器功能需求閱讀器功能需求 作為 android 平臺(tái)上開(kāi)發(fā)的應(yīng)用軟件,它具有與用戶(hù)交互的界面,界面簡(jiǎn)潔美 觀(guān)易于操作。因此,對(duì)手機(jī)閱讀器的功能規(guī)定可以從手機(jī)閱讀器的界面來(lái)劃分。手 機(jī)閱讀器的用戶(hù)操作界面分為一下四部分:讀取界面,閱讀界面。 3

19、.33.3 運(yùn)行環(huán)境運(yùn)行環(huán)境 1.系統(tǒng)要求 android 系統(tǒng) 2.2 版本以上,對(duì)以后繼續(xù)進(jìn)行升級(jí)開(kāi)發(fā)有可延續(xù)性。 第 10 頁(yè) 2.靈活性 軟件基于 android 操作系統(tǒng),是基于組件的開(kāi)發(fā)方式。 3.時(shí)間特性的要求 軟件的速度要在用戶(hù)可接受的范圍能擴(kuò)展需求。 4.軟件特性要求 軟件運(yùn)行速度要在用戶(hù)可接受的范圍之內(nèi),對(duì)流量、電量等消耗要在用戶(hù)可接 受范圍之內(nèi)。 3.43.4 開(kāi)發(fā)工具開(kāi)發(fā)工具 作者運(yùn)用 myeclipse 軟件搭配 android apk 進(jìn)行軟件開(kāi)發(fā),操作系統(tǒng)為 win7 64 位,使用虛擬機(jī)為 android 4.0 480*800 的虛擬機(jī)。 3.53.5 本章小

20、結(jié)本章小結(jié) 本章主要介紹了 pdf 閱讀器的需求分析、pdf 閱讀器的功能需求和軟件運(yùn)行需 要的環(huán)境和軟件的開(kāi)發(fā)環(huán)境。 第 11 頁(yè) 第四章第四章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 4.14.1 結(jié)構(gòu)設(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)用軟件原則上是在 dalvik vm 上運(yùn)行的。 圖 1 android 的架構(gòu)1 關(guān)鍵應(yīng)用程序 android 平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶(hù)端程序、短信收發(fā)程 序、日歷和網(wǎng)頁(yè)瀏覽器等,開(kāi)發(fā)者可以在其平臺(tái)上開(kāi)

21、發(fā)更多有特色的應(yīng)用程序。開(kāi) 發(fā)語(yǔ)言是 java。 應(yīng)用程序框架 1 張鵬.eclipse 插件開(kāi)發(fā)學(xué)習(xí)筆記z.北京:電子工業(yè)出版社,2008 第 12 頁(yè) android 應(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ù)、基于 web

22、應(yīng)用的的安全協(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)存依賴(lài)的格式。java 編譯器(dx 工具)將注冊(cè)了的和 運(yùn)行時(shí)用到

23、的類(lèi)編譯成.dex 格式。dalvik 虛擬機(jī)依賴(lài)于底層 linux 內(nèi)核提供的功能, 如線(xiàn)程機(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è)屏蔽層用于屏蔽硬件和上層軟件。 4.2 系統(tǒng)功能設(shè)計(jì)系統(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)系人,短信,

24、電話(huà),鬧 第 13 頁(yè) 鐘等。本文設(shè)計(jì)的手機(jī)電子說(shuō)閱讀器就是屬于應(yīng)用層。 圖 2-系統(tǒng)功能設(shè)計(jì) 4.34.3 本章小結(jié)本章小結(jié) 本章介紹了系統(tǒng)設(shè)計(jì)的概要。 第 14 頁(yè) 第五章第五章 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn) 5.15.1 界面設(shè)計(jì)界面設(shè)計(jì) 界面設(shè)計(jì)見(jiàn)圖 3、圖 4、圖 5、圖 6、圖 7。本閱讀器的界面簡(jiǎn)單明了,使用戶(hù) 在最短時(shí)間內(nèi)打開(kāi)自己想要查看的 pdf,省略花哨的界面只保留最有用的功能。 圖 3-閱讀器初始界面 第 15 頁(yè) 圖 4 閱讀器打開(kāi) pdf 界面 第 16 頁(yè) 、 圖 5-閱讀器未找到 pdf 界面 第 17 頁(yè) 圖 6-閱讀器查找 pdf 界面 第 18 頁(yè) 圖 7-閱讀器在應(yīng)用

25、程序列表中的圖標(biāo) 5.25.2 閱讀閱讀 pdfpdf 功能功能 本功能可以在 android 手機(jī)上將 pdf 文件以圖片的形式打開(kāi),解決以往 pdf 文 件在手機(jī)上無(wú)法查看的問(wèn)題。部分代碼如下: package com.sun.pdfview; import java.util.iterator; 第 19 頁(yè) import java.util.list; import net.sf.andpdf.utils.utils; import android.graphics.matrix; import android.graphics.pointf; import android.graph

26、ics.rectf; import android.util.log; import com.sun.pdfview.font.pdffont; import com.sun.pdfview.font.pdfglyph; public class pdftextformat implements cloneable /* character spacing */ private float tc = 0; /* word spacing */ private float tw = 0; /* horizontal scaling */ private float th = 1; /* lead

27、ing */ private float tl = 0; /* rise amount */ private float tr = 0; /* text mode */ private int tm = pdfshapecmd.fill; /* text knockout */ private float tk = 0; /* current matrix transform */ private matrix cur; /* matrix transform at start of line */ private matrix line; /* font */ private pdffont

28、 font; /* font size */ private float fsize = 1; /* are we between bt and et? */ private boolean inuse = false; / private object array= new object1; 第 20 頁(yè) /* build text rep of word */ private stringbuffer word = new stringbuffer(); / this is where we build and keep the word list for this page. /* st

29、art location of the hunk of text */ private pointf wordstart; /* location of the end of the previous hunk of text */ private pointf prevend; /* * create a new pdftextformat, with initial values */ public pdftextformat() cur = new matrix(); line = new matrix(); wordstart = new pointf(-100, -100); pre

30、vend = new pointf(-100, -100); tc = tw = tr = tk = 0; tm = pdfshapecmd.fill; th = 1; /* * reset the pdftextformat for a new run */ public void reset() cur.reset(); line.reset(); inuse = true; word.setlength(0); /* * end a span of text */ public void end() inuse = false; 第 21 頁(yè) /* get the char spacin

31、g */ public float getcharspacing() return tc; /* set the character spacing */ public void setcharspacing(float spc) this.tc = spc; /* get the word spacing */ public float getwordspacing() return tw; /* set the word spacing */ public void setwordspacing(float spc) this.tw = spc; /* * get the horizont

32、al scale * return the horizontal scale, in percent */ public float gethorizontalscale() return th * 100; /* * set the horizontal scale. * param scl the horizontal scale, in percent (100=normal) */ public void sethorizontalscale(float scl) this.th = scl / 100; /* get the leading */ public float getle

33、ading() return tl; 第 22 頁(yè) /* set the leading */ public void setleading(float spc) this.tl = spc; /* get the font */ public pdffont getfont() return font; /* get the font size */ public float getfontsize() return fsize; /* set the font and size */ public void setfont(pdffont f, float size) this.font

34、= f; this.fsize = size; /* * get the mode of the text */ public int getmode() return tm; /* * set the mode of the text. the correspondence of m to mode is * show in the following table. m is a value from 0-7 in binary: * * 000 fill * 001 stroke * 010 fill + stroke * 011 nothing * 100 fill + clip * 1

35、01 stroke + clip * 110 fill + stroke + clip 第 23 頁(yè) * 111 clip * * therefore: fill corresponds to the low bit being 0; clip * corresponds to the hight bit being 1; and stroke corresponds * to the middle xor low bit being 1. */ public void setmode(int m) int mode = 0; if (m if (m if (m this.tm = mode;

36、 /* * set the mode from another text format mode * * param mode the text render mode using the * codes from pdfshapecmd and not the wacky pdf codes */ public void settextformatmode(int mode) this.tm = mode; /* * get the rise */ public float getrise() return tr; /* 第 24 頁(yè) * set the rise */ public voi

37、d setrise(float spc) this.tr = spc; /* * perform a carriage return */ public void carriagereturn() carriagereturn(0, -tl); /* * perform a carriage return by translating by x and y. the next * carriage return will be relative to the new location. */ public void carriagereturn(float x, float y) matrix

38、 trans = new matrix(); trans.settranslate(x, y); line.preconcat(trans); cur.set(line); /* * get the current transform */ public matrix gettransform() return cur; /* * set the transform matrix directly */ public void setmatrix(float matrix) line = new matrix(); utils.setmatvalues(line, matrix); cur.s

39、et(line); 第 25 頁(yè) /* * add some text to the page. * param cmds the pdfpage to add the commands to * param text the text to add */ public void dotext(pdfpage cmds, string text) pointf zero = new pointf(); matrix scale = new matrix(); utils.setmatvalues(scale, fsize, 0, 0, fsize * th, 0, tr); matrix at

40、 = new matrix(); list l = font.getglyphs(text); for (iterator i = l.iterator(); i.hasnext();) pdfglyph glyph = (pdfglyph) i.next(); at.set(cur); at.preconcat(scale); pointf advance = glyph.addcommands(cmds, at, tm); float advancex = (advance.x * fsize) + tc; if (glyph.getchar() = ) advancex += tw; a

41、dvancex *= th; cur.pretranslate(advancex, advance.y); float src = zero.x, zero.y; float dst = new floatsrc.length; cur.mappoints(dst, src); prevend.set(dst0, dst1); /* * add some text to the page. * param cmds the pdfpage to add the commands to * param ary an array of strings and doubles, where the

42、strings * represent text to be added, and the doubles represent kerning 第 26 頁(yè) * amounts. */ public void dotext(pdfpage cmds, object ary) throws pdfparseexception for (int i = 0; i ary.length; i+) if (aryi instanceof string) dotext(cmds, (string) aryi); else if (aryi instanceof double) float val = (

43、double) aryi).floatvalue() / 1000f; cur.pretranslate(-val * fsize * th, 0); else throw new pdfparseexception(bad element in tj array); /* * finish any unfinished words. todo: write this! */ public void flush() / todo: finish any unfinished words /* * clone the text format */ override public object c

44、lone() pdftextformat newformat = new pdftextformat(); / copy values newformat.setcharspacing(getcharspacing(); newformat.setwordspacing(getwordspacing(); newformat.sethorizontalscale(gethorizontalscale(); newformat.setleading(getleading(); newformat.settextformatmode(getmode(); newformat.setrise(get

45、rise(); / copy immutable fields newformat.setfont(getfont(), getfontsize(); 第 27 頁(yè) / clone transform (mutable) / newformat.gettransform().settransform(gettransform(); return newformat; 5.35.3 本章小結(jié)本章小結(jié) 本章主要介紹了 pdf 閱讀器的界面布局,界面樣式,和 pdf 閱讀器其中的功能, 并且展示部分代碼。 第六章第六章 系統(tǒng)測(cè)試系統(tǒng)測(cè)試 6.16.1 androidandroid 手機(jī)系統(tǒng)測(cè)試之打斷

46、事件手機(jī)系統(tǒng)測(cè)試之打斷事件 android 手機(jī)提供的打斷事件與以往手機(jī)有著一些機(jī)制上的不同,當(dāng)然也有很多 跟以前一樣的機(jī)制。所以我們要從他的應(yīng)用程序打斷機(jī)理出發(fā),定制本系統(tǒng)的系統(tǒng) 測(cè)試用例的打斷事件。 1打斷事件一般分為系統(tǒng)基本打斷事件; 2back 鍵; 3改變手機(jī)方向; 4長(zhǎng)按 home 鍵,切換應(yīng)用程序; 5內(nèi)容沖突檢測(cè)(content provider); 6長(zhǎng)按 power 鍵,調(diào)出關(guān)機(jī)窗口; 第 28 頁(yè) home 鍵回 home app,當(dāng)前測(cè)試的應(yīng)用就會(huì)放到后臺(tái)處于 stop 狀態(tài)。 如果想監(jiān)控到 activity 生命周期的變化,必然會(huì)在 create 或 start 等處

47、有代碼來(lái) 進(jìn)行處理。在 startactivityforresu 函數(shù)中,minstrumentation.execstartactivity()一句 讓我們看到至少有一個(gè) minstrumentation 的對(duì)象受委托在啟動(dòng) activity,這個(gè)委托是 有可能加入監(jiān)控動(dòng)作的。 public void startactivityforresult(intent intent, int requestcode) . 在以 perform 開(kāi)頭的幾個(gè)函數(shù)中,本系統(tǒng)再次發(fā)現(xiàn)了對(duì) minstrumentation 對(duì)象的 調(diào)用。例如 performstart()函數(shù)。 final void perf

48、ormstart() . 該類(lèi)的接口主要有以下幾類(lèi):對(duì) activity 監(jiān)控對(duì)象的處理接口,activity 狀態(tài)改 變時(shí)的回調(diào)通知接口,生成 activity 和 application 的接口,向 activity 發(fā)送事件通 知的接口,性能處理的接口等。 先來(lái)看 callactivityoncreate()函數(shù)。 public void callactivityoncreate(activity activity, bundle icicle) . 再來(lái)看本文章前文提到的 execstartactivity()函數(shù)。 public activityresult execstartact

49、ivity( . 6.26.2 測(cè)試中發(fā)現(xiàn)的問(wèn)題及修復(fù)測(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)部文件繁瑣, 第 29 頁(yè) 樣式冗雜,導(dǎo)致本程序在遍歷內(nèi)存卡,添加可用文件的時(shí)候出現(xiàn)錯(cuò)誤的判斷,使得 電子書(shū)不能正常的導(dǎo)入或者導(dǎo)入手機(jī)之后程序卻不能正確的讀取,在同學(xué)的幫助之 下,本程序最終采用直接輸入文件名查詢(xún)文件,完美的解決了文件加載錯(cuò)誤的問(wèn)題。 6.36.3 本章小結(jié)本章小結(jié) 本章主要介紹了軟件的測(cè)試過(guò)程,和其中問(wèn)題和修復(fù)過(guò)程。 第七章第七章

50、 總結(jié)總結(jié) 7.17.1 主要結(jié)論主要結(jié)論 隨著智能手機(jī)和 3g 網(wǎng)絡(luò)的發(fā)展,手機(jī)的功能和性能、通信網(wǎng)絡(luò)的數(shù)據(jù)業(yè)務(wù)支持 能力將極大增強(qiáng),手機(jī)將脫離傳統(tǒng)的打電話(huà)、發(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ī)制造商的青睞, 在這種情況下,google android 無(wú)疑成為我們進(jìn)行智能手機(jī)開(kāi)發(fā)的一個(gè)非常好的選 擇。 本文,筆者通過(guò)對(duì) android 這個(gè)橫空出世的平臺(tái)的簡(jiǎn)要介紹,概述了其

51、眾多的 優(yōu)點(diǎn)和其對(duì)整個(gè)智能手機(jī)乃至手機(jī)軟件開(kāi)發(fā)行業(yè)的意義和重要性,闡明了其研究的 重要性和必行性。而后,筆者根據(jù) android market 上用戶(hù)的喜愛(ài)程度來(lái)選擇了研 究方向:基于 android 手機(jī)平臺(tái)的 pdf 閱讀器。并根據(jù)此項(xiàng)目自身的特點(diǎn)和 android 平臺(tái)的特點(diǎn),選取了相應(yīng)的開(kāi)發(fā)工具,并對(duì)其做了簡(jiǎn)單的介紹。而后根據(jù) 第 30 頁(yè) 電子書(shū)閱讀器的特點(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ì)該項(xiàng)目做了相關(guān)的

52、測(cè)試。 在本課題完成的過(guò)程中,筆者完成了以下工作: 1.閱讀了大量的相關(guān)書(shū)籍,對(duì) android 手機(jī)平臺(tái)的開(kāi)發(fā)有了較為深層次的了解。 2.實(shí)踐了開(kāi)發(fā)環(huán)境的搭建,并最開(kāi)發(fā)工具做了相關(guān)的了解和優(yōu)化,最終選取了 當(dāng)前開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具的配置。 3.開(kāi)發(fā)并測(cè)試了基于 android 平臺(tái)下的 pdf 閱讀器,對(duì)一些已知的和用戶(hù)反饋 的 bug 和不足之處進(jìn)行了修改。 7.27.2 研究展望研究展望 由于時(shí)間倉(cāng)促,本系統(tǒng)還有些功能需要進(jìn)一步完善,下一步努力的方向如下: 1. 實(shí)現(xiàn)在線(xiàn)閱讀網(wǎng)站內(nèi) pdf 功能。 2. 提供閱讀 umd,chm,html,pdb 等格式的書(shū)籍功能。 3. 提供編輯 pdf

53、 功能。 第 31 頁(yè) 參參 考考 文文 獻(xiàn)獻(xiàn) 1 趙繼海.電子書(shū)閱讀器的發(fā)展及其對(duì)圖書(shū)館的影響j.大學(xué)圖書(shū)館學(xué)報(bào),2001,19(4) 2高峰,李玲試論電子書(shū)對(duì)圖書(shū)館的影響j山西廣播電視大學(xué)學(xué)報(bào),2007,12(1) 3祁英紅幾種常用電子書(shū)刊閱讀器的比較j甘肅科技縱橫,2006,35(6) 4周康電子書(shū)悄悄走近我們j出版參考,2006,(27) 5高煥堂. 應(yīng)用框架原理與程序設(shè)計(jì) 36 技m. 臺(tái)灣:misoo 設(shè)計(jì)中心,2008 6張鵬,姜昊,許力.eclipse 插件開(kāi)發(fā)m.北京:電子工業(yè)出版社,2008 7張鵬.eclipse 插件開(kāi)發(fā)學(xué)習(xí)筆記z.北京:電子工業(yè)出版社,2008 8劉慧

54、.java me 實(shí)用詳解-用 eclipse 進(jìn)行移動(dòng)開(kāi)發(fā)m.北京:電子工業(yè)出版社,2007 9 余志龍. google android sdk 開(kāi)發(fā)范例大全m. 北京:人民郵電出版社,2009 第 32 頁(yè) 第 33 頁(yè) 致致 謝謝 歷時(shí)將近兩個(gè)月的時(shí)間終于將這篇論文寫(xiě)完,在論文的寫(xiě)作過(guò)程中遇到了無(wú)數(shù) 的困難和障礙,都在同學(xué)和老師的幫助下度過(guò)了。尤其要強(qiáng)烈感謝我的論文指導(dǎo)老 師蔣文蓉老師,她對(duì)我進(jìn)行了無(wú)私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行論文的修 改和改進(jìn)。另外,在校圖書(shū)館查找資料的時(shí)候,圖書(shū)館的老師也給我提供了很多方 面的支持與幫助。在此向幫助和指導(dǎo)過(guò)我的各位老師表示最中心的感謝! 感謝這

55、篇論文所涉及到的各位學(xué)者。本文引用了數(shù)位學(xué)者的研究文獻(xiàn),如果沒(méi) 有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫(xiě)作。 感謝我的同學(xué)和朋友,在我寫(xiě)論文的過(guò)程中給予我了很多你問(wèn)素材,還在論文 的撰寫(xiě)和排版燈過(guò)程中提供熱情的幫助。 由于我的學(xué)術(shù)水平有限,所寫(xiě)論文難免有不足之處,懇請(qǐng)各位老師和學(xué)友批評(píng) 和指正! 第 34 頁(yè) 符號(hào)與標(biāo)記(附錄符號(hào)與標(biāo)記(附錄 1 1) 部分代碼: package com.sun.pdfview; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception;

56、import java.lang.ref.weakreference; import java.util.arraylist; import java.util.hashmap; import java.util.stack; import net.sf.andpdf.pdfviewer.bytebuffer; import net.sf.andpdf.utils.utils; import android.graphics.matrix; import android.graphics.path; import android.graphics.rectf; import android.g

57、raphics.path.direction; import android.graphics.path.filltype; import android.os.debug; import com.sun.pdfview.colorspace.pdfcolorspace; import com.sun.pdfview.decode.pdfdecoder; import com.sun.pdfview.font.pdffont; 第 35 頁(yè) public class pdfparser extends basewatchable /* emit a file of dct stream data. */ public final static string debug_dctdecode_data = debugdct

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論