基于Android系统的通讯录毕业设计论文

基于Android系统的通讯录毕业设计论文

2023年6月27日发(作者:)

XXX大学毕业设计与论文 相关资料

中文摘要

随着Android移动终端操作系统的快速发展,Android的各种手机软件也大量增长。手机通讯录作为手机终端最基础的功能,其质量直接影响着用户对手机的体验度。手机通讯录不仅仅能够简单的添加删除联系人信息,还能够通过模糊查找快速的从众多联系人中筛选出所要查找的联系人,并通过手机通讯录功能实现呼叫联系人,向联系人发送短信、邮件等功能。

本文首先描述了Android手机的开发背景及意义,其次介绍了Android开发的搭建环境及系统架构,详细描述了手机通讯录能够实现的功能,然后论述了功能的程序设计与实现方法。采用Android UI控件来对通讯录界面布局,轻便型的SQLite数据库来存储信息,不仅达到了对软件的优化,而且为用户的使用带来了更好的舒适感。

关键词:Android;UI控件;SQLite数据库

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

Address book Based on Android

Author:Yang Honglin Tutor:Xun Yaling

Abstract

With the rapid development of the Android mobile operating system, consequently,

Android 'phone software get a lot of growth. Address book is the most basic function of

mobile terminals, and its quality affects the users’ experience directly. It is not all of an

address book to add or delete someone’s contact information, the function of indistinct search

could help us to find a single person’s contact information among loads of people. And then,

by making full use of the function of address book, we could make a call, send a message, or

even send an email to this person.

This paper has described the background and significance of Android phones. And then,

has introduced the set up environment and system frame of the Android development, in

which I described the could-be realized function of cell phone address book in detail as well

as the procedure’s designation and realize ’s more, I adopted Android UI to

distribute the interface of address list, little-resource-wasting SQLite to store information,

which not only optimized the software, but also provide more intimacy to users.

Keywords: Android; UI control; SqLite database

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

目录

第一章 系统概述 ...................................................................................................................... 1

1.1Android开发的背景及意义 ......................................................................................... 1

1.1.1开发背景 ........................................................................................................... 1

1.1.2开发意义 ........................................................................................................... 2

1.2Android通讯录开发的目的及环境 ............................................................................. 2

1.2.1Android通讯录的开发目的 .............................................................................. 2

1.2.2Android通讯录的开发环境 .............................................................................. 3

1.3Android的优势 ............................................................................................................. 3

第二章Android开发环境的搭建及技术支持 ......................................................................... 4

2.1Android开发环境的搭建 ............................................................................................. 4

2.2Android系统架构 ......................................................................................................... 7

2.2.1应用程序 ........................................................................................................... 7

2.2.2应用程序框架 ................................................................................................... 7

2.2.3系统运行库 ....................................................................................................... 8

2.2.4 Linux内核 ......................................................................................................... 9

2.3Android开发的技术支持 ............................................................................................. 9

2.3.1Java高级开发语言 ............................................................................................ 9

第三章 系统分析 .................................................................................................................... 11

3.1系统可行性分析 ........................................................................................................ 11

3.1.1技术可行性 ..................................................................................................... 11

3.1.2经济可行性 ..................................................................................................... 11

3.1.3操作可行性 ..................................................................................................... 11

3.2需求分析 .................................................................................................................... 12

3.2.1系统功能分析 ................................................................................................. 12

第四章 总体设计 .................................................................................................................... 13

4.1功能结构图 ................................................................................................................ 13

4.2 SqLite数据库设计 .................................................................................................... 14

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第五章 详细设计 .................................................................................................................... 16

5.1浏览联系人界面 ........................................................................................................ 16

5.2查看联系人界面 ........................................................................................................ 17

5.3查找联系人界面 ........................................................................................................ 18

5.4编辑修改联系人界面 ................................................................................................ 19

5.5电话菜单界面 ............................................................................................................ 20

第六章 代码实现与测试 ........................................................................................................ 21

6.1 Android UI布局部分实现 ......................................................................................... 21

6.2头像按钮选择实现 .................................................................................................... 23

6.3联系人浏览实现 ........................................................................................................ 25

6.4修改联系人实现 ........................................................................................................ 26

6.5 User对象控件赋值部分实现 .................................................................................... 27

6.6数据库更新实现 ........................................................................................................ 27

6.7页面跳转部分实现 .................................................................................................... 28

6.8添加打电话,发短息菜单功能 ................................................................................ 28

6.9输入合法度测试 ........................................................................................................ 31

6.10备份还原测试 .......................................................................................................... 32

结束语 ...................................................................................................................................... 34

致谢 .......................................................................................................................................... 35

参考文献 .................................................................................................................................. 36

附录 I中英文翻译 .................................................................................................................. 37

附录II ...................................................................................................................................... 44

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第一章 系统概述

本章主要介绍了Android的开发背景以及意义,简单的介绍了Android平台以及优缺点,还有此次开发Android通讯录的目的以及环境。

1.1Android开发的背景及意义

1.1.1开发背景

Android是一种以Linux为基础的开放源码操作系统,主要适用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2010年末数据显示,仅正式推出两年的操作系统的Android已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智能手机平台。Android的主要竞争对手是苹果的IOS,微软的WP7以及RIM的Blackberry OS.

Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及虚拟机,它们有效地优化了Java程序的运行过程。Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的链接层。

Android最大特点在于它是一个开放的体系结构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,多媒体的支持功能和非常强大的浏览器。

根据市场研究公司Gartner的统计数据显示,2010年第二季度,谷歌Android移动操作系统的市场份额上升至17.2%,成功取代苹果iOS晋升为全球第三大移动操作系统。在移动操作系统市场中,排名第一和第二的是诺基亚的Symbian和RIM的黑莓,二者的市场份额分别为41.2%和18.2%。与此同时,应用于苹果iPhone和其他苹果移动设备的iOS的市场份额则出现下滑,跌至14.2%。

在2010年第二季度一系列最新智能手机发布以后,Android操作系统在美国个人消相信自己,相信你我 XXX大学毕业设计与论文 相关资料

费者市场上销售的所有智能手机中份额为33%,超过RIM的28%和苹果的22%基于Android系统的智能手机已经进入到强劲的增长期,Android第二季度在美国市场上的销售量同比大幅增长886%;尼尔森公布报告称,Android手机销售量已经超过了iPhone销售量。

1.1.2开发意义

智能手机和移动网络的发展使人与人之间随时随地都能自由的沟通交流,从最初的书信交流到现在的动几下手指,便利的同时也让沟通的方式越来越丰富有趣。Android智能手机是当前市场上的热门产品,充满活力的新产品。

开放的Android系统给了用户和开发者更多的创新空间,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎。

手机通讯录作为手机的基本功能之一,每天我们都在频繁的使用着,根据手机功能调查显示,有9成以上的消费者使用手机通讯录功能。随着手机通讯录功能的不断加强与完善,手机通讯录对人们的意义,已不仅仅像记事薄一样显示通讯地址,而是想着个性化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几年的发展力历程今后的发展趋势就是从通讯录发展为名片夹,也就是一个人名下,可以存储座机、手机、单位、地址、电子邮件等内容。这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性变化,作为手机的必备功能,通讯录的客户体验度在部分程度上决定了一款手机的受欢迎程度,间接的反映出手机的好坏。因此,Android通讯录的开发受到众多移动厂商开发者的注目。

1.2Android通讯录开发的目的及环境

1.2.1Android通讯录的开发目的

通过android模拟器,将用eclipse编写的android通讯录项目进行实现,要求实现增删改查的功能,从而进一步的了解android开发的相关知识,为今后的开发学习打下良好的基础。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

1.2.2Android通讯录的开发环境

编程开发环境为Eclipse3.6+Android SDK 集成环境,采用Java高级语言编写,使用android模拟器进行项目的测试与实现。

1.3Android的优势

1.开放性手机平台

Android是Google开发的基于Linux平台的开源手机操作系统。Google通过与运营商、设备制造商、手机公司和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的智能手机操作系统,在移动产业内形成一个开放式的生态系统。

2.网络集成性很高

Android内部集成了大量的google应用,如Gmail、Reader、Map、Docs、Youtube等等,涵盖了生活中各个方面的网络应用,对长期使用网络、信息依赖比较高的人群很合适。

d具备创新性

自从Google开发出Android后,许多人认为其技术可信度要比其它操作系统略胜一筹,但这并不是用户购买Android智能手机的唯一原因。人们认为Android是一种相对较新的、又较为成熟的技术,在达到巅峰之前还有很大发展空间。

d平台在数量上逐渐主宰市场

Google CEO埃里克·施密特2010年8月初曾表示每天出售20万部Android手机,第三方调查显示该平台发展势头正稳步增长。据市场分析机构NPD发布的数据显示,今年4-6月份发售的智能手机中,33%为Android手机,而RIM手机发售比例为28%,iPhone为22%。

d在其他领域的拓展

Android不仅促进了手机产业的发展,它的全面计算服务和丰富的功能支持,已将应用拓展到手机以外的其他领域。Android平台的通用性可以适用于不同的屏幕、有线和无线设备。Android系统和应用程序开发人员将更多的涉足多媒体、移动互联网设备、数字视频和家庭娱乐设备、汽车、医药、网络、监测仪器和工业管理、机顶盒等领域。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第二章Android开发环境的搭建及技术支持

本章主要介绍了一些关于Android开发所必要的先前准备与一些必备知识,如何的去搭建开发环境,选择Java高级语言编写,以及开发所需要的技术支持。

2.1Android开发环境的搭建

1.安装Eclipse

/?file=/technology/epp/downloads/release/helios/SR2/。下载“Eclipse IDE for Java Developers (92MB)”,得到,解压到某目录下,如D:eclipse,运行其下的“eclipse。exe”,初次运行要设置一下存放程序的目录,如D:eclipse_workplace。

2.安装Android SDK

到Android主页下载android SDK,将其解压到某目录下,如D:android-sdk-windows,然后设置黄精变量,右击“我的电脑”|“属性”|“高级”“|环境变量”,在系统变量的path变量前加上D:android-sdk-windostools;新版的SDK还需要手动下载Platform,运行D:android-sdk-windows下SDK ,如果它提示https不可用,则将settings里的“Force ...sources to be fetched using ...”这一项悬赏,然后选择左边“Avaliable Packages”,再选择一个SDK Platform,如“SDK

Platform Android 2.2,API 8,revision 1”,安装。如图2.1Virtual Device:

图2.1 Virtual Device

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

3.创建AVD(Android Virtual Device)

AVD是PC种的虚拟Android手机设备,新版SDK需手动添加AVD,进入SDK目录,如D:android-sdk-windows,运行SDK ,点击左边栏“Virtual Devices”,右边点“New”,弹出创建对话框,给这个SVD随便取个Name,比如手机型号HERO,然后设置Target为某个Android版本,SD Card为虚拟的SVD的SD卡容量,再设置分辨率,如320*480,然后在Hardware添加这台AVD需要的特殊设备,如键盘KeyBoard等,最后点下面“Create AVD”完成。如图2.2Settings:

图2.2 Settings

4.安装ADT(Android Development Tools)

不同Eclipse版本对此设置可能不同,运行Eclipse|"Help"|"Install New Software",在Work with处填入"/Android/eclipse/",然后下面会出现“Android

DDSM”和“Android Development Tools”,选择者两项,然后next,最后accept,完成。接着就等它自动下载安装,这过程很久,如果出现什么是否继续安装对话框,点继续,安装完成后重启Eclipse。

5.在eclipse中配置Android SDK Location参数

运行Eclipse,菜单栏“Window”|“Preference”,左边栏点击“Android”邮编SDK

Location 跳上上面第2步SDK位置,如D:android-sdk-windows,点Apply,选择一个Platform,完成。如图2.3Run Configurations:

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

如图2.3 Run Configurations

6.设置Eclipse中AVD

运行Eclipse,菜单栏“Run”|“Run Configurations”,选择Android Application,选择一个configuration,右侧选择“Target”,再选择一个AVD即可。如图2.4:Android版本。

图2.4 Android版本

7.运行

运行Eclipse,菜单栏“File”“|File”|“Project”,选择“Android”“|Android Project”,如果建立此项目后Eclipse没有列出次项目,这是因为没有设置其显示,在菜单栏相信自己,相信你我 XXX大学毕业设计与论文 相关资料

“Window”|“Show View”里选择如Package Explorer等。

然后左侧的Package Explorer里右键刚刚建立的项目TestDemo,选择最后一个“Properties”,再选择“Run/Debug Settings”,在右侧“New”添加“Android JUnit Test”,在弹出的设置里,选择标签“Target”,再选择一个AVD,完成。

最后,左侧的Package Explorer里右键点击项目TestDemo,选择“Run As”“|Android

Application”,看到一台虚拟的Android手机启动就成功啦。

2.2Android系统架构

Android系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

2.2.1应用程序

Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

2.2.2应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

隐藏在每个应用后面的是一系列的服务和系统, 其中包括:

1.丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。

2.内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据

3.资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

4.通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

5.活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

有关更多的细节和怎样从头写一个应用程序,请参考 如何编写一个 Android 应用程序.。

2.2.3系统运行库

1.程序库

Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:

1)系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。

2)媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG,

PNG 。

3)Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。

4)LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

5)SGL - 底层的2D图形引擎

6)3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。

7)FreeType -位图(bitmap)和矢量(vector)字体显示。

8)SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

d 运行库

Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟相信自己,相信你我 XXX大学毕业设计与论文 相关资料

机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 “dx” 工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

2.2.4 Linux内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,

网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。

2.3Android开发的技术支持

2.3.1Java高级开发语言

Java是一种简单的、面向对象的、分布式的、解释的、健壮的安全的、结构的中立的、可移植的,性能很优异的多线程的动态的语言。

Java开发的开发环境有不同的版本,如sun公司的Java Developers Kit, 简称JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java 开发环境,简称 VJ++。

Java的特点:

1.平台无关性

平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。

2.安全性

Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问呢。

3.面向对象

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

Java吸收了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。

4.分布式

Java建立在扩展TCP/IP网络平台上。库函数提供了HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件盒使用本机文件一样容易。

5.健壮性

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第三章 系统分析

本章主要介绍Android通讯录开发的可行性依据,以及Android通讯录相关的功能需求介绍。

3.1系统可行性分析

3.1.1技术可行性

Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,通过Eclipse3.6+Android SDK 集成环境,以Java高级语言进行编译,通过Android模拟器就可以完成通讯录的实现,因此技术上可行。

3.1.2经济可行性

开发所需的相关资料可以通过已存在的相关系统进行调查采集,所需的软件系统、硬件平台等都易于获得,且不需要Android平台机器,用模拟器即可实现开发研究,开发成本低,容易实现,从经济角度上看可行。

3.1.3操作可行性

Android通讯录既可以在Android手机上实现,也可以在模拟器上实现,实现方便,系统是利用自己的计算机,使用Android模拟器,并在本地上安装JDK、Android跟Eclipse作为软件的开发平台,使开发出来的系统有很方便地用户界面、操作起来就像使用手机一样,操作简单,因此在操作上是可行的。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

3.2需求分析

3.2.1系统功能分析

1.新用户的添加功能

对于新的联系人,手机用户可以添加新联系人的头像、姓名、手机号码、家庭号码、办公室号码、职务名称、单位名称、地址、邮政编码、Email其他联系方式,备注这些信息。

2.查找联系人

可以输入联系人名字或者手机来查找联系人的信息,使用模糊查找,并不需要写全名或是完整的电话号码,系统会自动匹配联系人信息与所查信息,方便用户快速找到联系人,查询结果显示在联系人浏览界面中。

3.删除联系人

在联系人浏览界面,左键选中所要删除的联系人,然后点击删除按钮,该联系人则被删除,另外还可一在菜单按钮中选择删除所有按钮,一次性清空联系人列表。

4.修改联系人

进入查看联系人界面,点击修改按钮,进入编辑状态,则可以重新编辑联系人信息。修改过后点击保存修改,则修改完成。

5.打电话、发短信

在查看联系人界面中,点击MENU菜单,会跳出打电话,发短信,发邮件的选择菜单,如果该联系人有多个联系方式,那么在给该联系人打电话的时候会出现一个选择电话号码的界面,选择要联系的电话号码,就会跳出电话连接的状态。发短信会跳出一个EditView视图制作的输入框,输入所要发送的信息内容,点击Send发送。

6.联系人备份,还原

在菜单按钮中有备份数据这一按钮,可以将当前所有的联系人信息备份保存在SD卡中。当联系人信息不小心被删除后,可以通过另一按钮还原数据来还原联系人,给用户带来方便。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第四章 总体设计

本章主要涵盖了系统的功能结构图以及SQLite数据库设计。

4.1功能结构图

Android手机通讯管理软件主要功能包括:联系人添加、联系人查看、联系人编辑、联系人删除,联系人查找,打电话,发短信等如图4.1功能结构图所示。

修改信息

修改头像

移动分组

新建分组

删除分组

修改分组

打电话

发短信

分享

新增联系人

查找联系人

修改联系人

删除联系人

分组功能

基于Android系统的通讯录

其他功能

图4.1功能结构图

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

4.2 SqLite数据库设计

SQLite,是一款轻型的数据库。SQLite的主要设计目标是嵌入式软件,因而占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Rel、C#、PHP、Java等,并且SQLite的处理速度很快。Android程序可以使用SQLite来存储结构化的数据。

SQLite所支持的数据类型:

SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。

SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外, SQLite 在解析CREATE TABLE 语句时,会忽略

CREATE TABLE 语句中跟在字段名后面的数据类型信息。

Android通讯录主要的数据库表是user表:如表4-1 user表:

表4-1 user表

属性

_id

name

mobilephone

officephone

familyphone

address

othercontact

相信自己,相信你我

数据类型

integer

string

string

string

string

string

string

说明

联系人ID

姓名

手机号码

公司电话

家庭电话

地址

其他联系方式 XXX大学毕业设计与论文 相关资料

email

position

company

zipcode

remark

imageid

string

string

string

string

string

int

电子信箱

职位名称

公司名称

邮编

备注

头像ID

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

第五章 详细设计

本章主要介绍了Android通讯录的部分工作界面,以及对各个界面操作所产生的结果,并附出相关截图,从而了解此次设计。

5.1浏览联系人界面

进入手机通讯录管理软件后,看到的第一个界面是联系人列表界面。该列表时由RelativeLayout控件生成的,打开数据库(如果数据库不存在则创建数据库,并创建数据表contacts),查找数据库中所有的联系人,并把联系人name和mobilephone这两项填充到中TextView中。联系人浏览界面如图5.1浏览联系人界面:

图5.1联系人浏览界面

点击MENU按钮时,就会显示主菜单项,其中包括:新增、查找、删除、菜单,退出。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

点击新增菜单,会进入添加联系人界面,可以输入联系人相关信息,完成联系人添加功能;点击查找菜个查找框,输入联系人所要的联系人信息显人,点击删除按钮则可击菜单按钮,会跳出菜删除所有,备份数据,点击退出按钮则退出菜单所示:

图5.2 菜单

单,会在菜单栏上方跳出一姓名或者电话号码,可以将示出来;右键选中一条联系以将当前选中信息删除;点单界面,里面有显示所有,还原数据,更新以及后退;通讯录软件。主菜单如图5.25.2查看联系人界

相信自己,相信你我

面 XXX大学毕业设计与论文 相关资料

图5.3查看联系人界面

在联系人浏览界面点击某个联系人,则会跳转到该界面。该界面使用TextView把从数据库中调出的联系人的详细信息显示出来,这里面包括联系人姓名、手机号、地址等详细信息。在该Activity中添加了3项菜单,其中包括:修改联系人、删除联系人、返回列表。点击修改联系人,该联系人信息从不可编辑状态变为可编辑状态,待编辑好联系人信息,点击保存则保存修改后的信息。点击删除联系人则在确认删除选项后可以删除该联系人,并返回联按钮则返回联系人列表界面所示:

系人列表界面,点击返回界面。如图5.3查看联系人5.3查找联系人界在联系人列表菜单找,会跳出一个在查找框中输入要查找信息,就会查找到该联面如图5.4查找联系人

相信自己,相信你我

中的菜单选项中点击查EditView布局的查找框,的联系人的姓名或是电话系人信息,查找联系人界界面所示: XXX大学毕业设计与论文 相关资料

人界面

图5.4:查找联系5.4编辑修改联系编辑联系人界面使改联系人的详细信息。编辑状态,手机号和座能输入数字。修改完信发保存修改按钮点击该联系人的信息进行人界面

用EditView控件显示并修联系人的所有信息,处于可机号的EditView设定为只息后点击保存修改按钮,触监听事件,从而对数据库中更新,然后自动返回联系人列表界面。点击删除联系人按钮,则会从数据库中删除该联系人。点击返回按钮,会返回到联系人列表界面。编辑联系人界面如图5.5修改联系人界面所示:

图5.5修改联系人界面

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

5.5电话菜单界面

图5.6电话菜单

在查看联系人界面点击MENU按钮,会跳出图5.6电话菜单,分别是打电话,发短信,发邮件。点击打电话,发短信均会弹出可选的电话号码图5.7电话选择所示,选择一个电话号码会跳出相应的响应界面,打电话则跳出呼叫界面图5.8呼叫界面所示,发短信则跳出发送信息界面图5.9所示,发邮件会跳出一个Dialog图5.10提示所示。

图5.7电话选择 图5.8呼叫界面

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

图5.9短信界面 图5.10提示

第六章 代码实现与测试

6.1 Android UI布局部分实现

软件界面的实现是通过Android UI控件来实现的,它通过项目目录下的res下的layout来设置布局文件,布局文件采用XML文档来实现。相对于其他界面设置工具,Android UI控件有相对简单,便捷的布局方式。

Android通讯录最重要的布局界面就是联系人界面,其布局部分代码如下:

android:id="@+id/widget205"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp">

android:id="@+id/image_button"

android:layout_width="60px"

android:layout_height="60px"

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

android:src="@drawable/icon"

android:scaleType="centerCrop">

android:id="@+id/username"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:scrollbars="vertical"

android:hint="姓名"

android:gravity="top"

android:layout_gravity="center_vertical"/>

图Layout布局图

设置的是图像按钮,设置的是一个可输入的空白栏,UI控件布局的模式类似于用相框装照片,,就类似于相片,而就类似于相框的底板,一层一层的嵌套,就够成了UI控件布局。上面的布局要实现的布局如图6.1LinearLayout布局图所示:

实现不同的布局效果有各自不同的UI控件,实现文本显示的控件是TextView,实现空白栏输入的空间是EditView,按钮UI控件是Button,图像UI控件是Image等等。根据不同的界面布局需求选用不同的UI控件。

我们通过findViewById方法通过id值的不同来引入各项属性的信息,在实现方法类中重写onCreate方法,通过将方法与布局来取得联系。

protected void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView();

通过et_name = (EditText)findViewById(me);来获取username信息。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

有些布局没有设置id,原因是它们是静态的,设置为常量就可以了,通常需要改动,变动的布局才需要设置id,例如部分TextView就不需要设置id,而EditView一般都需要设置id值,并且设置的id名常常与它所代表的属性同名。

6.2头像按钮选择实现

布局界面都做好后,各种按钮还没有实质的作用,点击按钮不会起到任何反应,这时就要制作按钮点击事件的方法。如联系人头像选择的响应事件。

ImageButton imageButton;//头像按钮

View imageChooseView;//图像选择的视图

AlertDialog imageChooseDialog;//头像选择对话框

protected void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView()

btn_img=(ImageButton)this,findViewById(_img);

设置一个监听器,使用setOnClickListenner方法,当点击图片头像按钮时会跳出一个Dialog界面,里面有我们所需要的头像图面,头像图片一般都存储在res/drawable中。

下面为相应时间不分代码:

btn_lickListenner(new onclickListener(){

Public void onclick(View v){

initImageChooseDialog();//重定义了一个方法,用来选择照片

();}})

创建一个initImageChooseDialog()方法实现图片选择

public void initImageChooseDialog() {

if(imageChooseDialog == null) {

r builder = new r(this);

le("请选择图像")

.setView(imageChooseView).setPositiveButton("确定", new

kListener() {

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

public void

onClick(DialogInterface

dialog, int which) {

imageChanged = true;

previousImagePosition =

currentImagePosition;

geResource(images[currentImagePosition%]);

}

}

})

.setNegativeButton("取消", new kListener() {

});

imageChooseDialog = ();

public void onClick(DialogInterface dialog, int which) {

}

currentImagePosition = previousImagePosition;

}

实现效果如图6.2头像选择:

图6.2头像选择

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

6.3联系人浏览实现

首先重写onCreate方法,并与布局配置文件取得联系:

public void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView();

mainLinearLayout = (LinearLayout)findViewById(_ll);

然后要打开数据库,将已经保存在数据库中的联系人的信息都掉出来,并显示联系人头像,姓名及电话号码信息。

DBHelper helper = new DBHelper(this);//获得所有用户的list

tabase(); //打开数据库,就打开这一次,因为Helper中的SQLiteDatabase是静态的。

list = User(privacy);//拿到所有保密状态为privacy的用户的list

lv = (ListView)findViewById(_userlist); //创建ListView对象

if(() == 0) {

Drawable nodata_bg = getResources().getDrawable(_bg);

kgroundDrawable(nodata_bg);

setTitle("没有查到任何数据");

}

//将数据与adapter集合起来

adapter = new SimpleAdapter(this,

list,

em,

new String[]{"imageid","name","mobilephone"},

new

int[]{_image,_name,_mobilephone});

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

pter(adapter);//将整合好的adapter交给listview,显示给用户看

6.4修改联系人实现

进入联系人详细信息界面以后,联系人信息起初是不能修改的,实现这个功能的方法是setEditTextDisable(),通过将setEnabled(false)设置为不可修改状态:

private void setEditTextDisable() {

et_bled(false);

setColorToWhite();

}

上面的setColorToWhite()方法是为了区分可编辑状态和不可编辑状态做的区分,当联系人信息从不可编辑状态改为编辑状态时,背景颜色就会由黑色变为白色。此时会通过setEditTextAble()方法将联系人信息改为可编辑状态:

private void setEditTextAble() {

et_bled(true);

setColorToBlack();

}

setColorToBlack()方法与setColorToWhite()方法相对,是将联系人信息从可编辑状态改为不可编辑状态时,背景颜色就会由白色变为黑色。

修改联系人信息事件的响应是通过“修改”按钮以及“保存修改”按钮实现的。点击修改按钮,根据情况修改联系人信息以后,点击屏幕左下方的“保存修改”按钮,数据库就会自动更新该联系人的信息,并保存该联系人信息。这些响应事件都是在点击保存按钮时触发的响应事件,部分实现方法如下:

btn_lickListener(new OnClickListener(){

public void onClick(View arg0) {

if(!flag) {

btn_t("保存修改");

setEditTextAble();

flag = true;

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

} else {

}

//往数据库里面更新数据

setTitle("modify");

modify();

setEditTextDisable();

setColorToWhite();

btn_t("修改");

flag = false;

6.5 User对象控件赋值部分实现

首先通过loadUserData()以及findViewById方法获得EditText控件以及Button控件,然后再用setText方法为控件赋值。

//获得布局文件中的控件,并且根据传递过来user对象对控件进行赋值。

public void loadUserData() {

// 获得EditText控件

et_name = (EditText) findViewById(me);

// 获得Button控件

btn_save = (Button)findViewById();

// 为控件赋值

et_t(me);

6.6数据库更新实现

获得最新数据,创建DBHelper对象,更新数据库:

private void modify() {

me = et_t().toString();

e = et_t().toString();

if(imageChanged) {

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

}

d = images[currentImagePosition%];

DBHelper helper = new DBHelper(this);

//打开数据库

tabase();

(user);

isDataChanged = true;

}

private void delete() {

DBHelper helper = new DBHelper(this);

//打开数据库

tabase();

(user._id);

}

6.7页面跳转部分实现

响应单击事件,单点击某一个选项的时候,跳转到用户详细信息页面:

public void onItemClick(AdapterView arg0, View arg1, int arg2,

long arg3) {

HashMap item = (HashMap)mAtPosition(arg2);

int _id = nt(f(("_id")));

Intent intent = new Intent(,);

6.8添加打电话,发短息菜单功能

通过onCreateOptionsMenu(Menu menu)方法来为Menu添加“打电话”、“发短信”、“发邮件”三个菜单按钮。实现如下:

public boolean onCreateOptionsMenu(Menu menu) {

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

}

Menu(0, , 1, "打电话");

Menu(0, +1, 2, "发短信");

Menu(0, +2, 3, "发邮件");

//为每一个Item设置图标

MenuItem item = m(-1);

n();

MenuItem item1 = m();

n(_sms);

MenuItem item2 = m(+1);

n();

return teOptionsMenu(menu);

菜单按钮添加完成,就要为每一个MenuItem添加事件,通过onMenuItemSelecte()方法来实现:

public boolean onMenuItemSelected(int featureId, MenuItem item) {

switch(mId()){

case : {

//将状态设置为打电话

status = _CALL;

if(callData == null) {

}

if( == 0) {

//提示没有可用的号码

xt(this, "没有可用的号码!",

//加载可用的号码

loadAvailableCallData();

_LONG).show();

} else if( == 1) {

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

//如果之有一个可用的号码,这直接使用这个号码拨出

Intent intent =

new Intent(_CALL,("tel://" +

callData[0]));

}

case +1: {

status = _SENDTO;

if(callData == null) {

}

if( == 0) {

//提示没有可用的号码

xt(this, "没有可用的号码!",

loadAvailableCallData();

startActivity(intent);

} else {

}

break;

//如果有2个或者2个以上号码,弹出号码选择对话框

initNumChooseDialog();

_LONG).show();

} else if( == 1) {

//如果之后又一个可用的号码,这直接使用这个号码拨出

Intent intent = new

Intent(_SENDTO,("smsto://" + callData[0]));

startActivity(intent);

} else {

}

initNumChooseDialog();

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

}

break;

case +2: {

if(("")) {

xt(this, "没有可用的邮箱!",

_LONG).show();

}

}

return ItemSelected(featureId, item);

}

} else {

}

break;

Uri emailUri = ("mailto:" + );

Intent intent = new Intent(_SENDTO, emailUri);

startActivity(intent);

6.9输入合法度测试

新增联系人时,输入的信息姓名不能为空,如果是空则提示信息“姓名不许为空”。如图6.3姓名合法测试:

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

图6.3姓名合法测试

6.10备份还原测试

点击备份按钮会跳如图6.4确认备份:

图6.4确认备份

出Dialog,判断是否备份,备份成功提示

相信自己,相信你我

如图6.5备份提示: XXX大学毕业设计与论文 相关资料

图6.5备份提示

还原数据测试,输入本文文件名则完成还原,还原文件框如图6.6还原数据:

图6.6还原数据

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

结束语

起初在选题的时候,对于Android的认识,我只是了解状态,担心不能很好的完成这次毕业设计,因此,我去图书馆借来了Android开发的书籍,从最初的HelloWorld水平,慢慢的开始充实自己的知识,做了贷款本息还款计算器,通过一些有意思的小方法,还实现了文字的随机变色等功能。经过一番的努力,我找到了自信:Android开发一般分为2大部分,一部分是layout,另一部分就是实现方法的类,抓住这个规律,再次做起东西就非常方便了。

在开发中遇到了很多困难,起初学习的时候,看到那些代码就头疼的要命,心想Android这么复杂,能不能学会呢;下载了很多相关的视频教学,很多专业用词都听不懂,只能通过书籍来弥补基础知识上的不足。在这期间我总结出了一条很重要的经验:那就是只有不断的动手去做,动手去练习,才有可能将知识弄懂弄透,单单的一味看书而不去练习,很快就会忘记的。在编程过程中,模拟器还有编译工具常常会出现一些小错误,例如:在用eclipse实现方法的时候,直接写程序实现某些方法的时候会出现卡死的问题,解决方法就是,创建一个新的文档文本,将代码在文本文档中写好,然后复制到eclipse中;在开始编译程序的时候,最好是先把Android模拟器先打开,在结束今天的编程工作之前最好一直开着模拟器,因为模拟器的加载时间很慢,这也是开发时候的一个小技巧。

这次对Android通讯录的开发对我自己是一个挑战,面对种种困难,在经过一番的努力过后,最终一步步的都解决了。完成了这次毕业设计,让我受益匪浅,相信它会对我以后的人生和工作起到很好的促进作用,有着积极的影响。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

致谢

首先要由衷地感谢荀亚玲老师,在论文的书写期间,荀老师就论文存在的问题和不足之处及时给与修改和指正,使我在较短的时间内顺利地完成。在我毕业设计期间,荀老师一丝不苟的工作态度和平易近人的处事方式给我留下了深刻的印象,尤其是荀老师那种勤奋务实的工作作风更使我受益匪浅。至此项目完成之际,向荀老师表示衷心的感谢和诚挚的敬意!

在此感谢我的同学们的热心帮助,正是因为你们的帮助,我才能克服一个个的困难。感谢院系老师对我的培育,让我学到了扎实的专业知识。感谢培育了我四年的大学。

另外,在这次毕业设计中,由于水平有限,加之时间短促,难免有不足之处,恳请各位老师批评指正。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

参考文献

[1] 盖索林,王世江. Android开发入门指南(第二版). 北京:人民邮电出版社,2009年11月.

[2] 杨丰盛. Android应用开发揭秘. 北京:机械工业出版社,2011年5月.

[3] 韩超,梁泉. Android系统原理及开发要点详解. 北京:电子工业出版社,2010年1月

[4] 公飞. Java核心技术. 北京:电子工业出版社,2011年7月

[5] 谭浩强. Java语言程序设计(第三版)[M]. 北京:清华大学出版社,2008.

[6] Haseman d Essentials[M].Apress: the Expert's Voice,2008.

[7] DiMarzia d:A Programmer's Guide[M].McGraw-Hill,2008.

[8] 高焕堂. Android应用框架原理与程序设计(第三版)[M]. 北京:清华大学出版社,2007.

[9] 公磊,周聪. 基于Android的移动终端应用程序开发与研究[J]. 计算机与现代化2008,(08).

[10] Grant Allen,Mike Owens. Android Development with SQLite. The Definitive Guide to

SQLite,2010.

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

附录I 中英文翻译

英文原文:

Android Application Fundamentals

Android applications are written in the Java programming language. The Android SDK tools compile

the code—along with any data and resource files—into an Android package, an archive file with

an .apk suffix. All the code in a single .apk file is considered to be one application and is the file that

Android-powered devices use to install the application.

Once installed on a device, each Android application lives in its own security sandbox:

● The Android operating system is a multi-user Linux system in which each application is a different

user.

● By default, the system assigns each application a unique Linux user ID (the ID is used only by the

system and is unknown to the application). The system sets permissions for all the files in an application so

that only the user ID assigned to that application can access them.

● Each process has its own virtual machine (VM), so an application's code runs in isolation from other

applications.

● By default, every application runs in its own Linux process. Android starts the process when any of

the application's components need to be executed, then shuts down the process when it's no longer needed

or when the system must recover memory for other applications.

In this way, the Android system implements the principle of least privilege. That is, each application,

by default, has access only to the components that it requires to do its work and no more. This creates a

very secure environment in which an application cannot access parts of the system for which it is not given

permission.

However, there are ways for an application to share data with other applications and for an application

to access system services:

● It's possible to arrange for two applications to share the same Linux user ID, in which case they are

able to access each other's files. To conserve system resources, applications with the same user ID can also

arrange to run in the same Linux process and share the same VM (the applications must also be signed with

the same certificate).

● An application can request permission to access device data such as the user's contacts, SMS

messages, the mountable storage (SD card), camera, Bluetooth, and more. All application permissions must

be granted by the user at install time.

That covers the basics regarding how an Android application exists within the system. The rest of this

document introduces you to:

● The core framework components that define your application.

● The manifest file in which you declare components and required device features for your

application.

● Resources that are separate from the application code and allow your application to gracefully

optimize its behavior for a variety of device configurations.

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

Activating Components

Three of the four component types—activities, services, and broadcast receivers—are activated by an

asynchronous message called an intent. Intents bind individual components to each other at runtime (you

can think of them as the messengers that request an action from other components), whether the component

belongs to your application or another.

An intent is created with an Intent object, which defines a message to activate either a specific

component or a specific type of component—an intent can be either explicit or implicit, respectively.

For activities and services, an intent defines the action to perform (for example, to "view" or "send"

something) and may specify the URI of the data to act on (among other things that the component being

started might need to know). For example, an intent might convey a request for an activity to show an

image or to open a web page. In some cases, you can start an activity to receive a result, in which case, the

activity also returns the result in an Intent (for example, you can issue an intent to let the user pick a

personal contact and have it returned to you—the return intent includes a URI pointing to the chosen

contact).

For broadcast receivers, the intent simply defines the announcement being broadcast (for example, a

broadcast to indicate the device battery is low includes only a known action string that indicates "battery is

low").

The other component type, content provider, is not activated by intents. Rather, it is activated when

targeted by a request from a content resolver handles all direct transactions with the

content provider so that the component that's performing transactions with the provider doesn't need to and

instead calls methods on the ContentResolver object. This leaves a layer of abstraction between the content

provider and the component requesting information (for security).

There are separate methods for activating each type of component:

● You can start an activity (or give it something new to do) by passing an Intent

to startActivity() or startActivityForResult()(when you want the activity to return a result).

● You can start a service (or give new instructions to an ongoing service) by passing an Intent

to startService().Or you can bind to the service by passing an Intent to bindService().

● You can initiate a broadcast by passing an Intent to methods like sendBroadcast(),

sendOrderedBroadcast(),or sendStickyBroadcast().

● You can perform a query to a content provider by calling query() on a ContentResolver.

For more information about using intents, see the Intents and Intent Filters document. More

information about activating specific components is also provided in the following

documents: Activities, Services,BroadcastReceiver and Content Providers.

Application Components

Application components are the essential building blocks of an Android application. Each component

is a different point through which the system can enter your application. Not all components are actual

entry points for the user and some depend on each other, but each one exists as its own entity and plays a

specific role—each one is a unique building block that helps define your application's overall behavior.

There are four different types of application components. Each type serves a distinct purpose and has a

distinct lifecycle that defines how the component is created and destroyed.

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

Here are the four types of application components:

Activities

An activity represents a single screen with a user interface. For example, an email application might

have one activity that shows a list of new emails, another activity to compose an email, and another activity

for reading emails. Although the activities work together to form a cohesive user experience in the email

application, each one is independent of the others. As such, a different application can start any one of these

activities (if the email application allows it). For example, a camera application can start the activity in the

email application that composes new mail, in order for the user to share a picture.

An activity is implemented as a subclass of Activity and you can learn more about it in the Activities

developer guide.

Services

A service is a component that runs in the background to perform long-running operations or to

perform work for remote processes. A service does not provide a user interface. For example, a service

might play music in the background while the user is in a different application, or it might fetch data over

the network without blocking user interaction with an activity. Another component, such as an activity, can

start the service and let it run or bind to it in order to interact with it.

A service is implemented as a subclass of Servers and you can learn more about it in the Servers

developer guide.

Content providers

A content provider manages a shared set of application data. You can store the data in the file system,

an SQLite database, on the web, or any other persistent storage location your application can access.

Through the content provider, other applications can query or even modify the data (if the content provider

allows it). For example, the Android system provides a content provider that manages the user's contact

information. As such, any application with the proper permissions can query part of the content provider

(such as ) to read and write information about a particular person.

Content providers are also useful for reading and writing data that is private to your application and

not shared. For example, the Note Pad sample application uses a content provider to save notes.

A content provider is implemented as a subclass of ContentProvider and must implement a standard

set of APIs that enable other applications to perform transactions. For more information, see the Content

Providers developer guide.

Broadcast receivers

A broadcast receiver is a component that responds to system-wide broadcast announcements. Many

broadcasts originate from the system—for example, a broadcast announcing that the screen has turned off,

the battery is low, or a picture was captured. Applications can also initiate broadcasts—for example, to let

other applications know that some data has been downloaded to the device and is available for them to use.

Although broadcast receivers don't display a user interface, they may create a status bar notification to alert

the user when a broadcast event occurs. More commonly, though, a broadcast receiver is just a "gateway"

to other components and is intended to do a very minimal amount of work. For instance, it might initiate a

service to perform some work based on the event.

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

A broadcast receiver is implemented as a subclass of BroadcastReceiver and each broadcast is

delivered as an Intent object. For more information, see the BroadcastReceiver class.

A unique aspect of the Android system design is that any application can start another application’s

component. For example, if you want the user to capture a photo with the device camera, there's probably

another application that does that and your application can use it, instead of developing an activity to

capture a photo yourself. You don't need to incorporate or even link to the code from the camera application.

Instead, you can simply start the activity in the camera application that captures a photo. When complete,

the photo is even returned to your application so you can use it. To the user, it seems as if the camera is

actually a part of your application.

When the system starts a component, it starts the process for that application (if it's not already

running) and instantiates the classes needed for the component. For example, if your application starts the

activity in the camera application that captures a photo, that activity runs in the process that belongs to the

camera application, not in your application's process. Therefore, unlike applications on most other systems,

Android applications don't have a single entry point (there's no main() function, for example).

Because the system runs each application in a separate process with file permissions that restrict

access to other applications, your application cannot directly activate a component from another application.

The Android system, however, can. So, to activate a component in another application, you must deliver a

message to the system that specifies your intent to start a particular component. The system then activates

the component for you.

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

中文翻译:

Android应用基础

Android应用程序是用java语言写的,通过apt工具把应用程序所需要的任何数据、

资源文件打包成apk文件,这个文件时一个将应用安装到手机上的一个载体。

● Android操作系统是一个多用户Linux系统中,每个应用程序是一个不同的用户。

● 默认的,每个应用在他自己的Linux进程中运行,当应用中的任何代码需要执行时,Android就启动相应的进程,当不需要执行时并且系统资源被其他应用请求时Android就关闭相应的进程。

● 每个进程都有他自己的虚拟机对象(VM),所以应用程序代码与其他的应用运行时彼此隔离的。

● 默认的,每个应用被分配一个唯一的Linux userID,都被设置权限以便应用程序的文件只对用户可见或者只对应用自己可见。

这样一来,Android系统实现了最小特权原则,也就是说,每个应用程序,默认情况下,只能访问的组件,它需要做的工作,没有更多,这将创建一个非常安全的环境,使应用程序无法访问的,这就是它没有给予许可制度的部分。

但是,有一个应用程序的方法与其他应用程序和应用程序访问系统服务的数据:

● 这有可能为两个应用程序安排共享相同的Linux用户ID,在这种情况下,它们能够相互访问的文件。为了节约使用相同的用户ID系统资源,应用程序还可以安排运行在相同的Linux进程和共享同一个VM(应用也必须使用相同的证书签名)。

● 应用程序可以请求访问权限,如用户的联系人,短信,可安装存储(SD卡),摄像头,蓝牙等设备的数据,所有应用程序的权限必须由用户在安装时授予。

这涵盖了基本就如何Android应用程序在系统中存在这个文件的其余部分向您介绍:

● 框架的核心组件定义应用程序。

● 清单文件中声明组件和应用程序所需的设备功能。

● 资源是从应用程序代码分开,并允许应用程序正常优化的设备配置各种其行为。

激活组件(Activating Components)

四大组件中的三个组件——activities、services和broadcast receiver——是由一种叫intent的异步消息来激活的。这些intents在运行时(runtime)将这些属于你的程序或不同程序的单独的组件绑定在一起(bind),你可以把这些intents看作是需要其他组件的action的messengers。

一个intent就是一个Intent对象,这个intent定义了一种可以激活(activate)某个特定组件或者某种特定类型的组件,这两种情况分别对应两种intent的定义方式或者显示的或者隐式的。

对于activities和services,一个intent定义了要执行的操作(action)(比如,要“view”或者“send”什么)和要操作的数据的URI。比如,一个intent可能会为一个activity传递一个请求来展示一张图片或者打开一个网页。有时,你可以启动一个activity来得到返回的结果,在这个例子中这个activity的返回的结果也是一个Intent(比如,你可以发送一个intent让用户选择一个personal contact并返回给你——这个返回的intent就包含了一个指向用户选择的联系人的URI)(关于activity和service的启动方式,。下面将介绍。)

对于广播接收者来说,intent只是简单的定义了要广播的内容(比如,一个用以表明相信自己,相信你我 XXX大学毕业设计与论文 相关资料

电池电量很低的广播仅包含了一个表明电池电量很低的字符串)。

最后一种组件类型content provider并不是由intent来激活的(activate)。而是由接收到ContentResolver的请求时激活的。

它们都各自有自己的方法来激活相应的组件:

● 你可以通过传递一个Intent给startActivity()或startActivityForResult()启动一个activity(或者给他一些新的要做的内容)。使用startActivityForResult()你将得到一个返回结果。

● 你可以通过传递一个Intent给startService()来start一个service(或者给一个正在运行的service一些新的指令(instructions))。或者你可以通过把一个Intent传递给bindService()来绑定一个service。

● 你可以通过传递一个Intent给诸如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()等方法来初始化一个广播。

● 你可以通过调用ContentResolver的query()方法来执行一次content provider的查询操作。

更多的关于intent的内容,可以参看文档中的Intents and Intent Filters。更多的关于激活特定组件的内容可以参看文档中的:Activities、Services、BroadcastReceiver、Content Providers。

应用程序组件(Application Components)

Android的核心功能之一就是一个应用程序可以使用其它应用程序的元素(如果那个应用程序允许的话)。比如说,如果你的应用程序需要一个图片卷动列 表,而另一个应用程序已经开发了一个合用的而又允许别人使用的话,你可以直接调用那个卷动列表来完成工作,而不用自己再开发一个。你的应用程序并没有吸纳 或链接其它应用程序的代码,它只是在有需求的时候启动了其它应用程序的那个功能部分。

为达到这个目的,系统必须在一个应用程序的一部分被需要时启动这个应用程序,并将那个部分的Java对象实例化。与在其它系统上的应用程序不同,Android应用程序没有为应用准备一个单独的程序入口(比如说,没有main()方法), 而是为系统依照需求实例化提供了基本的组件。共有四种组件类型:

活动(Activities)

一个 activity 代表用户界面的一个独立屏幕。例如,一个邮件应用程序应该有一个

activity 用于显示新邮件列表,另一个activity 用于撰写一封邮件,还有一个activity 用于读取邮件。尽管所有 activitie 协同工作以构成邮件应用程序的用户体验,但彼此之间相对独立。应次,不同的应用程序能够从任何一个 activity 启动 (只要邮件应用程序允许)。例如,用户需要分享一张照片,一个拍照应用程序能够启动邮件应用程序的

activity 。

activity 是一个实现了 Activity 的子类,你可以在 Activities 开发者指导部分了解更多。

服务(Services)

service 是在后台运行,执行长时间操作或者执行远程操作。 service 不提供用户界面。例如,当用户在另一个应用程序时,一个 service 可在后台播放音乐,或者是从网相信自己,相信你我 XXX大学毕业设计与论文 相关资料

络上获取数据,而不阻断用户与当前 activity 的交互。其他组件,比如一个 activity ,为了与该 service 互动,可以启动或者 绑定它。

service 是一个实现了 Service 的子类,你可以在 Services 开发者指导部分了解更多。

广播接收器(Broadcast receivers)

广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。

应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。

广播接收器没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

内容提供者(Content providers)

内容提供者将一些特定的应用程序数据供给其它应用程序使用。数据可以存储于文件系统、SQLite数据库或其它方式。内容提供者继承于ContentProvider 基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver 对象,调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。

参阅独立的内容提供者Content Providers 章节获得更多关于使用内容提供者的内容。

每当出现一个需要被特定组件处理的请求时,Android会确保那个组件的应用程序进程处于运行状态,或在必要的时候启动它。并确保那个相应组件的实例的存在,必要时会创建那个实例。

Android系统设计的一个独特方面是任何的一个程序都可以启动另一程序的组件。比如,你想让你的程序可以使用照相机拍照,如果已经有了实现这种功能的程序并且你你的程序能使用它(有权限),那么你就没有再要再写一个新的Activity来实现这个功能。你的程序不需要包含或者链接这个拍照程序。相反,你只需要在你的程序中打开这个拍照程序中的实现拍照功能的Activity。当拍完之后,拍好的照片甚至会自动返回给你的程序。者对于用户来说,就好像是想拍照功能的程序就是你的这个程序的一部分一样。

当系统启动一个组件之后,如果这个组件所在的程序之前没有运行的话,系统会自动开始这个程序的进程,并初始化这个组件所需要的相关类。比如,你的程序开启了一个拍照功能程序的Activity,这时系统会启动这个Activity所在的程序,所以这个Activity运行在拍照功能的程序当中,而不是在你的程序中。所以,不像其他操作系统的中的程序一样,Android程序没有一个单独的入口点(比如没有我们常见的main()函数)。

因为系统中的程序运行在自己的独立进程中,并且程序中的文件都有自己的限制其他程序访问的权限,所以,程序不能直接激活其他程序中的组件。但是Android系统就可以。具体是这样的实现的,为了激活(activate)其他程序中的组件,你必须向系统发送一个消息来详细说明你要启动其他组件的意图,这样系统才会为你激活这个组件。

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

附录II 程序主要代码

package t;

import ty;

import ialog;

import t;

import Interface;

import ;

import ;

import Inflater;

import ;

import oup;

import kListener;

import ionUtils;

import rView;

import apter;

import ;

import xt;

import y;

import utton;

import witcher;

import iew;

import ;

import SelectedListener;

import ype;

import ctory;

import er;

import ;

public class AddNew extends Activity implements ViewFactory {

EditText et_name;

EditText et_mobilePhone;

EditText et_officePhone;

EditText et_familyPhone;

EditText et_position;

EditText et_company;

EditText et_address;

EditText et_zipCode;

EditText et_otherContact;

相信自己,相信你我 XXX大学毕业设计与论文 相关资料

EditText et_email;

EditText et_remark;

Button btn_save;

Button btn_return;

int privacy;//用于判断添加的用户是不是保密的

ImageButton imageButton;//头像按钮

View imageChooseView;//图像选择的视图

AlertDialog imageChooseDialog;//头像选择对话框

Gallery gallery;//头像的Gallery

ImageSwitcher is;//头像的ImageSwitcher

int currentImagePosition;//用于记录当前选中图像在图像数组中的位置

int previousImagePosition;//用于记录上一次图片的位置

boolean imageChanged;//判断头像有没有变化

/**

* 所有的图像图片

*/

private int[] images

= new int[]{

,1,2,3

,4,5,6

,7,8,9

,10,11,12

,13,14,15

,16,17,18

,19,20,21

,22,23,24

,25,26,27

,28,29,30};

@Override

protected void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView();

Intent intent = getIntent();

//先确定好保密类型

if(ras()!=null && ras().getInt("privacy") == 1) {

privacy = 1;

} else {

privacy = 0;

}

相信自己,相信你我

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687840144a49836.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信