RSS阅读器的论文.doc_第1页
RSS阅读器的论文.doc_第2页
RSS阅读器的论文.doc_第3页
RSS阅读器的论文.doc_第4页
RSS阅读器的论文.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RSS阅读器的设计与开发在科技日益发达的今天,社会竞争越来越激烈,这要求人们不断的摄取信息来充实自己。要求人们能随时随地的了解并获取所需的信息。在这种情况下,RSS阅读器刚好满足了人们对外物了解的需求。在本系统是根据Google Android 平台用户的喜好和其平台的特性而设计的,在Google Android平台自带的SDK1.5环境下,运用了Eclipse,PhotoShop等相关工具进行开发。本文概括的介绍了Google Android 开发的流程,并重点的介绍了基于Google Android 平台的RSS阅读器的开发过程。首先根据Google android market上面的数据,对给予Google android 移动平台的RSS阅读器进行了需求分析。然后选取了数据源和其解析方法。在参阅相关资料下,选择了RSS作为RSS阅读器数据的来源;通过与其他解析算法的比较得出解析RSS源的算法SAX解析。在数据准备完成后,通过对Android 用户的调查,设计一套用户体验较好的界面。在此过程中,不仅调用了系统提供的控件,也使用了自定义控件。在数据与界面设计完成后,开始了系统的开发。在文中,着重的从系统的稳定性、频道的切换、数据的持久化等特色功能对基于Google android平台的RSS阅读器的开发进行了简要的介绍。最后,在完成系统的开发后,进行了相关的测试。并将系统发布到Google android market 上供用户下载使用。并根据用户提供的反馈对本系统做出相应的修改。通过开发基于Google android 移动平台技术的RSS阅读器,了解Google android 移动平台的开发过程和Google android 移动平台的特性,通过此接触并熟悉软件开发的过程。关键词RSS阅读器;Google Andorid ;RSS;SAX算法;RSS ReaderBased on Android PlatformToday,its a more advanced in technology, increasingly competitive society, which requires people to the intake of information to enrich themselves. Requires people to always be in the know and get the required information. In this case, the RSS reader just to meet the needs of people know of external objects. In this system, Google Android platform is based on the users preferences and characteristics of its platform designed, in Google Android platform, comes with SDK1.5 environment, the use of the Eclipse, PhotoShop and other tools for development. This article introduces the Google Android general development process and introduces the focus on Google Android platform RSS reader development process. Firstly, according to Google android market the above data, given Google android mobile platform RSS reader needs analysis carried out. Then select the data source and its analytical method. See related information in the next, choose the RSS RSS reader as a source of data; by comparison with other analytical methods to resolve RSS source derived algorithm - SAX parsing. When the data preparation has completed, a survey by Android users to design a better user interface experience. In the process, not only called the system of control, also use the custom control. In the data and interface design is complete, start the system development. In the paper, the emphasis from the systems stability, channel switching, data persistence and other features of the Google android platform based RSS readers a brief description of the development. Finally, after the completion of system development, some related tests. And posted to the Google android market system available for download to use. Based on feedback from users of the system to be modified accordingly. Through the development of Google android mobile platform technology based RSS reader to understand the Google android mobile platform development process and the characteristics of Google android mobile platform, through this contact and are familiar with software development process. Keywords RSS reader; Google Andorid; RSS; SAX algorithm; 目录第一章 绪论V1.1 课题的研究意义V1.2 相近研究课题的特点及优缺点分析VI1.3 本文的主要工作VI第二章 Android的架构分析VI2.1 Android特征VII2.2 Android架构VIII2.2.1 关键应用程序VIII2.2.2 应用程序框架VIII2.2.3 C/C+函数库VIII2.2.4 Java程序运行环境IX2.2.5 Linux内核IX2.3 Android应用的构成和工作机制IX2.3.1 ActivityIX1. 活动生命周期IX2. 活动之间的切换X2.3.2 Intent ReceiverXI2.3.3 ServiceXI2.3.4 Content ProviderXI2.3.5 Rss解析剖析XI2.4 本章小结XIII第三章 开发环境介绍及构建XIII第四章 需求分析XIV4.1功能需求XIV4.2性能需求XVI4.3数据需求XVII4.4安全需求XVII第五章 Android数据库的设计XVII5.1 数据库及字段属性设计XVII5.2数据库的连接XVIII5.2.1数据库创建XVIII5.2.2 数据库操作XVIII第六章 系统设计与实现XIX6.1 RSS 技术的研究XIX6.2 系统界面的设计XX6.2.1 主界面的实现XX6.2.2主界面中子界面的实现XXI1. 我的收藏和浏览记录界面的实现XXI2. Rss界面的实现XXIII6.3 资源文件的解析XXVI6.3.1本地XML文件的解析XXVI6.3.2网络文件解析XXVII1. AsynTask的介绍XXVII2. 网络XML文件的解析XXVIII3. HTML文件的解析XXVIII4. 图片资源的解析XXIX6.4 数据存储XXIX6.4.1 SharedPerferenceXXIX6.4.2 File存储方式XXIX6.4.3 SQLiteDataBase数据库XXX6.4.4 Android中Application的应用XXX6.4.5数据存储在项目中的应用XXX6.5 内容界面功能的实现XXXI第七章 结论XXXI参 考 文 献XXXII第一章 绪论1.1 课题的研究意义随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求越来越高,3G时代的到来为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。随着3G时代的到来,手机上网越来越方便,而网上充斥着各种各样的信息,让网民们很头疼,很难找到自己感兴趣的新闻,而且中国手机流量费用的高昂,在众多网页中寻找自己感兴趣的信息浪费了过多没必要损失的流量。RSS为网民提供新闻标题和摘要,它的作用就像一道筛子,为网民过滤了网站的大量“无用”信息,节省大量的流量,使网民直达自己所需的网页。网民可通过RSS阅读器进行阅读,而不必每次到目标网站去寻找最新信息。提供RSS服务的网站,可以节省用户访问目标网站的时间。便捷和主动传递,这正是RSS订阅最有价值的地方。Android不只是一个操作系统而已,它包括了:1.经过Google剪裁和调优的Linux Kernel,对于掌上设备的硬件提供了优秀的支持。Google在Linux方面的应用能力不容置疑,Google公司所有的几十万服务器全部是自己修改过的Linux操作系统。2.经过Google修改的Java虚拟机Dalvik,是基于Apache Harmony虚拟机版本进行改良而来,能够提供极高的执行性能。有了Java虚拟机,大部分Java核心类库都已经可以直接运行。3.大量立即可用的类库和应用软件,例如浏览器Webkit,数据库SQLite,让你可轻易开发出来媲美于桌面应用复杂度的手机软件。4.Google已经开发好了大量现成的应用软件,同时可以直接使用Google很多在线服务。5.Google提供了基于Eclipse的完整开发环境,模拟器,文档,帮助,示例将极大推动Android快速的推广和发展。 基于Android众多的优点,围绕Android形成了一个移动手机联盟,主要的手机厂商几乎全部在列,而此联盟在极大的推动Android平台的推广和发展,在未来的几年必将大方异彩,将极大的推动整个手机操作系统甚至是互联网乃至软件行业的发展。1.2 相近研究课题的特点及优缺点分析RSS阅读器按照其运行环境基本可以分为三类。 第一类大多数阅读器是运行在计算机桌面上的,通过所订阅网站的新闻供应,可自动、定时地更新新闻标题。在该类阅读器中,有Awasu、FeedDemon和RSS Reader这三款流行的阅读器,都提供免费试用版和付费高级版。国内最近也推出了几款RSS阅读器:周博通,看天下,博阅。第二类RSS阅读器通常是内嵌于已在计算机中运行的应用程序中。例如,NewsGator内嵌在微软的Outlook中,所订阅的新闻标题位于Outlook的收件箱文件夹中。另外,Pluck内嵌在Internet Explorer浏览器中。第三类则是在线的WEB RSS阅读器,其优势在于不需要安装任何软件就可以获得RSS阅读的便利,并且可以保存阅读状态,推荐和收藏自己感兴趣的文章。这些Rss阅读器都是基于PC机的,而基于Android平台的RSS阅读器现在还是很少并且这些RSS阅读器基本都是解析RSS Feed后,获取到内容的链接后启动Android中的浏览器应用进行跳转,这样浏览器根据链接下载对应的内容,页面中相应的一些内容和图片对与用户来说并没有什么实际的用处,永不并不希望看到这些无关的内容,这些无关的内容相应的也浪费了很多GPRS流量,而中国目前GPRS流量的价格还是比较高,这样无疑给用户造成了很到的损失。1.3 本文的主要工作本文首先给出了系统的研究背景,对当前RSS的发展现状做了简单的介绍。进而详细的分析了Android的特征、架构以及Android应用的构成和工作机制。本文详细的提出了软件的架构,以及解析RSS方案;采用Java开源的JAR包对HTML文件进行分析和获取图片和文字信息;对各个界面的布局和实现方式进行详细说明;对数据库设计模块进行了详尽的需求分析,经分析得到数据库设计模块,它主要完成用户对已经获取的内容的存储,删除和查询操作;运用Android提供的各种组件设计和实现很好的UI效果,实现很好的用户体验;详细介绍了该软件的性能优化。第二章 Android的架构分析Android是一个移动设备的软件平台,是由Linux+Java构成的开源软件,它提供包括SDK、Key Apps、Middleware、Linux Kernel四个部分在内的全套手机软件方案。它开放了基于Linux内核以上的开发工具,从而保证了内容的可移植性和多样性。Android平台为我们开发应用程序提供了一套很好的框架,我们可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用1。2.1 Android特征Dalvik虚拟:Android采用的Java虚拟机是自主开发的代号为Dalvik的虚拟机技术,在保证API方面兼容的同时Dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高。内嵌浏览器:基于开源的浏览器网页排版引擎WebKit。优化的图形:强大的自定义二维图形库。基于OpenGL ES 1O标准的3D图形功能,在移动3D开发中有着至关重要的地位。SQLite数据库:SQLitet提供结构化的数据存储。它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。多媒体支持:支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。Open Core是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现的。通过Open Core,程序员可以方便快速的开发出想要的多媒体应用程序。GSM技术:(依赖硬件)Global System for Mobile Communications,全球移动通讯系统,俗称“全球通”,是第二代移动通信技术,其开发El的是让伞球各地可以共同使用一个移动电话网络标准,让用户使_一部手机就能行遍全球。蓝牙,EDGE,3G,and WiFi是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(EnhaIlced Data Rate for GSM Evolution),是增强型数据速率GSM演进技术。Camera,GPS,compass,and accelerometer:(依赖硬件)GPS(GlobalPositioning System)ItTI驯全球定位系统。它是一个由覆盖全球的24颗1J星组成的卫星系统。Compass是个开放源代码的JAVA搜索引擎框架。强大的开发环境:包括一个设备模拟器,调试工具,内存和性能检测,以及EclipseIDE的开发插件。Eclipse是个集成开发环境2。2.2 Android架构Android的架构是Linux内核、C/C+函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在Dalvik VM上运行的。图2-1 Android架构图32.2.1 关键应用程序Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。开发语言是Java。2.2.2 应用程序框架Android应用程序的开发基于框架和组件。Android本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。2.2.3 C/C+函数库Android应用程序框架之下是一套C/C+函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的的安全协议SSL、用于点阵和矢量字体渲染的FreeType以及SQLite引擎等。2.2.4 Java程序运行环境Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。这是被优化过的最小内存依赖的格式。Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。2.2.5 Linux内核Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。2.3 Android应用的构成和工作机制对于一个Android应用程序来说,是由Activity、 Intent Receiver 、Service、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfestxml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。2.3.1 ActivityActivity是构成应用程序中最重要的构造块, 在Android应用程序中,几乎都是通过Activity来与用户进行交互,所以Activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面。1. 活动生命周期活动(Activity)在系统中以活动栈的形式进行管理。当一个新的活动启动后,被放到了栈项,成为了运行活动,而新活动之前的活动在活动栈里总位于新活动之下,直到新的活动退出才重新回到前台。 图2-2 Activity状态变换路径图4从图2-2可以看出,Activity有三个关键的循环:(1)活动的整个生命期:从首次调用onCreate(Bundle)开始,到最终调用onDestroyO结束。在onCreate()中进行所有初始化,在onDestroyO时进行清理工作,释放资源。(2)活动的可见生命期:从调用onStart()开始,到onStop()被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以维护活动显示给用户的资源。onStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。(3)活动的后台生命期:从调用onResume()开始,到onPause()被调用为止。在这段时间内活动处于其它所有活动之前,并与用户进行交互。一个活动可以不断在resumed状态和paused状态之间变换4。2. 活动之间的切换Android使用了Intent类来实现活动之间的切换工作。Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据Intent的描述,负责找到对应的组件,将Intent传递给调用的组件并完成组件的调用。因此,Intent起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在应用中,我们可以以两种形式来使用Intent:直接Intent,指定了component属性的Intent,通过指定具体的组件类,通知应用启动对应的组件。间接Intent,没有指定comonent属性的Intent,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件。2.3.2 Intent ReceiverIntent Receivert是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户。当一个Intent Receiver被触发时,系统会在需要的时候启动对应的应用程序。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。各种应用还可以通过使用ContextbroadcastIntent()将它们的Intent Receiver广播给其它的应用程序,实现应用之间的通讯。2.3.3 ServiceService是提供连续信息的应用程序。它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。本系统客户端扩展功能的音乐播放就是采用Service来进行设计和开发的,使用户可以边聊天边听音乐。2.3.4 Content ProviderContent Provider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。当应用程序需要使用存储设备中的数据时,可以使用Content Provider来完成。使用Content Provider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据2.3.5 Rss解析剖析在Android平台上可以使用Simple API for XML(SAX)、Document Object Model(DOM)和Android附带的pull解析器解析XML文件。 (1)使用SAX读取XML文件 SAX是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备。SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口5。下面是一些ContentHandler接口常用的方法: startDocument()当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。 endDocument()和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。 startElement(String namespaceURI, String localName, String qName, Attributes atts)当读到一个开始标签的时候,会触发这个方法。namespaceURI就是命名空间,localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。通过atts可以得到所有的属性名和相应的值。要注意的是SAX中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。这使得SAX在编程处理上没有DOM来得那么方便。 endElement(String uri, String localName, String name)这个方法和上面的方法相对应,在遇到结束标签的时候,调用这个方法。 characters(char ch, int start, int length)这个方法用来处理在XML文件中读到的内容,第一个参数用于存放文件的内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用new String(ch,start,length)就可以获取内容。(2)使用DOM读取XML文件 除了可以使用 SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件。 DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。(3)使用Pull解析器读取XML文件 除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值3。2.4 本章小结本章对Android平台的特征、架构以及Android应用的构成和工作机制进行了详细的分析。对于Android应用程序来说,主要由Activity、Intent Receiver、Service和Content Provider四部分组成,但并不是对于每一个应用程序,这四部分都是必须的。Activity是应用程序中最重要的一种构造块,我们对其进行了详细的分析,包括Activity的生命周期以及Activity之间的切换。第三章 开发环境介绍及构建Android平台为开发者提供了源码开放的软件开发包( SDK) ,它包含了使用Java语言开发Android平台应用的必要工具和组件(API) 。进行开发前先要建立合适的开发环境,其中基于Java的整合型可扩展平台Eclipse是我们的首选。搭建环境所需要的软件:l 操作系统:Windows XP 或 Linux;l 软件包:Android SDK,ADT;l IDE环境:Eclipse IDE + ADT Eclipse3.3以上;l JDK:Java Runtime Environmcnt,JDK;安装步骤:l 安装JDK 然后配置环境变量;l 安装Eclipse;l Android SDK配置/安装:首先在/sdk/index.html下载,选择相应的系统进行安装;l 安装Android ADT插件:1.打开Eclipse,在导航菜单中选择Help-Install New Software。在work with中输入 /android/eclipse/ADD 然后输入name,随便取个有意义的,都选中安装,完毕后重启Eclipse;2.在Eclipse里配置SDK路径,选择Windows-Preferences-Android,选择Android SDK的位置6。第四章 需求分析4.1功能需求RSS阅读器扮演着与用户直接交互并且提供服务的重要角色,它需要提供良好的用户体验,方便用户操作,接收用户的操作并把这些操作转换成相应的命令,采用用户活动的方式完成各个服务的逻辑流程。本软件主要解析腾讯和新浪提供的RSS Reed,其功能需求主要包括以下几方面内容,业务流程如图4-1所示:(1)不同View之间的切换功能用户通过手指的左右滑动来切换不同的视图,方便用户在不同视图中查看信息和行操作。如图4-2所示:(2)Rss功能根据频道名称解析出这个频道所包含的内容并记录,在根据这些内容链接网络,通过HtmlParse的解析获取相应的内容并保存;切换不同的频道。如图4-3所示:图4-1 业务流程图图4-2 主界面用例图(3)历史记录浏览功能记录用户浏览过的内容,以方便用户再次查看,这样节省GPRS流量,减少用户的损失;当用户不需要这些记录的时候可以清除掉这些记录。如图4-5所示:(4)收藏功能当用户对一些文章感兴趣时,可以将其添加至收藏列表;当用户不需要某条记录是可将其从收藏列表中删除。如图4-6所示:(6)精品推荐在浏览新闻和文章的过程中会下载图片和文字内容,将这些内容推荐本地,在下次浏览同样的内容的时候就不用再次链接网络,直接可以看推荐内容图 4-5 浏览记录用例图图4-6 我的收藏用例图4.2性能需求手机软件要有良好的用户体验,良好的用户体验体现在以下几个方面:(1)界面友好用户界面要简洁直观,设计合理,方便用户操作,让用户操作起来比较舒服,并且UI视觉效应好。(2)快速响应快速处理用户的输入或请求,对于需要长时间处理的部分,在其处理时可以给用户一个提示,告知用户该软件正在运行。(3)无缝性一个常见的无缝问题就是一个应用的后台进程(如service或broadcast receiver)对某事件作出响应而弹出对话框,这看起来仿佛并无大碍,特别是当你在模拟器上单独地构建和测试你的应用时。然而,当你的应用在真正的设备上运行,后台线程显示对话框时,你的应用当时可能没有获得用户焦点。这就会出现你的应用会在活动的应用后面显示对话框,或者从当前应用中获得焦点并显示对话框的情况,而管论当时用户正在做什么(如正在打电话等)。那样的行为可能对你的应用或用户不起作用。为了避免这些问题,你的应用应该利用适当的系统资源Notification类,来通知用户。利用通知,你的应用可以通过在状态条上显示一个图标来通知用户事件已经发生,而非获得焦点和打断用户1。4.3数据需求(1)Rss Feed的存储,主要是腾讯和新浪数据源的存储,(2)收藏夹内容的管理,主要是对收藏内容的添加和删除操作。(3)图片资源的缓存,将下载的图片资源存储在手机自带的内存或者存储在SDCARD中;用户也可以清楚这些缓存资源;使用缓存资源来节省GPRS流量。(4)记录用户浏览过的内容,方便用户再次查看4.4安全需求Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序,操作系统或用户的有害操作。这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。第五章 Android数据库的设计数据结构组织和数据库文件的设计要根据不同的用途,使用要求等来决定数据整体组织形式等一些问题。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度。较高的数据独立性和易扩展性,并且可以再被一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题的性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。5.1 数据库及字段属性设计本项目中的数据库设计比较简单,主要涉及两个表:mylove和history;Mylove主要是存储收藏的内容,history主要存储历史浏览记录,这两个表的字段一样,下面介绍history的字段,如表5-1所示:字段说明:id 记录的id号,title 内容的标题,link 内容的URL,body 内容主体。表5-1 history字段表属性数据类型允许空主键IdINTEGERNOT nullPrimary keyTitleTEXTLinkTEXTBodyTEXTMylove与history相同,就不重复介绍了。5.2数据库的连接这里将介绍如何进行Android数据库的连接,Android中自带的SQLite数据库是十分小型的数据库,这样正适合Android这种移动平台使用。Android数据库的存储位置在data/data/databases/目录下,Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库的类为RssDB extend SQLiteOpenHelper(继承关系)。5.2.1数据库创建Android提供了标准的数据库创建方式,继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:public RssDB(Context context) /创建数据库super(context, DB_NAME, null, DB_VERTION);public void onCreate(SQLiteDatabase db) /类创建是调用,在这里主要创建tablepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) /版本升级时调用数据库创建不成功会抛出FileNodFindException异常。5.2.2 数据库操作打开数据库操作:db = this.getWriteableDataBase();this表示RSSDB执行sql语句:db.execSql(sql);插入数据:db.insert()删除数据:db.delete();更新数据:db.update()查询数据:db.query();当执行完这些操作后,一定要关闭数据库连接:db.close();这些操作的具体使用方法可参照Android SDK。 第六章 系统设计与实现6.1 RSS 技术的研究RSS是“Rich Site Summary”(丰富站点摘要),或“RDF Site Summary”(RDF站点摘要),也可以是“Really Simple Syndication”(真正简易聚合)。现在已有的有Netscape, 1.0 (RSS-DEV版本),和 0.9x and 2.0 (UserLand Software版本) 0.9x和2.0。不过几乎所有能支持RSS的程序都可以浏览不同版本的RSS。 RSS是基于文本的格式。它是XML(可扩展标识语言)的一种形式。通常RSS文件都是标 为XML,RSS files(通常也被称为RSS feeds或者channels)通常只包含简单的项目列表。一般而言,每一个项目都含有一个标题,一段简单的介绍,还有一个URL链接(比如是一个网页 的地址)。其他的信息,例如日期,创建者的名字等等,都是可以选择的。 RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻 和其他按顺序排列的网站,例如Blog。一段项目的介绍可能包含新闻的全部介绍,Blog post等等。或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内容。网络用户可以在客户端借助于支持RSS的新闻聚合工具软件 (例如NewzCrawler、FeedDemon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。网站提供RSS输出,有利于让用户发现网站内容的更新。RSS 的优点。如果没有 RSS,用户就不得不每日都来您的网站检查新的内容。对许多用户来说这样太费时了。通过 RSS feed(RSS 通常被称为 News feed 或 RSS feed),用户们可以使用 RSS 聚合器来更快地检查您的网站更新(RSS 聚合器是用来聚集并分类 RSS feed 的网站或软件)。由于 RSS 数据很小巧并可快速加载,它可轻易地被类似移动电话或 PDA 的服务使用。拥有相似内容的网站环(Web-rings)可以轻易地在它们的网站共享内容,使这些网站更出色更有价值。6.2 系统界面的设计6.2.1 主界面的实现Android的每一个可视化界面,都有其唯一的布局配置文件,该文件中有各种布局的方式,和各种资源文件如图像,文字,颜色引用等,程序在运行时可以通过代码对各个配置文件进行读取,这样可以形成不同的可视化界面和绚丽的效果。该软件的主界面是一个Activity,Android工程在启动每一个Activity时都会首先执行onCreate()方法,如下:public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main_tabs);该方法主要执行界面的初始化操作,Activity有个设置布局的方法:setContentView(int id),参数为资源ID,该id在工程目录res/layout下,主界面的布局文件为main_tabs,下面是该布局文件的结构:在线性布局中添加ViewFlipper,ViewFlipper可以用来指定FrameLayout内多个View之间的切换效果,可以一次指定也可以每次切换的时候都指定单独的效果。该类额外提供了如下几个函数: isFlipping: 用来判断View切换是否正在进行 setFilpInterval:设置View之间切换的时间间隔 startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行 stopFlipping: 停止View切换 ViewFlipper中不同的布局文件,这样就可以在同一个Activity中切换不同的布局,这个Activity实现OnGestureListener这个接口,实现接口里面的方法,就可以实现手势处理,实现更好的用户体验。这些组件都有很多属性可以设置该组件的位置,大小,背景颜色等;如:orientation=”horizontal” :此线性布局的子部件水平对齐 Layout_height=”fill_parent” :布局的高度为填满父布局 Layout_width=”wap_content” :布局的宽度由子部件的宽度决定6.2.2主界面中子界面的实现在主界面中实现四个界面的切换,分别是我的收藏,腾讯Rss,新浪Rss和浏览记录,分别对应的布局文件是rss_love.xml,qq_main.xml,sina_main.xml和rss_history.xml,这些文件的在工程的res/layout/下。1. 我的收藏和浏览记录界面的实现我的收藏和浏览记录的界面类似,布局文件中主要是ListView组件,在Android开发中,ListView是比较常用的组件,它一列表的形式展示具体内容,并能根据数据的长度自适应显示。ListView需要一个适配器,android自带的一些适配器如SimplaAdapter显示比较单一,所以本软件中继承BaseAdapter,通过对这个适配器的扩展实现我们需要的效果,扩展成一行能显示多个内容。由于BaseAdapter是一个抽象类,我们需要实现里面的getView方法返回一个view,即视图,视图可以显示在Activity上,这样就可以看到我们想要的界面。ListView有一个监听器OnItemClickListner,实现里面的方法,就可以监听Touch事件,当手指点击到每一行时,可以通过ListView.getItemPosition(int potion)该行信息,这样就可以通过intent传递数据到其他的Activity。本程序的思路是点击某一行,跳转到另一个Activity,显示新闻的内容,如图6-1和6-2所示。图6-1 浏览记录页面图 图6-2我的收藏界面图2. Rss界面的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论