




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《电子商务移动开发技术》大作业简易PDF阅读器简易PDF阅读器摘要在科技日益发达的今天,社会竞争越来越激烈,这要求人们不断的摄取信息来充实自己。要求人们能随时随地的了解并获取所需的信息。在这种情况下,电子书阅读器刚好满足了人们便捷地获取信息的需求。本文设计的简易PDF阅读器是基于Android平台设计的,Android平台是目前发展最快、最具市场前景的智能手机操作系统。本系统是根据 GoogleAndroid平台用户的喜好和其平台的特性而设计的,在GoogleAndroid平台自带的SD幽境下,运用Eclipse,Photoshop等相关工具进行开发的。本文介绍了GoogleAndroid开发的流程,讨论了基于 Android平台应用程序开发的关键技术,对简易PDF阅读器做了详细的需求分析,并重点介绍了基于Android平台的手机电子书阅读器的总体设计,主要包括手机电子书阅读器的架构设计、各功能模块的设计与实现本文设计的简易PDF阅读器通过了功能和性能方面的测试,证明了本文设计方案的可行性。通过对基于Android平台手机简易PDF阅读器的设计与实现的介绍,希望能为今后开发出功能更强大的阅读器提供有益的借鉴。关键词: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本文的结构 6本章小结6第二章研究现状7国内外研究现状7本章小结8TOC\o"1-5"\h\z\o"CurrentDocument"第三章可行性分析 8\o"CurrentDocument"需求分析 8\o"CurrentDocument"PDF阅读器功能需求 8\o"CurrentDocument"运行环境 9\o"CurrentDocument"开发工具 9\o"CurrentDocument"本章小结 9参考文献30致谢32\o"CurrentDocument"符号与标记(附录 1)33第一章绪论概述手机已经成为了生活中不可缺少的通讯设备,没有手机有时会让人觉得寸步难行。手机不仅具备传统的打电话、发短信等基本的功能,而且具有强大的处理能力和可扩展能力,能进行电子图书的阅览、基于3G网络实现高速数据传输、第三方浏览软件的运用等,越来越多的功能和业务将被开发出来并大规模的应用。正基于此,Google于2007年11月5日宣布推出基于 Linux平台的开源手机操作系统,号称首个为移动终端打造的真正开放和完整的移动软件——Android。二十世纪七十年代,著名软件工程师 Andsan.Fandamuft美国布朗大学阐述通过计算机创建和阅读文件的时候首次提出了电子书 [〔[(electronicBook,eBook)这一术语。电子书是利用现代信息技术创造的全新出版方式,将传统的书籍出版发行方式以数字的形式通过计算机网络实现。阅读器指的是一个设备,是专门用来看电子书的。随着数字化的不断兴起,电子阅读器市场的竞争变得越来越激烈。电子阅读现在是国家和业内非常重视的一个新兴产业,它与国家提倡的“自主创新,增强核心竞争力”、开展低碳、节能环保的社会环境相吻合,很多厂商、科研院所都将目光放到了这个原本没有足够重视的领域上。同时,手机电子书阅读器作为广大网民经常使用的一个工具,在手机阅读市场逐渐扩大的时候,人们对于阅读的方便性和各种功能设置都有了更高的要求。虽然现在手机电子书阅读器功能己经比较完善,但是离人们的期望还存在较大的距离,比如改善人们的阅读环境,使人们读起来不感到疲倦而且充满乐趣,同时现在的阅读器多媒体性能还不够完善。因此,手机电子书阅读器的应用研究还大有潜力可挖。课题研究的目的和意义当今社会手机是已经成为了生活中不可缺少的通讯设备,随着科技的发展手机的功能也越来越强大,手机电子阅读器是手机中的一种重要软件,其真正意义上指的是一个可以阅读设备,是专门用来阅读电子书的,随着二十一世纪数字信息化的不断兴起,电子阅读器的市场竞争也变得越来越激烈。时下社会的进步更是让人们的生活越来越忙碌,抱着厚厚的书本穿梭于大街小巷已经不再适应这个忙碌的时代。当人们奔波于不同的城市、出没在不同的场所、搭乘不同的交通工具的时候,手机电子阅读器就可以为人们提供方便快捷的阅读平台,它的作用就像一座桥梁,在我们不方便利用书本或者网络的时候提供一个更快更方便的平台,让人们能随时的阅读自己喜欢的电子图书。就是因为手机电子阅读器方便快捷的优点,使得人们把用手机电子阅读器阅读阅读电子书当做当科技时代的一种时尚。这也让手机电子阅读器在人们的生活中扮演的角色越来越重要。本文的结构本文介绍了作者从了解国内外发展现状,到配置开发环境以及需求分析之后完成工程并且调试成功的过程,展现了简易 PDF阅读器的开发历程。本章小结本章主要初步介绍了 android技术的起源与发展,简易 PDF阅读器开发的意义和目的,和电子阅读器这个行业的背景。第二章研究现状国内外研究现状最早出现在市场上的电子书阅读器是美国SoftBook公司的SoftBook和Nov.Media公司的RocketBook。它们都具有美观的外型形状像一本古典的精装书,存储容量分别为8MB和32MB的内存,分别可以容纳5,000和32,000多个电子页的信息,与计算机串口相连,可以从 SoftBook和NuvoMedia的网上售书连锁店,下载书籍和期刊。2000年8月,美国微软公司发布了一个可供人们阅读电子书的应用软件Microsoft Reader,这种阅读器软件的核心技术是 Clear Type,微软称之为“对液晶显示屏具有革命性的变革”,它是一种能使文字在显示器上的显示效果像印在纸上一样平滑清晰的字符显示技术,这种技术大大提高了屏幕的分辨率和清晰度,使读者能够获得最接近传统书的阅读效果。同时南开大学津科公司开发了一款阅读不耗电的电子书阅读器,该电子书阅读器已经面市并将投人大规模生产。它采用了华人科学家吴葆刚博士发明的“多稳态液晶显示器”,并在国际上首次实现了“翻页不耗电”阅读显示。除了上述几种电子书阅读器之外,EveryBook,Librius,GlassBook等公司也都推出了自己的电子书阅读器和阅读软件,辽宁出版集团和美国秦通公司联手合作推出了中文电子“掌上书屋”。随着这些阅读器的出现,使得电子图书、期刊这些原本只能在 PC上阅读的东西突然变得可以移动,电子书籍与纸制书籍之间的距离缩短了一大步。同时,电子书阅读器更方便和灵活的使用功能也在不断地研究推出,例如,可以在阅读的时候加批注、书签、字体可缩放、旋转和支持声音播放等等。本章小结本章主要介绍了电子阅读器在国际国内上的发展现状,以及行业背景。第三章可行性分析为了开发出真正满足用户需求的软件产品,需要对开发产品做出需求分析。对软件的需求的合理把握是软件开发周期中非常重要的一个环节,本章将对手机阅读器作较为全面的需求分析。需求分析随着手机功能不断增强,手机阅读器已成为智能手机重要软件之一。开发一款符合广大用户需求的手机阅读器有很好的市场前景和意义。本软件的目标是开发一款基于Android平台符合用户使用需求的手机电子书阅读器。本阅读器支持PDF格式的文件。用户可以通过 PDF阅读器从SDCARD择自己想要观看的PDF文件。本软件具有美观简洁便于用户使用的触摸界面,这也是Android操作系统不同于传统 WindowsMobile和Symbian系统上应用软件的优势之一。PDF阅读器功能需求作为Android平台上开发的应用软件,它具有与用户交互的界面,界面简洁美观易于操作。因此,对手机阅读器的功能规定可以从手机阅读器的界面来划分。手机阅读器的用户操作界面分为一下四部分:读取界面,阅读界面。运行环境系统要求Android系统2.2版本以上,对以后继续进行升级开发有可延续性。灵活性软件基于Android操作系统,是基于组件的开发方式。时间特性的要求软件的速度要在用户可接受的范围能扩展需求。软件特性要求软件运行速度要在用户可接受的范围之内,对流量、电量等消耗要在用户可接受范围之内。开发工具作者运用Myeclipse软件搭配androidAPK进行软件开发,操作系统为WIN764位,使用虚拟机为android4.0480*800的虚拟机。本章小结本章主要介绍了 PDF阅读器的需求分析、PDF阅读器的功能需求和软件运行需要的环境和软件的开发环境。第四章系统设计结构设计Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图1所示,通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在DalvikVM上运行的。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的架构[1]关键应用程序Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。开发语百是Java。应用程序框架[1]张鹏.Eclipse插件开发学习笔记[Z].北京:电子工业出版社,2008Android应用程序的开发基于框架和组件。Android本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。C/C++函数库Android应用程序框架之下是一套C/C+的数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准 C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WE时用的的安全协议SSL用于点阵和矢量字体渲染的FreeType以及SQLite引擎等。Java程序运行环境Android的Java程序运行环境包含一组Java核心函数库及 Dalvik虚拟机,它们有效地优化了Java程序的运行过程。所有的Android应用都运行在它自己的进程里,该进程是一个 Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。Dalvik虚拟机的可执行文件被封装成 Dalvik可执行格式(.dex)。这是被优化过的最小内存依赖的格式。Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。Dalvik虚拟机依赖于底层 Linux内核提供的功能,如线程机制,和内存管理机制等。Linux内核Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。系统功能设计应用平台层是位于Android操作系统与应用层之间的,HomeScreen>用来用用程序显示的,它是用来管理和开启应用程序的平台。最上层的是应用程序,该层包含手机上安装的各种应用程序,只要包括:日历,地图,联系人,短信,电话,闹钟等。本文设计的手机电子说阅读器就是属于应用层应用平台层系统层Linux内核图2-系统功能设计4.3本章小结本章介绍了系统设计的概要第五章系统实现界面设计界面设计见图3、图4、图5、图6、图7。本阅读器的界面简单明了,使用户在最短时间内打开自己想要查看的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阅读器打开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-阅读器在应用程序列表中的图标阅读PDF功能本功能可以在android手机上将PDF文件以图片的形式打开,解决以往 PDF文件在手机上无法查看的问题。部分代码如下: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本章小结本章主要介绍了PDF阅读器的界面布局,界面样式,和PDF阅读器其中的功能,并且展示部分代码。第六章系统测试Android手机系统测试之打断事件Android手机提供的打断事件与以往手机有着一些机制上的不同,当然也有很多跟以前一样的机制。所以我们要从他的应用程序打断机理出发,定制本系统的系统测试用例的打断事件。1.打断事件一般分为系统基本打断事件;2.Back键;3.改变手机方向;4.长按Home键,切换应用程序;5.内容冲突检测(contentprovider);6.长按Power键,调出关机窗口;Home键回homeapp,当前测试的应用就会放到后台处于 stop状态。如果想监控到Activity生命周期的变化,必然会在Create或Start等处有代码来进行处理。在startActivityForResu函数中,mInstrumentation.execStartActivity()一句让我们看到至少有一个mInstrumentation的对象受委托在启动Activity,这个委托是有可能加入监控动作的。publicvoidstartActivityForResult(Intentintent,intrequestCode){ }在以peform开头的几个函数中,本系统再次发现了对 mInstrumentation对象的调用。例如peformStart()函数。finalvoidperformStart(){ }该类的接口主要有以下几类:对 Activity监控对象的处理接口,Activity状态改变时的回调通知接口,生成 Activity和Application的接口,向Activity发送事件通知的接口,性能处理的接口等。先来看callActivityOnCreate()函数。publicvoidcallActivityOnCreate(Activityactivity,Bundleicicle){ }再来看本文章前文提到的execStartActivity()函数。publicActivityResultexecStartActivity( }测试中发现的问题及修复本系统在设计开发的过程当中,遇到了不少的问题,在老师的细心帮助和指导,在各位朋友,同时的同心协助下都已一一解决。本程序的最主要问题是在文件源获取时,发生因为手机储存卡内部文件繁琐,样式冗杂,导致本程序在遍历内存卡,添加可用文件的时候出现错误的判断,使得电子书不能正常的导入或者导入手机之后程序却不能正确的读取,在同学的帮助之下,本程序最终采用直接输入文件名查询文件,完美的解决了文件加载错误的问题。本章小结本章主要介绍了软件的测试过程,和其中问题和修复过程。第七章总结主要结论随着智能手机和 3G网络的发展,手机的功能和性能、通信网络的数据业务支持能力将极大增强,手机将脱离传统的打电话、发短信等基本的功能,而基于智能手机强大的处理能力和可扩展能力,基于3G网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用。而Android手机平台作为移动平台的新秀,以其良好的性能和强大的功能,以开源的形式受到广大开发者和手机制造商的青睐,在这种情况下,GoogleAndroid无疑成为我们进行智能手机开发的一个非常好的选择。本文,笔者通过对 Android这个横空出世的平台的简要介绍,概述了其众多的优点和其对整个智能手机乃至手机软件开发行业的意义和重要性,阐明了其研究的重要性和必行性。而后,笔者根据 AndroidMarket上用户的喜爱程度来选择了研究方向:基于Android手机平台的PDF阅读器。并根据此工程自身的特点和Android平台的特点,选取了相应的开发工具,并对其做了简单的介绍。而后根据电子书阅读器的特点选择了数据库存取方式,并根据 Android手机的特点制定了基于Andorid手机平台下的电子商业阅读器的布局(界面),然后根据 Android平台的自身特点进行了开发,并对其关键性代码进行了说明。并对该工程做了相关的测试。在本课题完成的过程中,笔者完成了以下工作:阅读了大量的相关书籍,对 Android手机平台的开发有了较为深层次的了解。实践了开发环境的搭建,并最开发工具做了相关的了解和优化,最终选取了当前开发环境和开发工具的配置。开发并测试了基于Android平台下的PDF阅读器,对一些已知的和用户反馈的bug和不足之处进行了修改。研究展望由于时间仓促,本系统还有些功能需要进一步完善,下一步努力的方向如下:实现在线阅读网站内PD皿能。提供阅读UMD,CHM,HTML,PDB^式的书籍功能。提供编辑PD皿能。参考文献[1]赵继海.电子书阅读器的发展及其对图书馆的影响 [J].大学图书馆学报,2001,19(4)高峰,李玲.试论电子书对图书馆的影响 [J].山西广播电视大学学报,2007,12(1)祁英红.几种常用电子书刊阅读器的比较 [J].甘肃科技纵横,2006,35(6)周康.电子书悄悄走近我们[J].出版参考 ,2006,(27)高焕堂.应用框架原理与程序设计 36技[M].台湾:MISOO设计中心,2008张鹏,姜昊,许力.Eclipse插件开发[M].北京:电子工业出版社,2008张鹏.Eclipse插件开发学习笔记 [Z].北京:电子工业出版社,20082007[8]刘慧.JavaME实用详解―用Eclipse进行移动开发[M].北京:电子工业出版社,2007余志龙.GoogleAndroidSDK开发范例大全[M].北京:人民邮电出版社,2009历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师一蒋文蓉老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!符号与标记(附录 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客观分析CFA试题及答案
- 印度神像美术课件
- 食品安全知识宣传主题班会
- 大学生防骗知识课件下载
- 医疗器械行业的安全知识培训
- 收银基础知识
- 预防校园伤害2
- 针刺伤的预防
- 预防下肢静脉栓塞
- 大班幼儿安全教育教案
- 三级医院评审标准(2022 年版)广东省实施细则院感组
- 医疗器械冷链(运输、贮存)管理指南
- 03s402国家标准图集
- 第二批国家重点监控药品合理使用规范
- 2024年无锡科技职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 髂动脉瘤的护理查房
- 语文堂教学中的小组合作学习
- 《哈利·波特与火焰杯》
- 《过敏性休克》课件
- 2024年国信证券股份有限公司招聘笔试参考题库含答案解析
- 第6课+欧洲的思想解放运动【中职专用】《世界历史》(高教版2023基础模块)
评论
0/150
提交评论