基于Android的短息备份毕业设计.docx

上传人:b****7 文档编号:9251675 上传时间:2023-02-03 格式:DOCX 页数:33 大小:817.74KB
下载 相关 举报
基于Android的短息备份毕业设计.docx_第1页
第1页 / 共33页
基于Android的短息备份毕业设计.docx_第2页
第2页 / 共33页
基于Android的短息备份毕业设计.docx_第3页
第3页 / 共33页
基于Android的短息备份毕业设计.docx_第4页
第4页 / 共33页
基于Android的短息备份毕业设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

基于Android的短息备份毕业设计.docx

《基于Android的短息备份毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Android的短息备份毕业设计.docx(33页珍藏版)》请在冰豆网上搜索。

基于Android的短息备份毕业设计.docx

基于Android的短息备份毕业设计

基于Android的短息备份毕业设计

第一章绪论

1.1概述

Android是一个开放、自由的移动终端平台。

Android平台由操作系统、中间件、用户界面、应用软件组成。

开发人员在该平台开发的应用程序,是使用Java语言编写的在Dalvik虚拟机上运行的。

Android的底层以开放性的Linuxkernel为其架构。

也可以理解为Android是Google推出的智能手机操作系统和相关软件的总称。

因此,它和一般在说Symbian、WindowsMobile是相同概念的。

Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成,研发队伍阵容相当强大

而Android平台,Google集合30多家包括高通,摩托罗拉,三星,HTC等来自诸多领域的领先技术和无线公司组成"开放手机联盟"(OHA),共同努力开发Android平台。

全球四大手机制造商中,已经有三家为Android提供硬件技术支持。

在国内,中国移动已经加入OHA,并有机会成为第一家在中国运营Android手机的公司。

联通也在今年的5月17日宣布加入OHA。

中国的许多软件公司已经将目光投向了Android。

首款基于Android平台的智能手机在2008年下半年推出。

另外华为也已证实正在研发基于Android平台的手机,目前已经制成样机。

在目前,由于Android平台刚发布半年,系统还有许多需要充实的地方;但相信在未来几年中,GoogleAndroid将对移动产业带来较大的影响,Android会变得更加的强壮和易用。

1.2研究的目的及意义

1992年,世界上第一条短信在英国沃达丰的网络上通过电脑向手机发送成功,从而宣布手机短信诞生。

至于中国的第一条短信诞生于何时何地已无从知晓,但据考证,中国的移动通信网络早在1994年就具备了短信功能,只是那时有手机的人根本不需要它罢了。

随着手机的日益普及,从1998年开始,移动、联通先后大范围拓展短信业务:

2000年,中国手机短信息量突破10亿条;2001

年,达到189亿条;2004年,其飞涨到900亿条。

于是短信理所应当地成为了第五种传播工具;于是从1998年至今,管你愿意与否,短信已逐渐走入我们的生活,成为生活的一部分,我们的生活也因短信而改变着。

短信作为手机上的一种业务,让本来具有语言传递功能的手机变成了电报式的解读工具,让耳朵闲置,让文字彰显更大的作用;短信作为用文字传递信息和沟通的一种方式,让拇指灵敏发达起来,让嘴巴休息,现代电信的业务具有了技术和文化的双重色彩。

尽管移动市场发展飞速,不过短信仍然是其最重要的一项附加价值服务。

据此前IDC公司统计,文字短信仍是亚太地区手机用户普及率最高的一项移动服务,即使在短信的发展中市场,例如西欧短信服务的使用率也达到了90%。

而随着科技的日益发展,信息时代的到来,在人们使用手机的信息交流中,已渐渐离不开了短信,短信的重要性就越来越突出了。

且在这个商品经济社会中人们常常会遇到一些重要的短信需要保留,所以短信备份就成为了一个重要的问题。

Android是开放手机联盟开发的第一个完整、开放、免费的手机平台。

自发布来得到了广泛关注和迅猛发展。

而基于Android的短信备份,可以实现手机端、PC端两个平台的资源交互共享,可与PC、手机进行信息导入导出,安全性显著提高,且您能将短信通过电子邮件直接群发给朋友、客户,便捷迅速。

如此一来,要是手机出现什么意外,你也不用担心重要短信会丢失了。

1.3本文主要研究的内容

本次毕业设计主要内容有:

了解Android系统的短信存储机制和Java语言解析XML文件知识,熟悉Java编程和Eclipse开发环境及其配置环境。

通过Android的数据提供机制读取手机上的短信,并根据用户的选择将短信备份到文件,邮件甚至备份到在线文档中,同时要求提供主题备份及过滤备份(指定备份与指定人间的短信)的功能和定时备份功能。

在此过程中掌握Android系统的开发方法与流程,了解Android系统的结构,提高学生的编程能力和设计动手能力,提高实践水平。

第二章Android架构

本章所要介绍的Android架构内容包括:

Android平台的架构,Android的内核分析,Android应用的构成与工作机制,Android中的Intent以及Eclipse。

以下就是对其相关内容的描述

2.1Android平台的架构

Android平台自底向上由以下四个层次组成:

Linux内核层、Android运行时库和其他库层、应用框架层、应用程序层。

如图1所示图1

应用层程序

应用程序框架

其他库

视频图像视频播放

浏览器数据库

运行时

核心库

Dalvik虚拟机

Linux内核层

Android平台的结构

(1)Linux内核层:

Android基于Linux核来开发的,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。

该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。

作为一个虚拟的中间层,该层位于硬件与其它的软件层之间。

需要注意的是,这个内核操作系统并非类GNU/Linux的,所以其系统库、系统初始化和编程接口都和标准的Linux系统有所不同的。

它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。

YAFFS(YetAnotherFlashFileSystem)文件系统是一个开源的,专门为NANDFlash设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在Linux,uCLinux,和WindowsCE上运行。

YAFFS目前有YAFFS和YAFFS2两个版本,一般说来,YAFFS小页面(528字节/页)有很好的支持,而更大的页面(2K+64字节/页)就需要YAFFS2为新一代智能手机平台,Android需要支持超大容量的NANDFlash,所以采用支持大页面的YAFFS2文件系统。

(2)Android运行时库和其他库层:

Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和Dalvik虚拟机。

同时Android提供了丰富的库类支持且大部分为开源代码,如采用的数据库为SQLite。

Android选择它作为移动终端的嵌入式数据库有以下优点,它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2KB,提供了对事务功能和并发处理的支持,而且比目前流行的大多数数据库运行速度快。

(3)应用框架层:

在应用框架层Android开发人员可以跟那些核心应用一样拥有访问框架API的全部权限。

应用的系结构化设计简化了各组件之间的重用,任何应用都可以分发自己的组件,任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。

(4)应用程序层:

Android本身会附带一些核心的应用程序,包括e—mail客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由Java语言开发的。

2.2Android的内核分析

(1)内核在操作系统中的地位

Android基于Linux操作系统,由硬件、系统内核、系统服务和应用程序等四大部分组成。

其中,内核Kernel是最核心的部分,其主要作用在于与计算机硬件进行交互,实现对硬件的编程控制和接口操作,调度访问硬件资源,同时向应用程序提供一个高级的执行环境和对硬件的虚拟接口。

主要功能包括:

中断服务程序、进程调度程序、进程地址空间的内存管理、进程间通信

内核与普通应用程序不同,其拥有所有硬件设备的访问权限以及启动时即划分的受保护的内存空间同。

(2)Android内核

和标准的Linux内核一样,Android内核主要实现内存管理、进程调度、进程间通信等功能。

Android内核是在标准Linux内核的基础上修改而成。

为了适应嵌入式硬件环境和移动应用程序的开发。

Android对Linux内核进行了一定的修改。

Android内核源码树根目录结构如表1所示。

 

描述

arch

特定体系结构的源码

crypto

CryptoAPI

documentation

内核源码文档

divers

设备驱动程序

fs

VFS和各种文件系统

include

内核头文件

init

内核引导和初始化

ipc

进程间通信代码

kernel

核心子系统

lib

通用内核函数

mm

内存管理模块

net

网络模块

scripts

编译内核所用的脚本

security

安全模块

sound

声音模块

user

早期用户空间代码

表2-2-1内核源码树目录结构

Android内核与标准Linux内核在文件系统、进程间通信机制、内存管理、电源管理、驱动和其他方面存在不同。

1文件系统

不同于桌面系统与服务器,移动设备大多采用的不是硬盘而是采用Flash作为存储介质,因此,Android内核中增加了标准Linux内核中没有采纳的YAFFs2文件系统。

YAFFS2(YetAnotherflashFileSy-stem,2ndedition)是专用于flash的文件系统,对NAND,F1ash芯片有着良好的支持。

YAFFs2是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。

YAFFS2按层次结构设计,分为文件管理接口、内部实现层和NAND,简化了其本身与系统的接口设计能更方便地集成到系统当中。

经过测试证明YAFFs2性能比支持NOR型闪存的JFFS2文件系统优秀。

2程问通信机制

Android增加了一种进程间的通信机制IPCBinder在内核源代码中,驱动程序文件为coredroid/include/linux/binder.h和coredroid/drivers/android/binder.c。

Binder通过守护进程ServiceManager管理系统中的服务,负责进程问的数据交换。

各进程通过Binder访问同一块共享内存,以达到数据通信的机制。

从应用层的角度看.进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互.方便了程序员开发需要交互数据的应用程序。

3存管理

在内存管理模块,Android内核采用了一种不用于标准Linux内核的低内存管理策略。

在标准Linux内核当中,使用一种叫做00M(0utofMemorv)的低内存管理策略:

当内存不足时,系统检查所有的进程,并对进程进行限制评分.获得最高分的进程将被关闭(内核进程除外)。

Android系统采用的则是一种叫作LMK(LowMemoryKiller)的机制,这种机制将进程按照重要性进行分级、分组。

内存不足时,将处于最低级别组的进程关闭。

例如.在移动设备当中。

UI界面处于最高级别。

所以该进程永远不会被中止,这样,在终端用户看来,系统是稳定运行的。

在Android内核源码中,LMK的位置是coredroid/drivers/misc/lowmemorykiller.c。

与此同时,Android新增加了一种内存共享的处理方式Ashmem(AnonvmousSharedMemory,匿名共享内存)。

通过Ashmem,进程间可以匿名自由共享具名的内存块。

这种共享方式在标准Linux当中不被支持。

Ashmem分配和使用情况如下:

fd=ashhmem_create_region(“my-shm—region”,size);

if(fd<0)

return–l;

data=mmap(NUULL,size,PROT_READ︱PROT_WRITE,MAP_SHARED,fd,0);

if(data==MAP_FAILED)

gotoout;

但出于安全原因,其他进程无法访问此名称(my_shm—region)区域。

文件描述符指向该共享内存区域,实际上是通过IPC绑定接口。

在Android内核源码中,Ashmem的位置是coredroid/mm/ashmem.c。

4源管理

由于Android主要用于移动设备,电源管理就显得尤为重要,因此,在Android内核当中。

增加了一种新的电源管理策略。

目前,Android采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。

有三种途径判断调整电源管理策略:

RPC调用、电池状态改变和电源设置。

它通过广播Intent或直接调用API的方式来与其他模块进行联系。

电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。

Android的电源管理模块还会根据用户行为,自动调整屏幕亮度。

5驱动及其它

相对于标准内核,Android内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC设备、USBDevice设备等相关设备驱动。

增加了日志(Logger)系统,使应用程序可以访问日志消息。

2.3Android应用的构成与工作机制

一个Android应用程序是由四种构造块组织而成的,这四种构造块分别是:

ØActivity

ØIntentReceiver

ØService

ØContentProvider

并不是每一个Android应用程序都需要这四种构造块,这不是必须的,某些时候,只需要这四种中的几种就可以组合成应用程序。

除此以外,还需要在AndroidMainfest.xml中登记这些构造块的清单。

这是一个XML配置文件,这个配置文件用于定义应用程序的组件、组件的功能及必要条件等

这个配置文件是每个Android应用必需的。

而以下为其构成与工作流程。

图2-3-1Android的构成与工作流程

以下,对四种构造块做一些说明:

ØActivity

Activity是Android构造块中最基本的一种,在应用中,一个activity通常就是一个单独的屏幕。

每一个activity都被实现为一个独立的类,并且继承于Activity这个基类。

这个activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应。

大部份的应用都会包含多个的屏幕。

例如,一个通信应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写信息,同时还会有用于浏览信息及进行系统设置的屏幕。

每一个这样的屏幕,就是一个activity。

从一个屏幕可以方便的导航到另一个屏幕。

在一些应用中,一个屏幕甚至会返回值给前一个屏幕。

当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。

用户可以返回到历史堆栈中的前一个屏幕。

当屏幕不再使用时,还可以从历史堆栈中删除。

默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。

Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动。

Intent类用于描述一个应用将会做什么事。

在Intent的描述结构中,有两个最重要的部分:

动作和动作对应的数据。

典型的动作类型有:

MAIN(activity的门户)、VIEW、PICK、EDIT等。

而动作对应的数据则以URI的形式进行表示。

例如:

要查看一个人的联系方式,就需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI。

与之有关系的一个类叫IntentFilter。

相对于intent是一个有效的做某事的请求,一个intentfilter则用于描述一个activity(或者IntentReceiver)能够操作哪些intent。

一个activity如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI。

IntentFilter需要在AndroidMainfest.xml中定义。

通过解析各种intent,完成从一个屏幕导航到另一个屏幕。

当向前导航时,activity将会调用startActivity(IntentmyIntent)方法。

然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的activity。

新的activity接收到myIntent的通知后,开始运行。

当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:

A、Activities可重复利用从其它组件中以Intent的形式产生的一个请求。

B、Activities可以在任何时候被一个具有相同IntentFilter的新的Activity取代。

ØIntentReceiver

当需要对一个外部事件(如当电话呼入,或者数据网络可用)做出响应时,可以使用一个IntentReceiver。

IntentReceiver在外部事件发生时,会使用NotificationManager通知用户,但它并不能生成一个UI。

IntentReceiver在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册。

当一个intentreceiver被触发时,系统会在需要的时候对应的程序。

各种应用还可以通过使用Context.broadcastIntent()将它们的intentreceiver广播给其它应用程序。

ØService

一个Service是一段长生命周期的,没有用户界面的程序。

例如,一个正在从播放列表中播放歌曲的媒体播放器。

在一个媒体播放器的应用中,应该会有多个activity,让用户可以选择歌曲并播放歌曲。

然而,音乐重放这个功能并没有对应的activity,因为用户会认为在导航到其它屏幕时音乐应该还在播放的。

在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。

同时,系统也将保持这个service一直执行,直到这个service运行结束。

另外,还可以通过使用Context.bindService()方法,连接到一个service上(如果这个service还没有运行将启动它)。

当连接到一个service之后,使用service提供的接口与它进行通讯。

拿媒体播放器这个例子来说,还可以进行暂停、重播等操作。

ØContentProvider

应用程序能够将它们的数据保存到文件中、SQL数据库中,甚至是任何有效的设备中。

当需要将应用数据与其它的应用共享时,使用ContentProvider来完成。

一个ContentProvider类实现了一组标准的方法,从而能够让其它的应用保存或读取此ContentProvider处理的各种数据类型。

2.4Android中的Intent

在一个Android应用中,主要是由四种组件组成的,这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。

在这些组件之间的通讯中,主要是由Intent协助完成的。

Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦

2.4.1抽象描述的内容

在Android参考文档中,对Intent的定义是执行某操作的一个抽象描述。

首先,是要执行的动作(action)的一个简要描述。

其次,是执行动作要操作的数据(data),Android中采用指向数据的一个URI来表示。

另外,除了action和data这两个重要属性外,还有一些附加属性:

category(类别),被执行动作的附加信息。

type(数据类型),显式指定Intent的数据类型(MIME)。

一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

component(组件),指定Intent的的目标组件的类名称。

通常Android会根据Intent中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。

但是,如果component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。

指定了这个属性以后,Intent的其它所有属性都是可选的。

extras(附加信息),是其它所有附加信息的集合。

使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

总之,action、data/type、category和extras一起形成了一种语言。

这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。

随着应用不断的加入到系统中,它们可以添加新的action、data/type、category来扩展这种语言。

应用也可以提供自己的Activity来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。

2.4.2Android解析Intent的过程

在应用中,我们可以以两种形式来使用Intent:

A、直接Intent:

指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context,Class)来指定)。

通过指定具体的组件类,通知应用启动对应的组件。

B、间接Intent:

没有指定comonent属性的Intent。

这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。

对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。

在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:

●如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;

●如果Intent没有提供type,系统将从data中得到数据类型。

和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。

●如果Intent中的数据不是content:

类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme(比如http:

或者mailto:

)进行匹配。

同上,Intent的scheme必须出现在目标组件的scheme列表中。

●如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。

比如Intent中包含了两个类别:

LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

2.5E

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1