【正文】
....................................................................................................................................14第 6 頁第一章 緒論 概述手機(jī)已經(jīng)成為了生活中不可缺少的通訊設(shè)備,沒有手機(jī)有時(shí)會讓人覺得寸步難行。正基于此,Google 于 2022 年 11 月 5 日宣布推出基于 Linux 平臺的開源手機(jī)操作系統(tǒng),號稱首個(gè)為移動終端打造的真正開放和完整的移動軟件——Android。電子書是利用現(xiàn)代信息技術(shù)創(chuàng)造的全新出版方式,將傳統(tǒng)的書籍出版發(fā)行方式以數(shù)字的形式通過計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)。隨著數(shù)字化的不斷興起,電子閱讀器市場的競爭變得越來越激烈。同時(shí),手機(jī)電子書閱讀器作為廣大網(wǎng)民經(jīng)常使用的一個(gè)工具,在手機(jī)閱讀市場逐漸擴(kuò)大的時(shí)候,人們對于閱讀的方便性和各種功能設(shè)置都有了更高的要求。因此,手機(jī)電子書閱讀器的應(yīng)用研究還大有潛力可挖。 時(shí)下社會的進(jìn)步更是讓人們的生活越來越忙碌,抱著厚厚的書本穿梭于大街小巷已經(jīng)不再適應(yīng)這個(gè)忙碌的時(shí)代。 就是因?yàn)槭謾C(jī)電子閱讀器方便快捷的優(yōu)點(diǎn),使得人們把用手機(jī)電子閱讀器閱讀閱讀電子書當(dāng)做當(dāng)科技時(shí)代的一種時(shí)尚。 本文的結(jié)構(gòu)本文介紹了作者從了解國內(nèi)外發(fā)展現(xiàn)狀,到配置開發(fā)環(huán)境以及需求分析之后完成項(xiàng)目并且調(diào)試成功的過程,展現(xiàn)了簡易 PDF 閱讀器的開發(fā)歷程。第 8 頁第 2 章 研究現(xiàn)狀 國內(nèi)外研究現(xiàn)狀最早出現(xiàn)在市場上的電子書閱讀器是美國 Soft Book 公司的 Soft Book 和 公司的 RocketBook。2022 年 8 月, 美國微軟公司發(fā)布了一個(gè)可供人們閱讀電子書的應(yīng)用軟件 Microsoft Reader,這種閱讀器軟件的核心技術(shù)是 Clear Type,微軟稱之為“對液晶顯示屏具有革命性的變革”,它是一種能使文字在顯示器上的顯示效果像印在紙上一樣平滑清晰的字符顯示技術(shù),這種技術(shù)大大提高了屏幕的分辨率和清晰度,使讀者能夠獲得最接近傳統(tǒng)書的閱讀效果。它采用了華人科學(xué)家吳葆剛博士發(fā)明的“多穩(wěn)態(tài)液晶顯示器”,并在國際上首次實(shí)現(xiàn)了“翻頁不耗電”閱讀顯示。隨著這些閱讀器的出現(xiàn),使得電子圖書、期刊這些原本只能在 PC 上閱讀的東西突然變得可以移動,電子書籍與紙制書籍之間的距離縮短了一大步。 本章小結(jié)本章主要介紹了電子閱讀器在國際國內(nèi)上的發(fā)展現(xiàn)狀,以及行業(yè)背景。對軟件的需求的合理把握是軟件開發(fā)周期中非常重要的一個(gè)環(huán)節(jié),本章將對手機(jī)閱讀器作較為全面的需求分析。開發(fā)一款符合廣大用戶需求的手機(jī)閱讀器有很好的市場前景和意義。本閱讀器支持 PDF 格式的文件。本軟件具有美觀簡潔便于用戶使用的觸摸界面,這也是Android 操作系統(tǒng)不同于傳統(tǒng) Windows Mobile 和 Symbian 系統(tǒng)上應(yīng)用軟件的優(yōu)勢之一。因此,對手機(jī)閱讀器的功能規(guī)定可以從手機(jī)閱讀器的界面來劃分。 運(yùn)行環(huán)境Android 系統(tǒng) 版本以上,對以后繼續(xù)進(jìn)行升級開發(fā)有可延續(xù)性。軟件的速度要在用戶可接受的范圍能擴(kuò)展需求。 開發(fā)工具作者運(yùn)用 Myeclipse 軟件搭配 android APK 進(jìn)行軟件開發(fā),操作系統(tǒng)為 WIN7 64 位,使用虛擬機(jī)為 android 480*800 的虛擬機(jī)。第 11 頁第四章 系統(tǒng)設(shè)計(jì) 結(jié)構(gòu)設(shè)計(jì)Android 的架構(gòu)是 Linux 內(nèi)核、C/C++函數(shù)庫、Dalvik 虛擬機(jī)、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,如圖 1 所示,通過編譯基于框架的應(yīng)用程序可以降低開發(fā)負(fù)荷。圖 1 Android 的架構(gòu) [1]關(guān)鍵應(yīng)用程序Android 平臺內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網(wǎng)頁瀏覽器等,開發(fā)者可以在其平臺上開發(fā)更多有特色的應(yīng)用程序。應(yīng)用程序框架[1] 插件開發(fā)學(xué)習(xí)筆記[Z].北京:電子工業(yè)出版社,2022第 12 頁Android 應(yīng)用程序的開發(fā)基于框架和組件。C/C++函數(shù)庫Android 應(yīng)用程序框架之下是一套 C/C++函數(shù)庫,它們服務(wù)于 Android 應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者。Java 程序運(yùn)行環(huán)境Android 的 Java 程序運(yùn)行環(huán)境包含一組 Java 核心函數(shù)庫及 Dalvik 虛擬機(jī),它們有效地優(yōu)化了 Java 程序的運(yùn)行過程。Dalvik 虛擬機(jī)的可執(zhí)行文件被封裝成 Dalvik 可執(zhí)行格式(.dex)。Java 編譯器(dx 工具)將注冊了的和 格式。Linux 內(nèi)核Android 系統(tǒng)平臺是基于優(yōu)化了的 Linux 內(nèi)核,是其系統(tǒng)平臺的核心。 系統(tǒng)功能設(shè)計(jì)應(yīng)用平臺層是位于 Android 操作系統(tǒng)與應(yīng)用層之間的,HomeScreen 是用來用用程序顯示的,它是用來管理和開啟應(yīng)用程序的平臺。本文設(shè)計(jì)的手機(jī)電子說閱讀器就是屬于應(yīng)用層。第 14 頁第五章 系統(tǒng)實(shí)現(xiàn) 界面設(shè)計(jì)界面設(shè)計(jì)見圖 圖 圖 圖 圖 7。圖 3閱讀器初始界面第 15 頁圖 4 閱讀器打開 PDF 界面第 16 頁、圖 5閱讀器未找到 PDF 界面第 17 頁圖 6閱讀器查找 PDF 界面第 18 頁圖 7閱讀器在應(yīng)用程序列表中的圖標(biāo) 閱讀 PDF 功能本功能可以在 android 手機(jī)上將 PDF 文件以圖片的形式打開,解決以往 PDF 文件在手機(jī)上無法查看的問題。import 。import 。import 。import 。import 。 /** word spacing */ private float tw = 0。 /** leading */ private float tl = 0。 /** text mode */ private int tm = 。 /** current matrix transform */ private Matrix cur。 /** font */ private PDFFont font。 /** are we between BT and ET? */ private boolean inuse = false。第 20 頁 /** build text rep of word */ private StringBuffer word = new StringBuffer()。 /** location of the end of the previous hunk of text */ private PointF prevEnd。 line = new Matrix()。 prevEnd = new PointF(100, 100)。 tm = 。 } /** * reset the PDFTextFormat for a new run */ public void reset() { ()。 inuse = true。 } /** * end a span of text */ public void end() { inuse = false。 } /** set the character spacing */ public void setCharSpacing(float spc) { = spc。 } /** set the word spacing */ public void setWordSpacing(float spc) { = spc。 } /** * set the horizontal scale. * param scl the horizontal scale, in percent (100=normal) */ public void setHorizontalScale(float scl) { = scl / 100。 }第 22 頁 /** set the leading */ public void setLeading(float spc) { = spc。 } /** get the font size */ public float getFontSize() { return fsize。 = size。 } /** * set the mode of the text. The correspondence of m to mode is * show in the following table. m is a value from 07 in binary: * * 000 Fill * 001 Stroke * 010 Fill + Stroke * 011 Nothing * 100 Fill + Clip * 101 Stroke + Clip * 110 Fill + Stroke + Clip第 23 頁 * 111 Clip * * Therefore: Fill corresponds to the low bit being 0。 and Stroke corresponds * to the middle xor low bit being 1. */ public void setMode(int m) { int mode = 0。 0x1) == 0) { mode |= 。 0x4) != 0) { mode |= 。 0x1) ^ ((m amp。 } = mode。 } /** * Get the rise */ public float getRise() { return tr。 } /** * perform a carriage return */ public void carriageReturn() { carriageReturn(0, tl)。 (x, y)。 (line)。 } /** * set the transform matrix dire