版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要在科技日益发达的今天社会竞争越来越激这要人不断获取信息来充实自己。这就要人们能随时随的了解并获取所需的信息。与同时手机的功能越来越强大,将脱离传统的打、发信等基本的功,在这种况下新阅阅读器以满足人们对界信息了解的。本系统是在Andrid平台下设计的在GogleAndroid平台的SDK21环境下运用Eclise进行开论文概括的了ndroid开发的程并重的介绍了基于Android平台的SS阅读器的开发过程。论首介绍了课题的研究、研究现状和主要研究内容;然后对系统中到理论知识和相关技术进行了详细的阐述,包括Android平的相关理论知识Android环境的搭建、数据源的选数据的解方法及系统的详细实现过。系统选了浪RSS源以及pull解析方法。系统完成以可以实现RSS阅读器基功能,论文阐述具实现方法以及相应的关键代码。本课题完成设计实现的系统已经试运正常。用户使用该系统可以方及时的阅读到自己感兴趣的新闻关键:RSS阅读器Adroid操作系统Pull解析算法Abstractlt'smoreadvancedinteclmologytodaandthesocialcompetitionismoreandmorefiercwhichrequiresconstantaccesstoinformationtopeopletoenrichthemselves.Atthesametimmobilephonesbecomemoreandmorepowerfuwillbreakawayfromtraditionalphonecalsendingmessagsandotherbasicfunctios.Inthiscasthenewsreaderistomeetthepeople'sundetandingoftheneedsofouideinformation.ThissystemisdesignedintheAndroidpJatforcomeswithteGoogleAndroidPlaformSDK2.1environentheeofEclipsefordevelopmet.ThspaperdescribshegeneralprocessofAndroiddevelopmenandfocusontheintrodutionoftheAndroidplatform-basedRSSreaderdevelopmentprocess.Thispaperintroducestheresearchbackgrouncurrentsituationandmaincontent;andthendescribesthetheoreticalknowledgeandrelatedtechnologiessdinthesystemindetailincludingthetheoryofAndroidplatforbuiJdingAndroidnvironmentheslectionofdatasourcesdataanalyticalmethosandhedtailedimpmentationprocs.ThesystemseJesSinaRSSoureandPuliparsingmthod.ftercompletingthesystyoucanachievethebasicfunctionsofRSSeadethepaperdsribesthespecificimplementationmethodandthecorrespondingkeycode.Thedesignandimplementationofthesytemhsbeentstrunnormally.Userscaneasilyusethesystereadtimelynewsofpersonalinteret.Keywords:RSSreadeAndroidOperatingStem,Pullpaingmethod且录摘 ...................................................................................................................1Atract..................................................................................................................11l ...................….........……..............….......….......……..............................111 课背景..........….......….....….......….........…......................................112 课题的目的义....................………….............................213 究状.......….......….........................................................................32 Andoid关论知识......….......….......….......……..........
....................62.. Android平介绍...........….......…....……..............…...........6 Android境搭建..........................................................................43 相关论.........................….......…….......................…................................9.1 SS简介............................…...................….......……................92 ull解析法研究............................ ……................................204 noid平下SS器详分析设与现.....................................22.1 问题的提出............................................................................................224.2 解决方案............……............……..................…...….........234.3 主要能细设计与现.....................................…...........................245 总结与展望........................................................................................................3951 作总结.........................................................................................392 作望............................…........................................39致谢........................................................................................................................40参考献..........................…………....................………….................................41m1绪论 课题背景现在已经成为了人们生活中不可或缺的通讯设备,没有有时会让人觉寸步难行。将脱离统打、短信等基本的功,而基于手机强大的理能力和可扩展能力以及G网络高速数据传输越来越多的功能不日业务将被开发出来井大规模的应用。正为如此当全世界的目光聚焦的时候,Google于2007年11月5日宣布推出基于Linux平台的开源作系号称个为移动打真正开发和完整的移动软- AndroidoAndroid是于Linux内核的软件平台和操作系统早期由Googe开发,后由开放联盟(OpenandsetAlliance)开发。它采了软件(softwarestac,又名以软件叠层)的构架主要分三分底层以Linux内核作为基础,由C言开,只供基础功能。中间层包函库Library和虚拟机VirtualMachin,由C+开发。最上层是应用软包括通话程短信程序等应用软则由自行开发,由Java编写。Android不仅仅只是个操作统,包括:I、经过Google剪裁和调优的LinxKernel,于掌上设备的硬件提供了很好的支持Google在Linux方面的应用能力不容置疑,Google公司几乎所有的万服务全部是自修改过的Linux操作系。过Google改的Java虚拟机Dalvik是于ApacheHarmony虚拟机版本进行改良而来,能够提供高执行。有了Java虚拟机,部分Java核心类库已经可直接运行。、量立即可用的类库和应用软例如浏览器Webki数据库SQLit,可轻易开发出来媲美于桌面应用复杂度的软件。4Google已开发好了量现成的应用软件,同时可直接使用Google很多在线服。Goe提供于Eclise的完整开发环境、模拟器、文档、帮助、示例等将极大推动And快速的和发展。基于Andod众多的优点,围绕ndid形成个移动联盟的厂商几乎全列,而此联盟在极大的推动Andìd平台的和发在未来的几年必将大方异彩,将极大的推动整个操作系统至联网乃至软件行业的发展。1.2课题研究的目的和意义Android这个平台对于Google对于大众的意义不在于本身Android存在的目的也不在挑起操作系统之间的混而在推动移动互联业链的迅速。有开源特性的Android平台打破了之前Symbianwindowsrnobile等操作系统收高额的授权费用的模式使得只能成本大大的降而正是于它开发源代码,使得生更多个性化的应用。同作方能这里得到利润创造价值,软件行业得到维护协调发展。以Googl果和诺基亚为中心形成的生态链将来数倍的速度推动移联网的发展,这正是Google推出Adroid平台的意也是Android台在的使而作为Android平台成员一的中国移动也技资成立家通讯公专门从事Google软件的应及本地化的软件开发,如将在Google手机平台添加飞信、输入法等系列符国内用户使用特色的功能。国内众多业也将眼光投入到Android上面动了相关的计划来深入的理解并发展Android更多的软件发企业已经者筹将公司进行转型,从其方向的开发转向到Android的开发。综上所述,无论是国内还国外Android平台对软件行业和移动平台将发挥极大地推动作而在未来的几年或段时间Android将越发的凸显己的重要性基于此,我们有必要通过进行相关的研究来了解Android平台,来了解开发Android的一大批人的先进的理念和思想,并通过这些来了解软件行业,进而解未来无移动互联网的发展趋,从更好的适应时需要。1.3研究现状本节对各大站点对RSS的支持情及现有RSS阅读器进行了分析和综合,提出了系统实现可借鉴的地方。1各种站点对SS的支持情况目前支持RSS站'点主要分为下面几:新闻资讯类站P站点、立博客站其站点。新闻资讯类站点指的是传统的户网站,这类门户网站一般是站长管理式的信息涉及非广泛来源比较集中、权威性比高一直受到传统互联网用户的青睐。用户可以从这一类网站了解到各种需要的综合信息。几大典型的例子有新门户、搜狐门户和!腾讯门等等。了合用户的需要这类网站一般也有推出RSS订阅功能,这类网站的信息更新非常频繁、信息也比较巨大,因,用户不怎么倾订阅此类网站。BSP站即Blogserviceprovidr(博客服务提供商),这类站点为用户提供博客服除了提供基本的博客添加评论之大部分BSP都会针对某个博客提供RSS订阅功。比新浪博和博客园等等。这类网站在RSS信息更新方面的特点更新相对不频繁、也规律。但是用户比较倾向于订阅这类网站,为许多博客的话是针对特定领域,用户的阅倾向往往针对某一领域的。独立博客站指的是博主自己申请域自己开通且自己维护的博客。这类博客站一般使用已有的博客系统(比如wodpress,而这些博客系一般都会提供RSS阅功能。在信息方面,立博客一直是IT业比睐的网,比月光博、小众软等等。在国,一博客点加流行。其他站,指是迎合用户特需的站点。这类站点提供某些定期更新的特殊信息,比如天气预报信校就业信息学院通知信息。这类信不适合所有用户{.且就算如此,提供RSS订阅服务能使得心它用劳永逸。这类信息更新的频繁度往往没有什么规。对fSS源站点信息,我们总结如表11所:表11各种RSS源网站情况对比RSS源点用户群体RSS支持程度更新频繁程度新闻门户大众用户一般频繁BP站点专注个领域的用户好不频繁独立博客站点专业用户非常好不频繁其他站点具有特殊需求的用户不好不确定1移动阅读器实现方案线阅器离线RSS阅读器主要指的是用一个客户端软件进行RSS阅读,如浏览器自带的HSS阅读,以及桌面RSS阅读器。这类阅读器的主要优点:(1)通过本地缓存将内容呈现给用户,使得RSS阅读不受网络影响(2)响应速度快,加载速度快。它的主要缺点:(1)RSS信息的获取由客户端完成,增加了户端的处理负担(2由于订阅信息都在本地,因此不便于用户转移数据。对来说,计算能力和内存空间属于稀缺资源因此离线RSS阅读器实现方案并不适合。此离线阅读器的实现方案和互联网的发展趋势也是背道而驰的。在线阅器在线阅读器大多是通浏览器访问一阅读器,对于在线阅读器来各个订阅网站信息的获取是由提供服务方完成的,客户端只负责接收服务端返回的数据并且确显示。在线阅读器的特点是依靠网络、极大化的减轻客户端的负担、便于用户在不同客户端使用软件及其数据等等。随着web.0的发展些在线RSS阅读器已经进入人们的视野,典型的范例有Google阅读器、鲜果网、抓虾网和哪吨这些网站也相继都推出了各自的版。这些版的RSS阅读器都是我们需要借鉴的。但是,对普通用户来说RSS是个比较难以理解的东西(尤其是在内),因此这类读器的普及是重难题,我们的工重点,就是屏蔽RSS阅读器的技术细节,给用户提观、全面的、易懂的服务。2 Android论识2.1 Android平台绍11Andid系统简介Android词指"人",同时也是oogle于2007年11月5宣的基于Lnux平开源操作系统的名它包括作系界面和应用程一一动所需的全不存在任何以阻碍移动业创新的有权障碍。目前,最本为Android2.4Gingerbread和Android.0Honeycomb。Googleandroid平台的系构架图.1:ApplicatìonG:J(hlt) (rowscr) ζ〉(明L(.í!J川岛)(.aω) CWI?I.Kit )(GL ) (1)(山)
COCLbrnricsal"ikVMKernelJ Bluetooth lshn der黑黑丁
rivcr
rivcrWiFí Auio Powcrriver rivcrs onagemn图2.1Geandroid平台的系统构架图虽然Android是Google公司推出但更贴切的说法应该是开联盟品。开放联盟是由大约30家组成的联盟,致力于将"更好的"和开放的"推其网站上句话很好的阐述了这:UAndroid是成为一个开放、完整、免费门针对移动设备开发的平台目标,完全开始创建的。"12 Android系统架构用程序Android以Java为编程语,从接口到功都出不穷的,其中Activity等同于J陋的MIDlet一个Activity类(class)负责创建视窗(window)个活动中的Activity就是在foreground(景)模式运行的程序,叫做Service。两者之间通由ServiceConnection和AIDL连结,达到复数程序同时运行的效果如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped)甚被系统清除(kill。View于J脏的Displayable程序人员可以通过View类与UlVlLlayout"档将UI置在视窗上Android1.5的版本可以利用View打造出所谓的Widget其实Widget只是View所以可以使用xml来设计layoutHTC的AndroidHero即含有量的widgeto至于ViewGroup是各种layout的础抽象类Cabstractclass)ViewGroup之内还可以有ViewGroupoView的函数不需要再Activity中调用是Displayable的是必须的在Ativity中要通过findViewByld来从XML中取得ViewAndroid的View类的很程是从XML中读取的View与事件(event)息息相关,两者之间通过Listener结一起,个View都可以注个eventlistener,例:当View要处理用户触碰(touh)的事件时就要向Android框架注册stener。另外还有Image等同于J岖的BitMa。介软件操作系统与应用程序的沟通桥梁,应用分为两:函数层CLibrary)和虚拟机CVirtualMachine).Bionic是Android良libc的版本Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎Surfaceflinger是就2D或3D的内容显示到屏Android使工具链(Toolchain)为Google自制的BionicLibcoAndroid采用OpenCORE作为基础多媒体框架。OpenCORE可分7大:PVPlayerPVAuthorCodePacketVideoMultimediaFramework(PVMF)OperatingSystemCompatibilityLibrary(OSCL)Common、OpenMAX.Android使用skia为核心图形引擎,搭配OpenGLESoskia与LinuxCairo功能当,但相较于LnuxCairskia功能还只是雏形2005年Skia公司被Google收购2007年初SkiaGL源码被公开,目前Skia也是GoogleChrome的图形引擎。Android的多媒体数据库采用SLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库Android的中以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine).Dalvik虚拟机种"暂存器型态"CRegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java码CBytecode),而是运种称dex格式的文件。硬件抽象层Android的HALC硬件抽象层)是能以封闭源码形式提供硬件驱动模块HAL的目的是为了把Androidframework与Lnuxkernel隔开,让ndroid至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework开发能在不考虑驱动程序实现的前下进发HALstub一种代理人(proxy)的概念stub是以*so档的形式存Stub向HAL提供"操作函数Coperations),并由Androidruntime向L取得stub的operation再callback这操作函HAL包含了许多的stubC代理人。Runtime只要说明型",即moduleI,可以取得操作函数。编程言Android是运行于Linuxkernel上,但并不是GNU/Linu。肉在般GU/Linux里支持的功能,Android大都有支持,括CairoXllAl、FFmpegGTPango及Glibc等都被移除掉Android又以bionic取代Glib、以Skia取代Cair、再以opencore取代FFmpeg等等Android为了达到商业应,必须移除被GUGPL授权证所约束份,例如Android将驱动程序移到userspace,使得 Linux driver 与 Lnux kernel 彻底分开。bionic/libc/kernel/并标准的kernelheaderfilesoAndroid的kernelheader是利工由Linuxkernelheader生的,这样做是为了保留常数、数据结构宏。目前Android的Lnuxkernel控制包括安全CSecurity),存储理CMemoryManagement),程理(ProcessManagement网络堆核(NetworkStack),驱动程序模型CDriverModel)。下载Android源码之前,先要安装其构建工具Repo来初始化源码Repo是.Android用来辅助Git作工。 Android系统的特点与功能Android系统的特点、开放性Google开放盟合作开发了Android,Google通与运行商、设备制造商、开发商和其关各方面结成层次的合作伙伴关系,希望通过建立标准化、开放式的移动软件平台,在移动业形放式的生态系。、应界Android上的应用可以通过标准API访问核心移动设备功通过联网,应程序可声明它们的功能可以提供给其他应用程序使。、应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序主屏幕这样的组件。4、应用程序可以轻松地嵌入网络。应用程序可以轻松地嵌入HTML、JavaScript和样式衰,还可以通过WebView显示网络内容。应用程序并行运行Android是种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时应用程序生成通引起注。Android系统的功能A、支持虚拟键盘。虚拟盘的出现意着基于Android15或以上版本的移动设备可以同时支持物理键盘和虚拟键盘。使用lVidget实现桌面的个性化。可以用Widget修饰自己的桌面。大多的web应用都是从网络上获得实时数并展示给用户的Android预装了5个桌面\vidget包括数字时日历、音乐播放器、相框和搜索。用在线件夹快速游览数据。类似于OSXLeopard的QuickLook特征,Android的在线文件夹可显示常见的数据条目比联系喜应E-mail信息、播放列表、书签RSS源等并不要运行系程处理特定的数据条目。视频录制和分享Android还有录制和分享视频的功能,对回放和MPEG、3GP等视频格有了更好的支持。以过E-mailMMS直接上传到YouTube等方式来分享视频。图片上传。在线分享图片需要的点击更少。完成照相后当浏图片或选择Google在线图片服务Picasa只需轻点"分享"就会有1Gb的图片存储空间。、更快、更兼容的游览器Android的于Webkit内核的游览器带来了重要的调速装置(SpeedPumb),这得益于新的lVenkit渲染引擎和优化的ava脚本编译器(SquireFish).VoiceSearch语音搜索。带有识别技术的Google于208年11月面世,它支持语音搜索功能。该功能增强了默认的搜索能己超过纯文本搜索。、立体声蓝牙和免提。除了增强的免提体Android还支持立体声蓝牙(A2Dphe和AVCR)并有自动配对功能。、强大的GPS技Android内部供了大量的GPS组件我们可以很轻松地获得设当前的位置等信让等能更完美。10Android系统硬件检测Android可自动检测和修复SD卡的文件系统,允许方应用显示Android系统的硬件特为了让户下载到与自己的设备匹配的应用,我们可以检测户备的硬信让满足应用要求的设备安装该程序,当更多的Android设备建在不的硬件上时,这个功显得很实用。2..4 Android平台与iPhone平台的对比过去智能市场的领先者是WindowsMobile/SmartPhone和BlackBerry,同时Symbian和Palm在其中角逐。但随着iPhone棋空出世,就以简单易,并功能强大,作为了智能的代名词。近来android也其开源免费的特质强势来下面就其优孰劣进一对。开发台的对比于iPhone平台的开发,首先要悉Apple的MACOS或者是Unix系统的开发基础iPhone的开发工具Xcode并不支持Windows平台,开发者首先要拥有一台mac电:语学习方面熟悉C言的工程师可省一点因为在Objective-C可以直接编写C程序有用户口的部分一定仰赖Objective-。Android采用Java开发因此Android对系统资源的操程度已接近PC客户端开发。程兼容性问题iPhone独一天以很好控制应用兼容性问题,而Android平台的联盟战略,便有家厂商不同规型号的机器,因而Google通过厂商一硬件的规格手段达到兼容性的平衡。不过也确实有开发者担心Android的开放平台,未来难保厂商不会因为自身的需求而有所调可能导致兼容性问题发生。封和审核度封闭和严格的审直都是iPhone做为Apple设计理念和保证app质量的评审手段一,在app应开发成上架AppStore上前Apple也必须审核软件的内容,以避免包含色与或己知Bug的软件影响整个市集的质量。由于iPhone软件的销售与安装,只能透过AppStore这个一的管道有志进入IPhone市场的开发者也不得不买。相于Apple的封闭Android就显得开放许多AndroidMarket则是被动审查机制(只有被足够多的用户举报Google才会对此进行审核程序上传几个小时后,使用可载。事实上开发者不经由AdroidMarket,有其他途径:安市场。封闭开放的作法各有好处,由Apple把且定销售管道的作,对费者而言可以确保质而开发者省得比较各市集之的优劣。而Android的开放作法则不设限的好一开发者不用心Apple因为自身利益的考虑,而软件上架的申请。消费者的选择自由高出很多。UI互上差异传统时代,用直接用键盘、按键操作数据。iPhone的操作别于之前传统的体验,iPhone大触摸屏概念推出,户可直接对内容进行操作排除其他中间设备控,降低用户使用门对内容操作也有接的体验。Android则保留传统些特征返搜hmemenu实体按键,也同样有大触摸屏两者之间的硬差异因此也决定了交互视觉上本质的差异;iPhone遵从Apple精简设计风格用隐喻的视觉方式示用户进行使用操,同样直观表达步的操作流程。大部分操直接和内容互用体验一连贯,典型案:解。Aroid有实体按键,承载其余过多基操作,用户停留在最重的内容有更多件操也能有富的表现典型:轨迹颜色提醒。缺:部分操作,屏幕按键之间回转换。tie和导航引手持移动备的特性决屏幕的有在应用程序的层级关系中如何指引用户完成操便重要。iPhon:应用程序有信息层级关iPhone利用title区域进操作指title的左边是返回让户明确之间的关系。Adroid:页的回退靠体返回按键此title区不要作在视觉上小高扩大了内容区域。缺:没个好航指。2.1.5Android平台开发过程研究Android移平作为21世纪的新秀,受到了越来越多的开'追,在这股开发的浪潮中,逐渐形成一套具有Andrid特开程。由于Android的优越性其开发显常的有规律性可寻。大致的开发流程如:需求。一个软件它必须有其存在的意义和价而这值和意义需要靠求分析来定。、功能分析。作软件它的任务就是给用户使如何提供最好的用户体验就值得程序员深思。这也是衡一个程序成与的关键所。、界面设计。作一个软件只能在极有的区域中显示己如在有空间里面更完美的现出自己独特之处显得重。、系统开。一个软件的主部分,系统开发的好坏直接决定了该系统的性能和寿命。测试。在任个软件开发行业中,无论是J2EEJ2SEJ2ME等等其他开发中,试时必不可少一环在Android开发,由于的高频率使用,和硬件系上的不足,使得对软的要求更加的严,就要求在开发完成,在对其进行严的测试。试又包括了单元测系统测试等等方面的测。成一系统的开发后就将其发布,只有广大用户的考验,才算一合的产品在Android平台中Google提供一套整的发布机-Goglemarket。Android开发环境的搭建2.2.1下载需要用到的工具下载JAVA的IE开-Eclipse到Eclipse官方站下载EclipeForJavaEE最新Windows版本下页面地址:hLLp://w问.eclips.or/downloads/,如图2.1所:.[.精菌tlerE..Home Users Mms Commtters Donloads Resoces oects botUsEclipseDownloadsE1psePackags MemberDirs PcsGameePa束ages(bas<lonEdJpse32).ComparePackages
Youwill陌制Jcrrecwr.clipif-.Und3tionj
EolipseIDEforJaEEDevelopers163M)IIWJndowsIToolsforJvadlopersceingJEEandebapp划includingaJavaIDols-而言苟TforJEEandS;nndolh丘Morelînux2btDownloads327354lînx64bîlEclipseIDEforJavaDeelopes85M)heesselial105forayJavadlopindudingaJavaIDEaCVSief;lEdorandl.More..Doads810
WndowsMacOSXlinux32bitlînx6bt图2.1下载Eclipse、下载Java开发包--JavaSEDevelopmentKit(JDK)JDK6到Sun官方网站下载阳,选择JDK6Update12下页面地::/liav.sun.coliavase/download/index._isp图.2所:远二五叫队饵"阳棺J宇ovaJ宇眩晕tlmø0"IOêttSO'IpllSØtõ!'Vl'11VO"\nlT'SNC'ru.14l晴同.II\d<",响。I'"dJRE&Upda.2Tõ何呢?uc'ÕÞeIad)'r阳刚钳制NJ归F刷",1or巳.lUI"!?90}J 抽s:;!f2ωS91Jrrtand鲁南(f'8nC"r'-mnlτurilVlI;lt1Jl.::r;;>'町rcriIl'哼 l川'tZÐ宜| IZÐ宜l JDK6Update12 I I.rThlsJDKin.lCl垒sl!R.王80dCa1刷刷的I!l1ealOc.sU'laEl5l.rU660JI勾,eI"叮!]<1vsõlrd<lII。吨
l.. rr图.2下载JDK、下载Android开发包--AndroidSDK到Google的官方网站下载orWindows的Android的开发包下载地:http://dl./android/androidsdkrllwindows 下载完要的工具之开始安装安装Eclipse:下回来的Eclipse(eclipse-jeganymedSRwin32.zip)直接解压可2安装JDK6:运行下来的JSK安装包(jdk-6u25-window-i58.exe)一路"一步"即可、安装Android开发包(SDK):下载的SDK包(androidsdk_rll)接解压即可 让Eclipse自动安装Android开发插(ADT-plugi)动安(解压)后的Eclipe目录下的Ecplis.exe点击菜单UHp")USoftwareUpdates",在打开窗口中切换到工页页"Availb1eSoftwre"3、首先点击选项UAdd site…",然后手动输入以下地址:http://dsslgoogle.co/android/eclipse/,击UOK"、刚才加入的地址,点击UIstall.."进行ADT(AndroidDeve10pmentToo)的安。Eclipse此时会从加入的地中自下载跟安装AD,等一安装完毕后,示需要重启Eclips点击"OK"重启Eclips图2.3: 配置AndroidSDK路径重启clipse点击菜单Window")"Preference"打开配,在左边选中Androi,在右边输入AodroidSDK的路径(刚才步骤下载的AodroidSDK解压出来的目录点击侃,如图2.4:.;‘r:鸭"'.1. …l.iiIed. 'i 忡"'I11惜tllittft,
皿jEJ川剧如喃喃lT<硝<Çt曲创F$Ot'l'..,'l嘟,/,周刊伊Q:iIIfI,田间'h口..Jtc!帽M咱Th(døs;tP阴阳2-$
也.o....lI:南嘟l'lI:忘.l91).1.0."2均属)'nIS9
-空空里一旦::_]空2斗-坦」r;翁阳甜的"由。,町硝â1s伽苗'S-;11禽院睛"嘲,-e-ateðy悦,阳回回0pttI1i>t抽出叫''lC1JO'l!l't'咽斟幢峙翩啪"lil:呻嗡"帕.ill rØote I图2.3安装ADTE…-r町时房。地啕刷tS啕Ilns!ll饱问V4),硝(11!1JPAV怕W[+RemoleSv洒rm啦JgStrel'ser蚀司t!s..m饵I<ω\'ádð阳、WebIte:b'vIlS'detIÐX!ll
斗副i<>'一"如回'IeQefW位|一些@ 王]I图配置AdroidSDK路径 创建AVD为使android应程序以在模拟器上运行,必须创建AV在eclipse中边择Windows>AdroidSDKandAVDManager,点、击左侧面板的Virtualevice,再右侧点re。填入Name,选择Target的APISDCard任意(推荐25则,Skin随便边ardware目录保持默认击CreateAVD即完成创建AV。本系统是在AndroidSDK.1下完成的。此Android开发环境搭建完成。3 技术理论3.1 RSS技术简介信息传具多种多样包括可以免费收听的无线公共和有线电、印刷媒体至包括1nternet这样颠覆性的技术,以及其庞的Web站点和电子师件订阅。虽然选择很多但是这些工具都存在一个问:很庞杂的海数据中精查找到真感兴趣的信息和价值幸运的是RSS可以帮助我们解决这个问题。RSS是"ReallySimpleSyndication"的缩RSS种内容发者用来发布信息的XML数据格式些信息经过了分类井适机阅RSS提要通常使用诸如新闻阅读器这人类可读的友好格式进行处理并显示给用本教程中构建用程序就是这种新闻阅读RSS提要同样可以供计算机使用,而生成后续的、聚合息举例来说定期检索并提供给旅行社本地预订系统的租赁列表就个机器使用RSS键要的例子。讨论新阅内容时经常会提到RS而除新闻以外,这种格式可用于组织和发布很多型例如,很多Web站点都发布可用的podcast的RSS提耍,从而发音频和视频内H是个流行的移动软件和内容线商店,它根据移动平台分类,提供新的流行软件标题的提耍。例,提供针对Window@MobileBlackberryPalm和其他平台的耍用不了多很可能就会提供针对Android应用程序的提耍了!RSS的格式是XML数据,这表示数据本身就包含描述性元素,也就是说它是自包含行业的逐步规范化,XML结过去几经历些变化。新的版本也是应最的版本是.0RSS2.0种相对简单的XML结,很容计算机程序解析。RSS是站点用来和其他站点之间内容种简易方式(也叫聚内容,通常被新阅和其序排列的网,如Blogo段项目的介绍可能包含新问的全部介绍Blogpost等等或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内。络用户可以在客户端借助于支持RS的新问聚工具软件(例如NewzCralrFeedDemn在打开网站内容页面的情况下阅读支持RSS输出的网站内容。网站提供RSS输有让用户发现网站内容的更新。RSS的点。果有HS用户就不得不每日都来您的网站检查新的内容。对许用户说这太费了通过HSSfeed(f{SS通常被称为Newsfeed或RSSfeed,用户们可以使用RSS聚合器来更快地检查您的网站更新(RSS聚合器是用来集并分类RSSfeed的网站或软件。由于RSS数据很小并可速加载,它可轻易地被类似移动或DA的服务使有似内容网站环(Werings)可以轻易地在它们的网共享使这些站更出色更有价。3.2Pull解析算法研究构建RSS阅读器应用程序的核操作就是获取并处理XML数。前GoogleAndroid理读取XllL数据有三种主:DOM解析、Pull解析SAX解。下面对三种解析方法来行比:DOM解析lvL文件时会将XML文件的所内容读取到存,后允许您使用DOMAI
历XlvlL树、检索所需的数使用DOM操作XlIL的代看起来比较并且在某些方面比于SAX的实现更加简单。但是为DOM需将XL文件的有内容读到存中所以内存的消耗比较大,特别是对于运行Android的移动设备来说为设备的资源比宝贵所以建议还是采用SAX或者PULL来解析ML文件,,果ML文件的容比的时候采用DOM是可行的。SAX个解析速度快占用内少的xl
析器非常适合用于Anrd移动设。SAX解析XML文件采用的是件驱动也就是说它并不需要解完整个档在按内容顺解析文档的过程中SAX会判断当前读到的字符是否合法lvL语法中部分如果符合就会触事件。所谓事其一些调(callback)方法,这些方法(事件)在Contenandler接。如在一个XML文档中我们只需要前一部分数据使用SAX方式成DOM方式会对整个文档进行解析,尽管XML挡中后面的大部分数我们其实不需要析,因此这样实际上就浪费了处理资因此使用PULL方比较适。Pull解析器和SAX解析器虽有区别但也有相似性。他们的区别:SAX解析器工作方式是自动将事件推注册的事件处理进行理,此不能控制事件的处理主动结束;而Pllll解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件结束解析是他们主要的区别。而他们的相性在运行方式上Pllll解器也提供了似SAX事件开始文档STARDOCUENT结束文档ENDOCUMENT开始元素STARTAG和结束元素ENTAG遇元素内容TEXT但需要调用nextO方法提取们(动提取事件〉。Android系统中和Pull方式相关的包为org.xmlpullvl,在这个包中提供了Pull解析器工厂类mlPullrserFactory和Pull解析器XmlPull町ser,XmlPullarserFactory调用nePullarser方法创建mlPullarser解析器实接着XmlPullParser实例就可以调用getEvetType0和nextO方法依主提取事件,并根据提取的事件类型进行相应的逻辑处理。另外Pull方式比较单,而且可以根据判停止解析(DOM和SAX需要文件的文章解析中能停止)。综合考虑本系统的现用到的是ull解析算法来解析数据。4 Android平台下RSS阅读器的详细分析设计与实现4.1问题的提出411 需求分析、系统开发背景。在信速发展的今天,人对信常的重视希望能够随时随地的获取即时更新的信息。而新闻阅读器刚好可以满足人们的要求。在传统的平台例如IPhon,有许多类似的程序,都受到了用户的好欢通过武汉某公在Googleandroidmarket上面的程序的调发现关于信息方面的程序普遍受广大用户的欢因此本系统将能满足人们对信息的需。、系统功能的描述1)频道的切换:用户能按己的需求来切自所需要的频道。2)新闻的阅读:当用户打一个新闻的时候用户能准确无误并且方便的读取到新阔的内常3)新闻的收藏:当户觉得一个新有趣的时候,用户能将其添加到自己所欢的新闻列表中。的新闻的更新:当RSS更新以后程序能做相应的更新能与网络上的内容保一致性做到即时更。 系统功能结构根据系统需求描叙和系统数据流得出系统功能结构如图41所:[{SS阅读器新闻频道显示与切换 新闻的显示图系统功能结构图
新闻的收藏与删除.2 解决方案为了解决一所提出的需求分析,我提出下面的解决方案它遵循了android平台开发的规律,具体流程如图.2所:数据源的选取数据的解析系统的布局设计系统稳定性的设计与检测图系统解决流程图在开发前期笔者找到适合作为新阳源的RSS源的数据源找最优的解算-Pull。在数据准备笔者基于ogeandroid移动平台的新闻阅读器的界面做了详细的规。在成这些以后笔者对系稳定性进行了相关的调研,做出了相应的假并进行验证,通过证的结果来对系统的稳定性做了相应的检测和操作。4.3主要功能详细设计与实现 RSS数据源的选取基于Android平台的RSS阅读器作一新闻阅读器,对RSS源的要求及其苛刻:(1RSS源必须是稳定的,非出现特殊情况,否则不会无法读的情况。(2RSS源更新频率须的高,能做到将手的新阅资料上传更新,使得用户能最早的获得相关新闻资料。(3SS源的访问速度。由于基于GoogleAndroid平台的新闻阅读器的使用对象是而则通过GPSwrFr等其他的无线网络访问RSS源,以对RSS源的访问速度有高要求。(4RSS源的格。由读取RSS源的内容是通过解析相应的XML文件获得的,所基于GoogleAndroid平台的新闻阅读器对r<ss源的格式有非的要求当RSS源的式一旦固论是将来的更新或者是添加等其他操作的时候SS源的格式须保持一定。基,本人的个人好,并经过测试,本系统选择了新浪RSS源。 RSS源的解析构建RSS阅读器应用程序的核心操作是获取并处理XML数。前GoogleAnoid处理读取XML数据有三种主流方:DOM解析、Pull析SAX解析。下面来对三种解方法来进行比:DOM解析XML件时,会将XML件的所有容读取存然后允许您使用DOMAI
历XML树检索所需的数据c使用DOM操作XML的代码看起来比较并在某些方面比基于SAX的现加简但是因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Anoid的移动设备来说为设备的资源比宝贵,以建议还是采用SAX或者ULL来解忻X!VL文如果XML文件的容比的时候采用DOM是可行的。SAX个解析度快占少的xrl
析器非常适合用于Anroid等移设。SAX解析XML件采的是事件驱,也是说,它并需要解完整个文在按内容序解析文的过程中SAX会判断前读到符是否合法XML语法中的某部分如果符合就会触发事。所谓事件其实就是一些因调Ccalack)方法,些方法事定在CtntHandler接。如一个XML文档中我们只需要前部分数若使用SAX方式或DOM方式会对整个文档进行解析尽管XL文档中后面的大部分数我们其实需要析,因此这实际上就浪了理资源。使用PULL式正合适。Pull解析器和SAX解析器虽有区别但也有似。他们区别为:SAX析器工作方式是自动将事件推入注册的事件处理器进行处理因此你不能控制事件理主动结;而Pull解析器作方式为允许你应用程序代码主动从解析器中获取事件,正因为主动取事件,因此可以在满足了需要的条件后不获事件,结束解是他主要的区。而们的相似性在运行方式Pull解析器也提供了似SAX事件,开始文档STARTDOCUMENT和结束文档ENDDOCUMT,开始元素STARTTAG和结束元素ENTA,遇到元素内容TET等但需要调用nextO方法提取们动提取事件)。Android系统中和Pull方式相关的包为or.xmlpullv1,在这个包中提供了Pull解析器工厂类XmlPullParserFactory和Pull解析器XmlPullParser,XmlPullParserFactory实例调用newPullParser方法创建XmlPullParser解析器实例,着XrnlPullParser实例就可以调用getEventType0和nextO等方法依动提事件,并根据提取事件型进行相应的逻辑处理。/创建XmlPullParse,有两种方式//方一使用工厂类XmlPullarserFactoryXmlPullParserFactorypullFactory=XrnlPullParserFactory.newlnstance();XmlPullParserxrnlPullParser=();//方式二:使用Android提供的实用工具类android.util.XmlXmlPullParserxrnlPullParser=XmlnewPullParser;XmlPullParser.setlnput(lnputStreaminputEncoding)解析对应的输入文件XmlPullParser.getEventType()得到元素
inputStrearn StringPULL方式比较简单,而且可以根据判断停止解析(OOM和SAX都需要对文件的文章解析中途不能停止)。因此在本RSS阅读器系统RSS数据源的解析用到的是方式一使用类XmlPullParserFactory来创建XmlPullParser。4.3.3系统界面的设计在讲述系统界面的设计之前,我们先来介绍一下Android中的四大组件。对于个Android应用程来说,是由四种构造块组织而成的这四种构造块如下ActivityIntentReceiverServiceontentProvider但是,不是每个Android应用程序都需要这四种构造块这不是必须,某些时我们只需要这四种中的几种组合成我们的应用。Activity:Activity是Android构造块中最基本种在应用中个activity通常就是一个单屏幕。每一个activity都被实为一个独立并且继承于Activity这基类。这个activity类将会显示由几个Vies控件组的用户接口并对事件做出响大部份的应用都会包含多个的屏。如一个短消息应用程序将会屏幕用于显示联人表第二个屏幕写短消,同时还会有用于浏览旧短消及行系统设置的屏幕。每个样的屏,就是个activit一屏幕导航到另一屏幕是很简单的。在一些应用中,一屏幕甚至返回值给前一屏幕。当一个新的屏幕打开后,前屏幕将会暂,并存在历堆校中用户可以返回到堆中的前屏幕。当屏幕不再使用时还可以从历史堆校中删。情况,Android将会保留从主屏幕到个应用的运行屏幕。Android使了Intent这个特殊,实现在屏幕与屏幕之间移动Intent类用于描个应用将会做什事。在Intent描述结构有个最重要的部:动作和动作对应的数据。典的作类型:MAINCactivity的|丁户)、VIEPICEDIT等。而动作对应的数据则以URI的形式进行表示。例:要查一个人的联系方式,你需要创个动作类型为VIEW的intent,以个表示这人的UIo与之有关叫IntentFilter。于intent是一个有效的做某事的请求个intentfilter则用于描个activity(或者IntentReceiver)能够操作哪些intent。一个activity如果要显个的联系方式时需要声明个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示个人的URloIntentFilter需要在AndroidManifest.xml中定义。通过解析各种intent屏幕导航到另一个屏幕是很简单的。当向前导航时activity将会调用startActivity(Intentmylntent)方法。后,系统会在所有安装的应用程序中定义的IntentFilter中查找找到最匹配mylntent的Intent对应的activit。新的activity接收到rnylntent的通知后,始运行当startActivity方法被调用将触发解析mylntent的动机制提供了两个关键好:、Activities能重利用从其它组以Intent的形产生个请:B、Ativities可以在任何时候被一个具有相同IntentFilter的新的Activity取代Intentreceiver:你你的应用能够对部的事(如当呼入或者数据网络可用时,或者到了晚上时)做出响应你可以使个IntentReceivero虽然IntentReceiver在感兴趣事件发时,会使用NotificationManager通知用户,但它并不能生一个UloIntentReceiver在AndroidManifest.xrnl中注册,但也可代码中使用Context.registerReceiverO进行注册。个intentrecelver被触发肘你的应用不必对请求调用intentreceiver系统会在需要的时候启动你的应用。各种应用可以通过使用Context.broadcastlntent()将自己的intentreceiver广播给其它应用程序。Service:一个Service一长生命周期没有用户界面的程序。比较好个例就是个从播放表中播放歌曲的媒体播放器个媒体播放器应用中应该会有多个activity让使用者可选择歌曲井播放歌然而,音乐重放这个功能并没有对应的activity,医|为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中媒体播放器这个activity会使用Context.startService()来启动一个service,从而可在后台保持音乐的播放。同时,系统也将保持个servlce一执直这个servlce运行结。另还可通过使用Context.bindService()方法,连接一个servlce上(如果这个service还没有运行将启动它。连接个service之后,我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来我们还可以进行暂停、重播等操作。ContentProvider:应用程序能够将它们的数据保存到文件中SQL数据库至是任何有效的设备中1、将你的用数据其它用.肘ContentProvider将会很有。个ContentProvider类实现组标准法,从而能够让其它的应用保存或读取此ContentProvider处理的各种数据。下面开始讲述本RSS阅读主界面的设先看看整个系统的架构流程图如图.3:岛1inActiviyNeView主菜单界面新闻大类 新闻标题新闻内容页面显示图4.3RSS阅读器系统架构流程图MainActivity是程序的主体部分整个程序的执行从这里开始,在MainActivity里调用NewsCategory.java的方法,进入NewsView在ewsView中展示主菜单布局,包括主界面和新闻大类,新类的显示通过新闻大类的频道切换来完成新闻大类和新问小类是分别是在GetNewsMenu.java和GetNewsTitl.java中用pull解析法获取RSS数据源点击新闻标后以新闻页面阅读新闻内容。由于SS源是从新浪网获而且为合不群的不同喜好新闻类型所主界面可以多设计几个新闻类别选菜单本系统仿照新浪首菜图单显示方式主界面如图
.4所:l7:?7777177|图.4RSS阅读面l点击左或者右获得更多的新闻类,图.5和图.6所:l.--|l图.5RSS阅读面2d[-口d
tt;;1图.6RSS阅读主界面3其中"新中心"包所有类别,而且在进入该RSS阅读器的时光标会默认的停在"新中心"每个频面都有对应的新新阅小类下面才是一条条新闻的标题。在介绍频道之间的切换上图中的左向右键便是用来实现频道切换功能的面是实现频道切换的关:publicvoidonClick(Viewv) {switch(v.getld())(caseR.id.maín_backwar_ímageVíew:ViewFlipper.showPrevious()ibreakicaseR.id.maí_next_ímagVíe":rVewFliper.showNext()ibreakidefaut:breakiif(v.getld()>=R.id.tvOl&&vgetld()<=R.id.tv15){Log.d(this.toString()"onClick......")iTextViewtv=(TextView)findViewByld(v.getld())ilist=map.et(tv.etext()toString().replaceAll("\n","").rpaceAll("",""))iif(list!=null){mListliew.setAdapter(newDemoListAdapter(thilist))i}else{Log.e(LOG"List<NwCatgory>isnull")i上代码的switch吾句便是用来实现频道切换的其中上一页的ID是R.i.main_backwrd_imageView,当程序执行到这个case的时候,便调用showPrevious()方法来示前一的主菜单内容,图.4前一页图.6;同样一页的ID是.id.main_next_imageView当序执到这个case的时候,用showNext()方法来显示后页的内容,图.4一页是图.50
其实括上15新闻别在,每个边项都对应了一于己的I,即"新中心""体育频道"、…、"视频频道"的ID分别是R.id.tvOl.…·.id.tv1在程序中使用ID来进行调用,所有这些ID对应的选项都包含在main.xml上述代码中的if语句实现有这些新闻频道图标时程序应该调用的方。 新闻阅读界面设计在新问示界面我们采用leAndid比较流行的ebVew来进行显下面以"体育频道"为例,效果如图.7所:图4.7击"育频道"后的界示实现这个界面的关键代码包含在GetNewsMenu.java通过pull解析方法使用工厂类XmlPullParserFactory创建XmlPullParser来解析从新浪网RSS源里读的xml数关码如:publicclassGetNewsMenu{publicstaticMap<StringList<NwsCategory>>PullParseXML(}throwsExcption{List<NewsCategory>listNews=nu1iNewsCategorynewsCategory=nu1iStringmapKey=nuliXmlPullParserFactorypullParserFactoryXmlPullParserFactory.newlnstance(};XmlPullparserxmlPullParser=pullParserFactory.newPulparser();Log.e("PullParseXML""getXML......");xmlPullParser.setlnput(GetNewsMenuclass.getClassLoader(}.getResourcAsStream("sina_news.xml")"UTF-8");Log.e("PullParseXML""PullParseXML....start....")iinteventType=xmlPullParsergetEventTye(}iwhile(eventType!=XmlPullParser.EN_OCUMEN}{StringnodeName=xmlPullparsergetName(}iswitch(eventType)(caseXmlPullParser.STARTDOCUMENT:break;caseXmlPullParser.STARTTAG:if("item".equals(nodeName)}{newsCategory=newNewsCategory(};if("title".equals(nodeName)&&newsCategory!=null){newsCategory.setTitle(xmlPullparser.nextτext());if("link".equals(nodeName) &&newsCategory!=null){newsCategory.setLink(xmlPullParser.nextText())ibreakicaseXmlPullParser.ENDTAG:if("item".equals(ndeName)){listNewsTitle.add(newsCategorY)ibreak;default:breakieventType=xmlPullParer.next()ireturnlistNewsTitlei下面来谈谈解析过程,这段代首使用工厂类XmlPullParseractory创建XmlPullarser,然后通过调XmlPullParserFactory.newlnstance()方法来获取XmlPullParser的实例好输入XM文件装载器后开whil循环,pull解析器读到XML返回的数字如下所:读取到xml的声明返回数字oSTARDOCUMNT;读取xml的结束返回数字1ENDOCUENT;卖取xml的开始标签返回数字2STARTAG;读取到xml的结束标签3ENTAG;读取到xml文本返回数字4TEXT通过whie循环中的switch语句中的不同cae来判断元素是否是STARTDOCUMET、ENDDOCUMETSTARTAGENTAGTEXT中一再进行相应解析,这个事件返回的不是1我们一直取xml文个case在break以都会调用xmlPullParse.next()方依次主动提件并根据提取事类进行相的逻辑理。现在在新闻menu菜单里可以选择自己感兴的新闻,例如"英超",界面效果如图示。这个界面显示的都是新闯标题同样是通过pull解析方法使用工厂类XmlPullarserFactory创建XmlPullParser来解析从新浪网RSS里取的xml数据,方法和技术与前面介绍的基一里不再赘述。电øm-31MI国 |噩噩囡匾.雪:幅l>噩噩晏肘圭RJ人士号言f、击!军主飞毛111Ar人口Ji;斗中' 晏月-王一‘三芒王工-豆」l,.户子:
ù'ê… ·文[斗士II1II村也f旦!汀吃 E-IDIIIIυ1M."τ甜J'_::::1.-IDIIII。I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绵阳市事业单位公开选调工作人员25人备考题库有答案详解
- 5G+急诊急救的响应时效优化策略
- 2025年库尔勒公共停车场服务管理有限公司招聘备考题库及1套完整答案详解
- 3D打印技术在功能区脑肿瘤手术规划中的创新
- 2025年浙江省经济建设投资有限公司招聘5人备考题库及答案详解参考
- 2025年长江财产保险股份有限公司总精算师及相关部门负责人招聘备考题库及一套参考答案详解
- 新疆医科大学2025年高层次人才引进备考题库及1套参考答案详解
- 2025年成都市双流区东升第一初级中学招聘教师备考题库及参考答案详解一套
- 2025年黄山太平经济开发区投资有限公司公开招聘高管人员备考题库附答案详解
- 2025年苏州交投新基建科技有限公司公开招聘12名人员备考题库及一套参考答案详解
- 激光熔覆应用介绍
- 电除颤临床操作规范指南样本
- 教学《近似数》数学课件教案
- 2025年西昌市邛海泸山风景名胜区管理局招聘5名执法协勤人员备考题库完整参考答案详解
- 2025年中共湛江市委巡察服务保障中心、湛江市清风苑管理中心公开招聘事业编制工作人员8人备考题库完整参考答案详解
- 2025年产业融合发展与区域经济一体化进程研究可行性研究报告
- 医保科工作流程管理标准化方案
- 2025呼伦贝尔莫旗消防救援大队招聘消防文员(公共基础知识)综合能力测试题附答案解析
- 《国家赔偿法》期末终结性考试(占总成绩50%)-国开(ZJ)-参考资料
- 烟草证到期代办委托书
- 128个护理诊断及措施
评论
0/150
提交评论