基于Android的个人通讯录设计与实现Word格式.doc
《基于Android的个人通讯录设计与实现Word格式.doc》由会员分享,可在线阅读,更多相关《基于Android的个人通讯录设计与实现Word格式.doc(28页珍藏版)》请在冰点文库上搜索。
4.2系统功能设计 9
4.3系统数据库设计 10
5.通讯录的实现 12
5.1Android开发平台搭建 12
5.2具体功能的实现 13
5.2.1密码设置及密码验证 13
5.2.2主显示界面 15
5.2.3删除联系人功能 16
5.2.4Menu功能 16
5.2.5MENU的菜单功能 19
5.2.6通讯功能 20
6系统测试 21
6.1系统测试实例 21
6.2系统测试结果 22
6.2.1系统测试方法 22
6.2.2密码设置/验证功能测试 22
6.2.3对联系人的编辑、查找及删除功能测试 23
6.2.4备份数据功能测试 24
6.2.5通讯功能测试 25
6.3系统测试总结 25
结束语 26
致谢 27
参考文献 28
1绪论
1.1研究背景
智能手机(Smartphone),是指“像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对手机的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的这样一类手机的总称”。
“智能手机(Smartphone)”这个说法主要是针对“功能手机(Featurephone)”而来的,本身并不意味着这个手机有多“智能(Smart)”;
可以说“智能手机(SmartPhone)”就是一台可以随意安装和卸载应用软件的手机(就像电脑那样)。
智能手机的诞生,是掌上电脑(PocketPC)演变而来的。
厂商为了满足市场需求,把电脑的系统移植到手机中,将手机和掌上电脑综合于一体,于是才出现了智能手机的概念。
智能手机具有五大特点:
(1)具备了无线接入互联网的能力,即要有GSM的支持网络下的GPRS或者是CDMA网络支持下的CDMA1X或3G网络。
(2)人性化,可以根据个人需要扩展机器的功能。
(3)它是具有开放性的操作系统,还可以安装非常多的应用程序,使得智能手机的功能可以得到无限的扩展。
(4)具有PDA功能,其中包括个人信息管理、日程记事、任务安排、多媒体应用、浏览网页等。
(5)扩展性能强,第三方软件支持多[1]。
Android本意词是指“机器人”,同时也是Goole于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,Android是一种基于Linux的自由及开放源代码的操作系统,Android以其自由开放源代码的特点而成为最热门的智能手机。
在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具[2],“通讯”成了生活的必需品,这就有了系统下人与人之间的多样联系方式——手机通讯录。
传统通讯录以纸张为载体,将需要记录的联系人一一人登记在册,包括地址、联系方式等,再在需要时进行翻阅查询。
手机通讯录,在手机系统下,占用手机相对很小的空间,系统的记录联系人的联系方式及其他信息,不仅突破了各种条件的舒服,减轻了机主的负担,更方便了使用者的通讯。
综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。
然而现在很多通讯录外观花哨、功能单一或形同虚设。
本文针对以上各种弊端,通过需求分析及调查等工作开发了此种通讯录,将各种性能优化,继承通讯录的常用功能,满足一般用户存储,查找,删除,查看的需求,此外还支持发信息,打电话,发邮件,备份SD卡等功能[3]。
1.2主要工作
在此背景下,基于Android手机通讯录的设计及实现具有非常重要的意义,可以根据市场需求情况开发一款实用的手机通讯录。
本系统的设计工作遵循标准的软件设计流程,首先通过市场调查进行需求分析,然后进行软件功能的设计,进而搭建Android开发环境进行代码编写、调试程序,实现软件设计功能,再次,进行软件功能测试,对软件功能的不足及可优化的地方进行记录,最后进行软件系统的优化。
2.Android系统开发简介
2.1Android技术简介
Google与2005年并购了成立22个月的高科技企业Android,展开了短信、手机检索、定位灯的业务,同时基于Linux的Android平台也进入了开发阶段。
Google在2007年11月5日发不了Android的第一个版本,在刚发布之初,Android并没有引起界内太多的关注。
但随着Google组件的开放手机联盟不断有新生力量的加入,Android这个初出茅庐的小子已成为为iPhone分庭抗礼的生力军[4]。
Android采用软件堆层(SoftwareStack,又名软件叠层)的架构,主要分为三部分。
底层以Linux内核工作为基础,由C语言开发,只提供基本功能;
中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分,不存在任何以往阻碍移动产业创新的专有权障碍[5]。
Android平台支援各种先进的网络、绘图、3D处理能力,可以用来提供更好的使用者体验,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写[6]。
图1Android的架构
在Android操作系统中,将体系结构划分为4层:
应用层(Application)、应用框架层(ApplicationFramework)、系统运行库层(Libraries)以及Linux内核层(LinuxKernel)[7],如图1所示。
应用层(Application):
运行层是使用Java语言进行开发的一些应用层序,如地图软件、邮件客户端层序、浏览器的连接等都是运行在应用层上。
应用框架层(ApplicationFramework):
应用层序框架,主要是Google公司发布的一些操作支持的类库(API框架)。
应用程序中包含众多组件,开发者也开放新的组件,将组件放入应用程序框架中,可以进行供自己和其它应用程序调用。
系统运行库层(Libraries):
当使用Android框架进行开发时,为了更好地为程序服务,Android操作系统会自动调用一些C/C++的库文件夹来支持所使用的各个组件。
Linux内核层(LinuxKernel):
Android操作系统主要是基于Linux2.6内核,程序的安全性、驱动程序、进程管理等都由Linux内核所提供。
2.2Android应用程序框架
基于Android软件开发接触到最多的部分就是应用程序框架,开发者都是通过应用程序框架来与Android地层进行交互。
整个应用程序框架中有4个重要组件:
Activities、Intent、Services和ContentProvider。
Activities:
一个Activities表示一个程序的显示界面,一个应用程序课包含多个Activities组件,每个Activities组件都有各自的周期。
Intent:
Intent用来完成多个程序之间的跳转,另外还可以用Intent来调用Android本身所提供的应用程序,例如打电话、发短信、发邮件等。
Services:
Services也是Activities程序,只是Services运行在后台,并没有界面显示。
ContentProvider:
不同应用程序之间需要对数据进行共享时用到此组件。
3.软件需求分析
3.1软件功能需求分析
通过对用户需求的市场调查的分析,确定反应用户需求的系统逻辑模型,把整个设计划分成4个单元,分别是程序启动、用户界面、后台服务和数据库适配器,各模块之间的关系如图2所示:
图2系统逻辑模型
在上图中,后台服务是整个软件的核心,数据获取模块是其主要部分,负责周期性的从用户输入的内容中获取信息。
后台服务在程序启动时就由AppWidgetProvider启动,也可由用户界面通过startService()进行启动,启动后的后台服务将一直保持运行状态。
同时用户界面从数据库中获取文本信息。
一方面可以避免因网络通信不畅造成界面失去响应;
另一方面,后台服务可以及时更新数据,以保证数据的准确性。
数据库适配器封装了所有对SQLite数据库操作的方法,用户界面和后台服务会调用它来实现数据库操作。
在完成用户界面设计、数据库设计和模块设计后,至此程序设计阶段基本完成。
3.2软件数据库需求分析
数据库存储数据的组织形式和数据库文件的形式不定,主要根据使用要求来确定,但数据中的数据都是按照一定模型组织、描述和存储的,具有较小的重复度、较高的数据独立性和易扩展性。
用户数据库是基于SQLite建立。
SQLite是遵守ACID的关系型数据库管理系统,包含在一个相对小的C库中,能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如PHP、Java、C、C#等。
SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。
所以主要的通信协议是在编程语言内的直接API调用。
这在消耗总量、延迟时间和整体简单性上有积极的作用。
整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。
SQLite是无类型的,这意味着我们可以保存任何类型的数据到所想保存的任何表的任何列中。
SQLite数据库的非可视化操作是其弊端所在,这就导致SQLite在实现客户端数据整体结构的过程无可视界面,整个过程都很抽象。
3.3安全需求分析
由于Android系统自身具备的开放源码的特征,它的安全性能成为信息安全领域研究的一个重要课题。
Android的安全性能主要体现在两个方面:
Android的系统安全和数据安全。
Android系统安全是指智能终端本身的安全,是对操作系统的保护,防止未授权的访问及对授权用户服务的拒绝或对未授权用户服务的允许,包括行为检测、记录等措施。
Android的数据安全指确保存储数据完整性、合法性二个方面,要求做到系统正确地传输数据,授权程序顺利地读取数据[8]。
Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序、操作系统或用户的有害操作,这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。
4.功能设计
4.1总体功能设计
通过对通讯录功能、系统模块、用户需求方面进行全方位的分析制定开发流程,开发流程如图3所示。
图3软件开发流程
4.2系统功能设计
采用标准的开发流程确定系统具有用户管理功能,联系人增删改功能,通讯功能,查找功能,备份等功能。
系统的功能图如4所示。
图4开发流程图
通过对系统的功能结构的分析,设计后系统运行流程是首次使用将进入密码设置界面,此后每次进入此程序将首先进入密码验证界面,密码正确才进入通讯录主界面,可以看到联系人列表,长按联系人实现标记功能,点击联系人进入联系人详细信息显示界面,在此可以实现修改、删除该联系人信息及返回功能,此外通过MENU课选择打电话、发短信、发邮件通信功能。
在通信录主显示界面通过点击MENU课选择增加联系人、删除联系人、查找联系人、菜单及退出菜单,另外“菜单”选项又包括子菜单:
显示所有,删除所有,备份,刷新,修改密码,后退等。
系统的运行流程图如图5所示。
图5运行流程图
4.3系统数据库设计
该程序数据库是在Android平台上执行Java代码,通过DVM编译来建立的,由于整个SQLite数据库是非可视化操作,因此所有对数据库的操作都是通过执行Java代码实现。
且表的设计也尽量优化,没有错综复杂的关系,每张表都是独立的,不存在任何约束,因此数据库也是独立数据库。
本系统为了实现文本管理功能,需要建立文本信息表user,文本信息表user中需要包含的属性有_id,username,username_py,mobilephone,officephone,familyphone,position,company,address,zipcode,emial,othercontact,remark,文本信息表user如表1所示:
表1文本信息表user
属性
数据类型
说明
_id
Integer
自动增加的主键
username
姓名
username_py
String[]
姓名(拼音)
mobilephone
String[]
手机号
officephone
办公室号
familyphone
家庭号码
position
职位
company
公司地址
address
String[]
地址
zipcode
邮编
email
邮箱
othercontact
备注
remark
标记
5通讯录的实现
5.1Android开发平台搭建
搭建Android开发环境需要Eclipse、JavaSDK、AndroidSDK、ADT。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
JavaSDK就是JDK,JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment)。
AndroidSDK(SoftwareDevelopmentKit)软件开发工具包。
ADT(AndroidDevelopmentTools)Android开发工具。
Android开发平台搭建步骤如下:
(1)首先到http:
//www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压(推荐下载JavaEE集成版本)。
去站点下载SDK后安装,droidSDK1.5后解压。
第一步下载工序就结束了。
(2)双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->
InstallNewSoftware->
AvailableSoftware,点击右侧的“Add”输入http:
//dl-ssl.google.com/android/eclipse/后确定,然后在“Workwith“下拉菜单中选择刚才输入的网址。
过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后要到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
(3)重启后选择Eclipse菜单中的Windows->
Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。
(4)在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。
5.2具体功能的实现
5.2.1密码设置及密码验证
程序运行首先进入密码设置/输入密码界面,密码设置/验证界面布局如图6。
图6密码设置/验证界面布局
界面整个为一个大的LinerLayout,包括三个EditText,和password_manage,new_password,repeat_password,密码通过SharedPreferences存储类保存,通过判断密码是否为空进行控制三个EditText的显示:
密码为空,即第一次使用本系统时,显示new_password和repeat_password,为“确认”按钮添加事件监听,点击“确认”时比较新密码及确认密码,两密码一致则进入系统主显示界面,否则提示“密码不一致,然后返回;
密码不为空时只显示password_manage,将用户输入的密码和SharedPreferences存储的密码进行比较,一致时进入系统主显示界面,否则提示“密码输入错误”,然后返回。
主要实现代码如下:
SharedPreferencespreferences=
getSharedPreferences("
password"
MODE_PRIVATE);
if(preferences.getString("
value"
"
0"
)==null
||preferences.getString("
).equals("
)){
text1.setVisibility(EditText.INVISIBLE);
}else{
text2.setVisibility(EditText.INVISIBLE);
text3.setVisibility(EditText.INVISIBLE);
view2.setVisibility(TextView.INVISIBLE);
view3.setVisibility(TextView.INVISIBLE);
}
save.setOnClickListener(newOnClickListener()
{//点击事件
@Override
publicvoidonClick(Viewv){
if(text1.getVisibility()==EditText.INVISIBLE)
//通过密码输入框的可见性判断当前操作
{
if(!
text2.getText().toString().equals(text3.getText().toString())){
Toast.makeText(PassWord.this,"
两次输入密码不一致!
"
2000).show();
MODE_PRIVATE);
SharedPreferences.Editoreditor=preferences.edit();
editor.putString("
text2.getText().toString());
mit();
Intentit=newIntent(PassWord.this,Main.class);
PassWord.this.startActivity(it);
PassWord.this.finish();
}}else{
if(text1.getText().toString()
.equals(preferences.getString("
))){
Intentit=newIntent(PassWord.this,Main.class