滁州学院毕业论文
1绪论
1.1研究背景
智能手机(Smartphone),是指“像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对手机的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的这样一类手机的总称”。目前,全球多数手机厂商都有智能手机产品,而芬兰诺基亚、美国苹果、加拿大RIM(黑莓)、美国摩托罗拉、中国台湾宏达(htc)都是智能机中的佼佼者[1]。
智能手机具有五大特点:1.具备了无线接入互联网的能力,即要有GSM的支持网络下的GPRS或者是CDMA网络支持下的CDMA 1X或3G网络。2.人性化,可以根据个人需要扩展机器的功能。3.它是具有开放性的操作系统,还可以安装非常多的应用程序,使得智能手机的功能可以得到无限的扩展。4.具有PDA功能,其中包括个人信息管理、日程记事、任务安排、多媒体应用、浏览网页等。5.扩展性能强,第三方软件支持多[2]。
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%[3]。
在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具[4]。在这个人与人关系愈加密切的时代,“通讯”成了生活中的必需品。这就有这么一个系统记录下人与人之间的多样联系方式——手机通讯系统。目前国内的通讯录应用服务商分为三类,第一类如幸会、名片全能王、QR扫描等等,这些产品主要是为了解决名片交换时候输入难度较高的问题。而这也就致使了这部分厂家缺少了一个服务商最看重的东西:对用户没有持续的运营能力;第二类如火种、QQ通讯录、友录、手机自带的通讯录同步服务等等,这部分的市场主要提供了号码备份服务,帮助用户解决手机号码记录联系人的问题。第三类就是针对与通讯录之上提供的拓展应用服务提供商,比如:米聊和微信,你可以通过上面去发短信,实现多种通信能力的聚合[5]。
1.2研究现状
当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得
2
滁州学院毕业论文
手机操作系统也出现了不同种类。Android是一个基于Linux 核心(kernel)的开放手机平台作业系统,与Windows Mobile、Symbian 等手机作业系统处在同一级别,其中占有开放源代码优势的Android系统有最大的发展前景。较之Symbian用户体验较差,系统较为封闭,支持的应用较少和Windows Mobile系统对终端厂商来讲引入成本较为昂贵,娱乐性平平。Android系统则拥有低廉的引入成本,在应用方面的资源丰富,以及良好的用户体验开放性较强的特点,适应了移动互联网的发展趋势,切合了移动互联网产业链各方的发展变化需求,所以取得了迅猛的发展[6]。
Android 系统除了低廉的成本和良好的用户体验外,因采用了开源的平台,给予了终端厂商和开发者更大的灵活性,开发者在程序的开发移植上更为方便且不需要考虑厂商端内容审核等问题,终端厂商则可以按需深度定制系统开发本地化应用环境,在终端厂商、电信运营商和第三方应用开发商的推动下,用户可选择的应用资源将会进一步丰富。各大Android应用商店呈现百花齐放的态势。带给了应用开发者更多的机遇和极具诱惑力的利润分成,在各应用商店间的移植改造成本也相对较低。随着应用商店的不断发展和开发者的涌入,Android平台的应用资源优势正在逐步的扩大[7]。
而从用户的角度考虑,Android良好发展前景主要源于优秀的用户体验和高性价比这两个方面。 从人才需求类型来看,目前对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。从目前的招聘需求来看,后者的需求最大,包括手机游戏、手机终端应用软件和其他手机应用软件的开发[8]。
职业专家分析说,由于目前Android技术较新,具有开拓空间,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才前景也被看好。
生活在信息高速发展的今天,智能手机的普及己经是不可改变的趋势。而作为手机各个功能中最为基本的通讯录也成为人们生活中必不可少的一部分了[9]。在这个人与人关系愈加密切的时代,“通讯”成了生活中的必需品。通过手机通讯录记录下对方的联系方式,既减轻了大脑的负担,又不在受各种条件的约束,做到便捷随身管理相关的联系信息,摆脱了传统电话簿,名片的累赘。另外,不同于微博,社交网站,手机通讯录是完全属于用户的,而不隶属于某个特定公司或是服务,只要获得用户的认可,即使不是大公司也可以借此迅速建立起一个巨大的关系网络[10]。Frost & Sullivan的王煜全也曾多次强调过手机通讯录是一块颠覆性创新的金矿,是创业者们创新的绝佳平台。从长远利益来看,可是意义重大的环保便民之举。根据市场需求,手机通讯录管理系统所记录的信息一般分为个人、商业、办公三类。清晰了机主的联系方向。针对性的分门别类,使系统具有了方便了机主的存储和快速查阅优势功能,大大减少了在电话簿,名片上机械翻阅查找过程的时间。于此同时又根据手机随身携带的特殊性,在一定程度上比一般的制作文件方便亲民。又其次,因为手机是随身携带的通讯工具,这与记事本相比将在一定程度上保障了联系人信息的安全性,相对避免了个人隐私信息外泄从而带来的损失[11]。
综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。然而现在很多通讯
3
滁州学院毕业论文
录一味追求外观花哨,功能繁杂,对于大多数用户,许多功能用不上,形同虚设。针对以上各种弊端,开发了此种通讯录,将各种性能优化,继承通讯录的常用功能,满足一般用户存储,查找,删除,查看的需求,此外还支持发信息,打电话,发邮件,备份SD卡等功能[12]。
1.3主要工作
在此背景下,开发的基于Android手机通讯录具有十分重要的意义。可以根据客户需求的实际情况,开发一款实用的手机通讯录软件。
本设计主要是采用Android的View框架编写,部分框架运用Android中的其他组件。 当进入通讯录的增加界面时,调用的是一个用相对布局RelativeLayout的XML布局文件。其中包括了2个Button,分别实现了不同的功能。第一个Button是保存内容,当输入联系人姓名和号码是点击保存实现此功能。说到保存,不得不说得是保存信息涉及添加新联系人的头像,姓名,手机号码,办公室电话,家庭电话,职务职称,单位名称,地址,邮政编码,Email,其他联系方式,备注这些信息。第二个Button是返回,顾名思义就是从增加界面返回前一界面。
响应menu键的触发事件,设置底部菜单是否可见,并通过对底部菜单选项的监听实现底部菜单中的增加、查找、删除、菜单、退出等功能,其中菜单包括显示所有、删除所有、号码备份功能。
在联系人信息界面时通过点击menu键,会弹出通信功能框,通过与发信息、打电话、发邮件功能接口的套用来实现。
1.4本文结构
本文首先给出了系统的研究背景,对当前手机通讯录的发展现状做了简单的介绍。进而详细的分析了Android的特征、架构以及Android应用的构成和工作机制。
本文详细的提出了软件的架构,以及通讯录的设计方案;采用Java开源的JAR包对HTML文件进行分析和获取图片和文字信息;对各个界面的布局和实现方式进行详细说明;对数据库设计模块进行了详尽的需求分析,经分析得到数据库设计模块,它主要完成用户对已经获取的内容的存储,删除和查询等操作;运用Android提供的各种组件设计和实现很好的UI效果,实现很好的用户体验;详细介绍了该软件的性能优化。
2 Android技术与理论
2.1 Android系统开发简介
2.1.1 Android技术简介
Android一词的本义指“机器人”同时也是Google。于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分,不存在任何以往阻碍
4
滁州学院毕业论文
移动产业创新的专有权障碍。Google通过与软、硬件开发商、设备制造商、电信运营商等其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统[13]。
对于设备制造商来说,Android是一个免费的平台。对硬体开发厂商来说,Android是个开放的平台。只要厂商有能力,可以在这个平台上自由加入特有的装置或功能,不受手机作业系统厂商的限制。对于手持装置的开发者来说,Android是个先进的平台。平台上的应用程式可相容于各种型号的Android 手机,免去为各种不同手机机型开发的困扰。Android平台支援各种先进的网络、绘图、3D 处理能力,可以用来提供更好的使用者体验。Android它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统[14]。
Android软件平台主要由五部分构成,它们分别是:关键应用程序、应用程序框架和组件、C /C ++函数库、Java程序运行环境、优化了的Linux内核[15]。
关键应用程序:Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历、网页浏览器等,而更多有特色的Android应用程序还有待于广大开发者共同参与开发。
应用程序框架及组件:Android 应用程序开发基于框架和组件。Android本身已在其框架中提供了许多组件供应用程序调用,开发者也可在开发应用程序时顺带开发新的组件,并将该组件放入应用程序框架中,以供自己和其它应用程序调用。
C/C++函数库:Android应用程序框架之下是一套C/C ++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括: 标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库等[16]。
Java程序运行环境:Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
Linux内核:Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层[17]。
Android应用程序以各种组件(API)为基础,API是Android软件平台的重要组成部分,也是开发Android应用的关键所在。
当前活动程序Activity:作为最常用的应用程序组件,几乎所有Activity都会通过创建U I窗口与用户进行交流。Activity具有生命周期,它包含运行、暂停、停止等几个状态,状态间的转换可通过调用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop ()、onDestory()等方法来实现。要开启新的activity,可以调用startActivity(Intent),或调用startSubActivity(Intent, int),后者通常和onActivityResult(int,int, String,Bundle)联合使用,以从一个activity获取某结果并返回给打开它的activity[18]。
图像显示View: View是最基本的UI构件,它在屏幕中占据一个矩形区域可用来显示文本、图像等内容,还可完成图像事件处理。常用的View方法有:inflate()(由XML 文件生成View)、onDraw
5
滁州学院毕业论文
(Canvas)(对View进行填充) 、onMeasure (int, int)(测量View的高度和宽度) 、onLayout() (完成View的布局) 、onKeyDown(int, KeyEvent)(View中有按键操作时被调用) 、onFocusChanged (boolean, int)(当View得到或失去关注时被调用)、setOnClilckListener()(设置View点击事件监听器)。View也包含一些子类,如: TextView(布局文件中的文本显示)、EditText(布局文件中的文本编辑)、Button(按钮)、ListView(显示列表) [19]。
事件Intent: Intent抽象描述了想要执行的某种操作,它与startActivity一起使用可以开启新的activity,与startService 一起使用可以开启后台服务。Intent最重要的作用还是加载activity,它是不同activity间的桥梁。Intent也可以被认为是一种概括操作行为的数据结构,它主要包括action (动作)和data(数据)两部分,此外它还具有一些附加属性如category(intent种类)、type (数据类型)等。常用的Intent方法有intent() (构造intent)、addcategory() (添加intent类型)、getAction()(获取intent动作)、getData()(获取intent数据)等。
数据存取与共享机制ContentProvider: ContentProvider为应用程序提供一些访问方法,包括: Query(Uri, String [ ] , String,String[ ] , String, String, String)(数据信息的查询) ,insert (Uri, Contentvalues) (在Contentp rovider中添加新数据) , updata(Uri, Contentvalues, String, String[ ])(更新Conntp rovider中的数据), delect(Uri, String,String[ ])(删除数据) , Gettype (Uri)(获取数据类型)。其中,Uri标明了ContentProvider存储的数据类型,在执行访问方法时都需依据Uri作为路径标识来确定要访问哪个ContentProvider[20]。
后台服务Service: Service是运行在后台的应用程序组件,不直接与用户交互。当前活动程序可以使用Context. StartService()开启一项后台服务,还可以通过Context. bindService()与后台服务通信。
Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在Dalvik VM上运行的。
6