1、 本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 1 页 共 28 页1 引言随着移动互联网的高速发展,人们已经无法离开移动终端,智能手机也已经越来越普及,对人们的生活产生了巨大的影响,人们可以随时随地使用手机,随时随地来查看信息,随时随地用来上网等,当然也急需青春地了解到自己每天所需要完成的事情,或是需要记录一些容易忘记的重要事件,并能有一个功能完善的软件来帮助人们完成这些事情。在这样的大背景下,基于安卓平台的日历提醒软件也逐渐进入安卓开发者的视野中。1.1 课题背景Android 是一种基于 Linux 平台的开放源代码的操作系统,主要使用在移动终端上。Android 操作系统最初
2、由 AndyRubin 开发,最早的时候主要用在手机平台上。2005 年由 Google 收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上 1。2011 年第一季度,Android 在全球的市场份额首次超过塞班系统,跃居全球第一。 2011 年 11 月数据,Android 占据全球智能手机操作系统市场 52.5%的份额,中国市场占有率为 58%2。Android 是一种开放源代码的操作系统,随着 Android 的迅速发展,如今许多开发者运用其他不用的编程语言来编写 Android 应用程序,如今已经不再是以前那种只允许运用 Java 语言来开发 Android 应用程序
3、的单调局面,因此众多开发者更加欢迎Android 平台, Android 已经成为第一个真正的开放式操作系统。1.2 研究的目的与意义进入互联网时代之后,随着人们对信息需求量,准确性的加大。人们对时间,日期的准确性有更大的需求,传统的日历已经不能满足人们的要求,电子万年历应运而生,大大方便了人们对时间日期的掌握,使每个用户都能随时在电脑旁边掌握日期,节日等信息。但是随着进入 21 世纪移动互联网高速发展的时代,人们每时每刻都在使用移动终端,智能机已经被普及,大量进入人们手中,人们不管在何时何地都能利用移动终端来查看各类消息等,当然无论在任何时候,人们需要准确地掌握日期、节日,提醒等重要消息,手
4、机版日历提醒系统就在这样的大背景下被开发出来。本文提到的日历系统是一款专注于为用户提供时间管理的 Android 软件,本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 2 页 共 28 页兼备公历、中国农历、各类节日、实时提醒等信息,方便用户每一天的生活。几乎在每一台 Android 手机上都有一款相同功能的软件。Android 操作系统作为目前最风靡与社会中的手机操作系统,按照当前 Android 的市场占有率而言,本款软件非常具有市场应用价值。1.3 国内发展状况当前,国内的 Android 开发事业还是以程序应用开发为重点,主要分成 3 类:为各个企业开发应用程序、开发通用应用程
5、序以及开发游戏程序。第一类开发人员一般身处财力较雄厚的大公司,这些公司主要为自己公司品牌或者其他著名品牌设计移动终端的总体方案。除了根据用户需求对系统进行特定的修改意外,更多的工作是为这些移动终端编写特别定制的应用程序。第二类开发者,一般处于自主创业型或者是自主开发者,他们的盈利模式主要有 2 种:为一些大型公司进行外包服务,或者通过 Google 平台的移动终端广告,通过其他用户来点击广告从而获得广告点击分成。而理论上利用付费下载的模式来取得盈利的,目前国内基本没有成功的例子。14 研究内容为了实现基于 Android 平台的日历提醒软件,本文主要围绕基于 Android 平台的开发应用程序
6、的整体思路,设计开发、实现功能等流程做了具体的描述,并对农历的日历算法做了简洁明了的描述。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 3 页 共 28 页2 相关技术介绍2.1 Sqlite 技术2.1.1 Sqilte 介绍SQLite,是一款小型的数据库,是遵从 ACID 的关联式模式的数据库管理系统,它的设计目标是基于嵌入式的小型数据库的,而且目前它已经被运用到很多嵌入式产品中,它占用系统资源非常少,在一些嵌入式设备中,几百 KB 的内存就能够满足系统的需要。它支持 Windows/Linux/Unix 等许多的主流操作系统,同时与很多程序语言能够结合,比如 Xml、PHP
7、、C#、Java 等,还有 ODBC 接口,同样比起Mysql、PostgreSQL 这两款开源程序语言界最著名的数据库管理系统来说,它的处理速度比他们快的多 3。SQLite 第一个 Alpha 版本于 2000 年 5 月诞生. 到目前已经 12年了,SQLite 也发布了一个新的版本 SQLite 3。2.1.2 Sqlite 支持的 SQL 语句SQLite 虽然相对于其他数据库非常的小,但是支持 Sqlite 的 SQL 语句绝对不会比其他开源数据库差劲,它所支持的 SQL 语句包括: ATTACH DATABASE 、BEGIN TRANSACTION 、comment 、COMM
8、IT TRANSACTION 、COPY 、CREATE INDEX 、 CREATE TABLE 、CREATE TRIGGER 、 CREATE VIEW 、DELETE 、DETACH DATABASE 、DROP INDEX 、DROP TABLE 、DROP TRIGGER 、DROP VIEW 、END TRANSACTION 、EXPLAIN 、expression 、INSERT 、ON CONFLICT clause 、PRAGMA 、REPLACE 、ROLLBACK TRANSACTION 、SELECT 、UPDATE。2.1.3 Sqlite 的特征1.ACID 事务
9、。2.零配置无需进行复杂的安装和繁琐管理配置。3.一个完整的数据库中能够存储一个存在在单一磁盘中的文件。4.在不同字节顺序的机器间能够自由地共享数据库文件。5.数据库大小能够拓展到 2TB。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 4 页 共 28 页6.规模足够小小,只要 3 万行 C 代码即能实现功能,大小约为 250K。7.在大部分的普通数据库中的操作要比在一些流行数据库中快。8.简单,轻松的 API。9.包含 TCL 绑定,同时通过 Wrapper 支持其他语言的绑定。10.良好注释的源代码,并且有着 90%以上的测试覆盖率。11.独立: 没有额外依赖。12.Source
10、 完全的 Open,你可以用于任何用途,包括出售它。 13.支持多种开发语言,C, PHP, Perl, Java, C#, Python。2.2 WebService 技术2.2.1 WebService 简介WebService 是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的 web 应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过 web 调用。Web Service 是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问 Web Service,
11、通过 Web Service 内部执行得到所需结果.Web Service 可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他 Web Service 应用程序可以发现并调用它部署的服务系统功能需求。2.2.2WebService 技术和规则1.XML:描述数据的标准方法。2.SOAP:表示信息交换的协议 4。简单对象访问协议,简单对象访问协(SOAP)是一种轻量的、简单的、基于 XML 的协议, SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议( MIME)。它还支持从消息系统到远程过程调
12、用(RPC)等大量的应用程序。它是用来交换结构化和固定在网络上的信息。3.WSDL:是 Web Service 的描述语言 :用于描述 Web Service 的接口信息等。4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种基于 XML 语言的独立于平台之外的用于在描述互联网上的商务的协议。2.3 Android 平台2.3.1 Android 平台简介本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 5 页 共 28 页Android 是基于 Linux 内核的操作系统,是 Google 公司
13、在 2007 年 11 月 5 日公布的手机操作系统 5。刚开始的时候,是一个名为 Android 的公司来进行开发的,谷歌在 2005 年收购Android 公司以后,继续进行对 Android 系统的开发以及运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。Linux 内核只提供底层功能,其他的应用软件则由各个使用 Android 来进行开发的公司进行自行开发,部分程序以 Java 语言来编写。2.3.2Android 应用程序框架Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端,SMS 短消息程序、日历、地图
14、、浏览器,联系人管理程序等 7。利用 Java 语言编写其他所有应用程序。核心应用程序所使用的 API 框架可以完全被开发人员所访问。该应用程序的架构设计简化了组件的重用;任何应用程序都可以发布其功能、发布任何其他块的应用程序,可以利用他们发布的功能块(需要遵循的安全限制的框架)。同样,用户可以利用应用的程序重用机制更方便的替换程序组件。Android 应用程序背后都隐藏了许多服务其中包括:视图(Views),可以用来构建应用程序,它包括文本框(text boxes),按钮(buttons),列表(lists),网格(grids) ,甚至可以将这些元素嵌入到 Web 浏览器。内容提供器(Con
15、tent Providers) ,共享它们自己的数据时都需要内容提供器的服务,或者当一个应用程序想要访问另一个应用程序的数据(如联系人数据库)。资源管理器(Resource Manager),它可以提供如图形和布局文件( layout files )非代码资源的访问 8 、本地字符串。通知管理器 (Notification Manager),自定义的提示信息显示在应用程序可以在状态栏中。活动管理器( Activity Manager),用来管理应用程序生命周期,并提供常用的导航回退功能,是 Android 开发中的重要的服务系统。Android 具有一个能够分层的环境,在 Linux 内核的基
16、础上构建,它包含了各种功能。UI 子系统包括:窗口,视图。Android 与 iPhone 的 Mobile Safari 浏览器具有同样以 WebKit 为基础的包括一个构建在 WebKit 基础上的可嵌入浏览器,。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 6 页 共 28 页Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 GPRS、EDGE 和 3G) 9。链接到 Google 地图是 Android 应用程序中一项流行的技术。并不是所有的 Android 设备都配备了必需的硬件,但是Android 软件栈还提供对
17、基于位置的服务(例如 GPS)和摄像支持,另外还有加速计的支持。过去,移动应用程序的两个领域分别是图形/媒体和数据存储方法努力向桌面应用程序看齐。Android 利用对内置 2D 和 3D 图形的支持,其中包括 OpenGL 库,解决了图形方面的问题,因此缓解了数据存储的负担。 Android 软件层次结构。如图 2-1 所示。图 2-1 Android 软件层次结构 应用程序架构。如前所述,Android 运行在 Linux 内核上。Android 应用程序是在一个虚拟机(VM)中运行的利用 Java 编程语言编写二乘的。需要注意的是,这个 VM 与我们通常所说的 JVM 不同,它是 Dal
18、vik Virtual Machine,这是一种开源的虚拟机技术。2.3.3 系统运行库本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 7 页 共 28 页(1) 程序库Android 包含一些 C 语言、C+语言库, Android 系统中各类不同的组件能够使用这些库。开发者通过 Android 应用程序框架来获取一些服务,以下是一些核心库:系统 C 库:专门为基于 embedded linux 的设备定制的从 BSD 继承来的标准 C 系统函数库(libc)。媒体库:基于 PacketVideo OpenCORE;该库支持静态图像文件,同时支持多种常用的音频、视频格式回放和录制。编
19、码格式包括MPEG4、H.264 、MP3、 AAC、AMR、JPG,PNG。Surface Manager:对有显示子系统进行管理。LibWebCore:一个 web 浏览器引擎器,支持一个可嵌入的 web 视图和 Android浏览器。SGL:底层的 2D 图形引擎。3D libraries:基于 OpenGLES1.0 APIs 的实现 10。FreeType:位图( bitmap)和矢量(vector)字体显示。SQLite:一个轻量级的数据库(2) Android 运行库Android 包括了一个核心库,该核心库提供了 JAVA 编程语言核心库的大多数功能 11。Dalvik 虚拟机
20、依赖于 linux 内核的一些功能,比如线程机制和底层内存管理机制12。2.4 Xml 技术2.4.1 Xml 简介可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型的一种技术,允许用户定义自己的标记语言的源语言。XML 是非常适合 Web 传输的标准通用标记语言 (SGML) 的子集。XML 通过一种方法来描述和交换结构化数据。2.4.2 Xml 格式特征XML 不同于 Access,Oracle 和 SQL Server 等数据库,数据库提供了更完善的数据分析和存储能力,例如:排序、
21、查找、数据索引等,而 XML 只是完成存储数据的功能。但是 XML 与其他数据表现形式相比最大的有点是:他极其简单。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 8 页 共 28 页XML 与 HTML 的设计最大的区别在于:XML 是被设计用来对数据进行储存的的。而 HTML 是被设计用来对数据的外观进行显示。XML 的简单使其易于在任何应用程序中读写数据,这使 XML 很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持 XML,那就意味着程序可以更容易的与 Windows,Mac OS,Linux 以及其他平台下产生的信息结合,然后
22、可以很容易加载 XML 数据到程序中并分析他,并以 XML 格式输出结果 13。为了让 SGML 对用户显示的更加具有亲和力,XML 需要定义 SGML 的一些内部值和参数,去掉一些会能使得 SGML 在设计网站时非常复杂的功能。XML 保留的结构特征,使设计者可以定义自己的文档类型,XML 还推出了一个新的文档类型,使开发人员可以不需要定义文档类型。但是 SGML 也出现了我们下面列出的这些奇怪的问题:1 某些起始标签不允许例如 HTML 中标签的结束标签。2 某些起始标签可以选择性出现结束标签或者隐含了结束标签。3 某些起始标签要求必须出现结束标签:例如 HTML 中标签。4 标签可以以任
23、何顺序嵌套:即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string 是正确的。这些问题使建立一个 SGML 语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了 SGML 语言的定义一直停滞不前。以这些问题作为出发点,XML 逐渐步入我们的视野。XML 去掉了之前令许多开发人员头疼的 SGML 的随意语法。在 XML 中,采用了如下的语法:1 任何的起始标签都必须有一个结束标签。2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如 。XML 解析器会将其翻译成。3 标签必
24、须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如 this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。4 所有的特性都必须有值。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 9 页 共 28 页5 所有的特性都必须在值的周围加上双引号。这些规则使得开发一个 XML 解析器要简便得多,而且也除去了解析 SGML 中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在 XML 出现后的前六年就衍生出多种不同的语言,包括 MathML、SVG、RDF、RSS 、SOAP、XS
25、LT、XSL-FO,而同时也将 HTML 改进为 XHTML。对于控制解析器的应用程序而言,一次循环是必要的,因为应用程序很容易在嗅探前面几行之后停止读入。本 科 毕 业 设 计 说 明 书 ( 论 文 ) 第 10 页 共 28 页3 需求分析3.1 系统需求系统的全面性:Android 版电子万年历使用对象面对的是大部分 Android 手机用户群体,因此,系统要满足大部分 Android 用户的需要。3.2 技术需求系统技术的先进性:Android 版电子万年历采用现在最火的移动终端系统安卓系统,利用分层设计的原则。需要开发人员熟悉 Android 编程和 Java 编程。并且对万年历的算法有深刻的理解,并对 Android 界面绘制有一定的掌握,对 Sqlite 数据库,WebService 技术和 Xml 解析技术都有一定的了解。3.3 维护需求系统的易维护性:本软件是一款客户端手机软件,有新版本的时候服务器端会自动通知客户端更新,在进行系统维护时候,只需要把最新软件放到服务器端,客户端会自动下载,减少了维护的成本和周期。3.4 安全需求系统的安全性:本系统由于是一款客户端手机软件,对安全性需求比较低,数据库方面,主要针对本地数据库操作,不涉及和服务器数据交换,故而对数据的安全性要求没那么高。