




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言基于Android的短息备份毕业设计第一章 绪论1.1概述Android是一个开放、自由的移动终端平台。Android平台由操作系统、中间件、用户界面、应用软件组成。开发人员在该平台开发的应用程序,是使用Java语言编写的在Dalvik虚拟机上运行的。Android的底层以开放性的Linux kernel为其架构。也可以理解为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平台刚发布半年,系统还有许多需要充实的地方;但相信在未来几年中,Google Android将对移动产业带来较大的影响,Android会变得更加的强壮和易用。1.2研究的目的及意义 1992年,世界上第一条短信在英国沃达丰的网络上通过电脑向手机发送成功,从而宣布手机短信诞生。至于中国的第一条短信诞生于何时何地已无从知晓,但据考证,中国的移动通信网络早在1994年就具备了短信功能,只是那时有手机的人根本不需要它罢了。随着手机的日益普及,从1998年开始,移动、联通先后大范围拓展短信业务:2000年,中国手机短信息量突破10亿条;2001第 31 页 共 31 页第一章 绪论年,达到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应用的构成与工作机制,Android中的Intent以及Eclipse。以下就是对其相关内容的描述。2.1Android平台的架构 Android平台自底向上由以下四个层次组成:Linux内核层、Android运行时库和其他库层、应用框架层、应用程序层。如图1所示图1应用层程序应用程序框架其他库视频图像 视频播放浏览器 数据库运行时核心库Dalvik虚拟机Linux内核层Android平台的结构 (1) Linux内核层:Android基于Linux核来开发的,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。作为一个虚拟的中间层,该层位于硬件与其它的软件层之间。需要注意的是,这个内核操作系统并非类GNULinux的,所以其系统库、系统初始化和编程接口都和标准的Linux系统有所不同的。它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。YAFFS(Yet Another Flash File System)文件系统是一个开源的,专门为NAND Flash设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在Linux,uCLinux,和Windows CE上运行。YAFFS目前有YAFFS和YAFFS2两个版本,一般说来,YAFFS小页面(528字节/页)有很好的支持,而更大的页面(2K+64字节/页)就需要YAFFS2为新一代智能手机平台,Android需要支持超大容量的NAND Flash,所以采用支持大页面的YAFFS2文件系统。(2)Android运行时库和其他库层:Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和Dalvik虚拟机。同时Android提供了丰富的库类支持且大部分为开源代码,如采用的数据库为SQLite。Android选择它作为移动终端的嵌入式数据库有以下优点,它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2KB,提供了对事务功能和并发处理的支持,而且比目前流行的大多数数据库运行速度快。(3)应用框架层:在应用框架层Android开发人员可以跟那些核心应用一样拥有访问框架API的全部权限。应用的系结构化设计简化了各组件之间的重用,任何应用都可以分发自己的组件,任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。(4)应用程序层:Android本身会附带一些核心的应用程序,包括email客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由Java语言开发的。2.2Android的内核分析(1)内核在操作系统中的地位Android基于Linux操作系统,由硬件、系统内核、系统服务和应用程序等四大部分组成。其中,内核Kernel是最核心的部分,其主要作用在于与计算机硬件进行交互,实现对硬件的编程控制和接口操作,调度访问硬件资源,同时向应用程序提供一个高级的执行环境和对硬件的虚拟接口。主要功能包括:中断服务程序、进程调度程序、进程地址空间的内存管理、进程间通信。内核与普通应用程序不同,其拥有所有硬件设备的访问权限以及启动时即划分的受保护的内存空间同。(2)Android内核和标准的Linux内核一样,Android内核主要实现内存管理、进程调度、进程间通信等功能。Android内核是在标准Linux内核的基础上修改而成。为了适应嵌入式硬件环境和移动应用程序的开发。Android对Linux内核进行了一定的修改。Android内核源码树根目录结构如表1所示。目录描述arch特定体系结构的源码cryptoCrypto APIdocumentation内核源码文档divers设备驱动程序fsVFS和各种文件系统include内核头文件init内核引导和初始化ipc进程间通信代码kernel核心子系统lib通用内核函数mm内存管理模块net网络模块scripts编译内核所用的脚本security安全模块sound声音模块user早期用户空间代码表2-2-1 内核源码树目录结构Android内核与标准Linux内核在文件系统、进程间通信机制、内存管理、电源管理、驱动和其他方面存在不同。 文件系统不同于桌面系统与服务器,移动设备大多采用的不是硬盘而是采用Flash作为存储介质,因此,Android内核中增加了标准Linux内核中没有采纳的YAFFs2文件系统。YAFFS2(Yet Another flash File Sy-stem,2nd edition)是专用于flash的文件系统,对NAND,F1ash芯片有着良好的支持。YAFFs2是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。YAFFS2按层次结构设计,分为文件管理接口、内部实现层和NAND,简化了其本身与系统的接口设计能更方便地集成到系统当中。经过测试证明YAFFs2性能比支持NOR型闪存的JFFS2文件系统优秀。 程问通信机制Android增加了一种进程间的通信机制IPC Binder在内核源代码中,驱动程序文件为coredroid/include/linux/binder.h和coredroid/drivers/android/binder.c。Binder通过守护进程Service Manager管理系统中的服务,负责进程问的数据交换。各进程通过Binder访问同一块共享内存,以达到数据通信的机制。从应用层的角度看进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互方便了程序员开发需要交互数据的应用程序。 存管理在内存管理模块,Android内核采用了一种不用于标准Linux内核的低内存管理策略。在标准Linux内核当中,使用一种叫做00M(0ut of Memorv)的低内存管理策略:当内存不足时,系统检查所有的进程,并对进程进行限制评分获得最高分的进程将被关闭(内核进程除外)。Android系统采用的则是一种叫作LMK(Low Memory Killer)的机制,这种机制将进程按照重要性进行分级、分组。内存不足时,将处于最低级别组的进程关闭。例如在移动设备当中。UI界面处于最高级别。所以该进程永远不会被中止,这样,在终端用户看来,系统是稳定运行的。在Android内核源码中,LMK的位置是coredroid/drivers/misc/lowmemorykiller.c。与此同时,Android新增加了一种内存共享的处理方式Ashmem(Anonvmous Shared Memory,匿名共享内存)。通过Ashmem,进程间可以匿名自由共享具名的内存块。这种共享方式在标准Linux当中不被支持。Ashmem分配和使用情况如下:fd=ashhmem_create_region(“my-shmregion”,size);if(fd Software Updates Available Software,点击Add Site,在弹出的对话框中选择Achive,选择下载的ADT,如下图所示:图3-1-5 ADT的安装界面确定后,会看到ADT选项出现在对话框中:图3-1-6 ADT选项界面选中这个选项,然后点击install.,一路next下去。最后重启eclipse完成ADT插件的安装。ADT安装完毕后,还要配置Eclipse参数,使其指向SDK根目录,过程如下:下载最新版本的Android SDK,如android-sdk-windows-1.5_r1.zip,解压。在Eclipse中选择Window Preferences打开参数设置面板,选择Android选项;在SDK路径中填入Android的安装路径,单击Apply和ok,完成参数设置。如下图所示:图3-1-7 SDK路径中填入Android的安装路径界面在环境变量PATH中添加Android SDK的tools的目录路径,如:D:AndroidSDKtools。至此,就能在Eclipse环境下进行Android应用的开发了。3.2 Android应用程序组件的使用Android应用程序以各种组件(API)为基础,API是Android软件平台的重要组成部分,也是开发Android应用的关键所在。下面介绍几种主要的Android API。(1)当前活动程序Activity:作为最常用的应用程序组件,几乎所有Activity都会通过创建UI窗口与用户进行交流。Activity具有生命周期,它包含运行、暂停、停止等几个状态,状态间的转换可通过调用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法来实现。要开启新的activity,可以调用startActivity(Intent),或调用startSubActivity(Inten,t int),后者通常和onActivityResult(int,int, String Bundle)联合使用,以从一个activity获取某结果并返回给打开它的activity。(2)图像显示View:View是最基本的UI构件,它在屏幕中占据一个矩形区域可用来显示文本、图像等内容,还可完成图像事件处理。常用的View方法有:inflate()(由XML文件生成View)、onDraw(Canvas)(对View进行填充)、onMeasure( int, int)(测量View的高度和宽度)、onLayout()(完成View的布局)、onKeyDown(int,KeyEvent)(View中有按键操作时被调用)、onFocusChanged(boolean,int)(当View得到或失去关注时被调用)、setOnClilckListener()(设置View点击事件监听器)。View也包含一些子类,如:TextView(布局文件中的文本显示)、EditText(布局文件中的文本编辑)、Button(按钮)、ListView(显示列表)。(3)事件Intent: Intent抽象描述了想要执行的某种操作,它与startActivity一起使用可以开启新的activity,与startService一起使用可以开启后台服务。Intent最重要的作用还是加载activity,它是不同activity间的桥梁。Intent也可以被认为是一种概括操作行为的数据结构,它主要包括action(动作)和data(数据)两部分,此外它还具有一些附加属性如category( intent种类)、type(数据类型)等。常用的Intent方法有intent()(构造intent)、addcategory()(添加intent类型)、getAction()(获取intent动作)、getData()(获取intent数据)等。(4)数据存取与共享机制ContentProvider: ContentProvider可实现应用程序的数据存取及不同应用程序间的数据共享。ContentProvider为应用程序提供一些访问方法,包括: Query(Uri,String,String,String,String,String, String)(数据信息的查询),insert(Uri,Contentvalues)(在Contentprovider中添加新数据), updata(Uri,Contentvalues,String,String)(更新Conntprovider中的数据), delect(Uri,String,String )(删除数据), Gettype(Uri) (获取数据类型)。其中,Uri标明了ContentProvider存储的数据类型,在执行访问方法时都需依据Uri作为路径标识来确定要访问哪个ContentProvider。第四章 Android短信备份设计实现第四章 Android短信备份设计实现本章所需要描述的Android短信备份设计实现,其内容涉及,用户短信读取模块的实现和用户短信备份模块的实现这四个模块。以下就是针对这两个模块的展开描述。其短信备份基本流程如下:初始界面用户操作选定用户选定恢复目标短信网络上SD卡上PC机上图4-1 短信备份基本流程4.1用户短信读取模块的实现Android API支持开发可以发送和接收SMS消息的应用程序。目前我们开发过程中使用的Android模拟器还不支持发送SMS,但它可以接收SMS。现在我们来探索一下Android对SMS的支持,我们将会构建一个小小的应用程序来监听移动设备(或模拟器)上接收到的SMS消息,并将它显示出来。我们来定义一个Intent接收器来处理SMS接收事件,其java代码为附录【1】。我们需要对这个Intent接收器进行配置以使它能获取SMS接收事件, vider.Telephony.SMS_RECEIVED这个事件状态表示了SMS已被接收。我们可以在AndroidManifest.xml中进行如下配置,附录【2】。为了能让我们能接收SMS,我们得先进行权限的指定,可以在AndroidManifest.xml中如下配置,附录【3】。现在,我们的Intent接收器就可以在Android设备接收到SMS的时候被调用了,余下的事情就是去获取和显示接收到的SMS消息文本了,我们是使用SmsMessage.createFromPdu来读取短信的,而实现的获取和显示接收的实现代码如【附录4】。Android设备接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage这个类可以储存SMS的相关信息,我们也可以从接收到的pdu中创建新的SmsMessage实例,Toast界面组件可以以系统通知的形式来显示接收到的SMS消息文本。 运行程序,现让我们来在模拟器中运行这个应用程序,以及发送SMS消息到这个模拟器上。我们可以在eclipse的Android插件所提供的DDMS视图(Dalvik Debug Monitor Service)中发送SMS消息到模拟器上。发出广播Intent的方法,且我们使用在eclipse的Android插件所提供的DDMS视图来发广播,代码如附录【5】。然后,我们需要再写一个广播接收器,如附录【6】。 接着我们在Toast界面组件中以系统通知的形式来获取联系人,代码如附录【7】。最后在Androidmanifest.xml中加入代码如附录【8】。通过以上的操作,我通过以在Android模拟器中构建一个应用程序的方法来监听移动设备上收到的SMS消息,并将它以PDU形式显示出来,从而实现了短信读取。而后,我们接下来需要做的工作就是去实现短信备份。4.2用户短信备份模块的实现用户要实现短信备份,首先需要在其手机的Android系统中安装短信备份软件。Android系统采用SQLite数据库方式存储所有接收到的短信,在本为所设计的程序中,用户使用此软件,首先用户选中其重要的短信需要进行备份,则备份Android短信系统会自动针对目标短息将其备份短信备份到SD卡上。(而用户要注意的是,在SD卡上备份的短信,系统只能进行一次性的备份,即系统在进行导出过程时,备份的最新短信将覆盖原先所存储的短信。)系统完成对重要短信进行备份到SD卡上的操作后,用户可以将其中的mmssms.db文件拷贝到电脑上,然后通过SQLite Database Browser工具进行查看。自此,实现了短信备份的过程。而在用户进行设置短信备份的时,本设计会向用户提示其短信备份的主题形式。主题形式可分为时间、人名、地域等。如若用户没有特殊的自主主体形式选择,则,系统将默认目标短息以时间为主题形式进行备份。我们就以时间主题备份为例,即按照两个发信人之间的时间顺序来进行备份。在用户所备份的所有短信中,系统在用户所设置发信人的时间区域里,自动进行归纳选择,运用“冒泡法”实现特指发信人在规定时域内的所有备份短信的锁定。这样更方便于用户的阅读。我们可以通过流程图进一步了解其主题形式:目标短信用户选定模式人物模式时间模式地域模式自动筛选地域主题时间主题人物主题图4-2-1 主题流程图第五章 结果与总结第五章 结果与总结5.1结果用户在自主选择备份程序启动之后,先打开手机操作“主菜单”,然后在“信息功能”中按下“Menu”键,选择“设置”。器出现的设置界面如下:图5-1-1 手机系统功能信息界面然后选择信息里的设置 ,把“设置”页面拉到最下面,这时候会看到备份设置中有四个选项。导出短信;导入短信;备份短信/彩信数据;恢复短信/彩信数据。图5-1-2 手机系统信息设置界面导出短信:直接把短信备份到SD卡上。图5-1-3 手机系统导出短息界面图5-1-4 手机系统到处短信进度界面导入短信:直接从SD卡上导入先前备份过的短信。图5-1-5 手机系统导入短息界面图5-1-6 手机系统导入短息进度界面备份短信/彩信数据:能把短信与彩信的数据都备份到SD卡上(仅支持一次备份,最新的备份会直接覆盖原先的备份)。恢复短信/彩信数据:直接从SD卡上恢复先前备份的数据(备份完成后需要重启手机)。图5-1-7 手机系统短息备份完成的提示界面图5-1-8 手机系统重启的提示界面5.2总结本课题证明了利用Android平台短信备份的可行性。短信备份仅仅是其短信功能中的一个小部分,Android平台还可以利用手机中的短信进行其他方面的应用。例如,Android平台可以通过短信的发送与接收来定位等。因此本文提出的对用户手机中的重要短信进行备份只是Android平台能够实现的一个功能,具有一般性,希望能对Android平台的短信运用的研究发展起到抛砖引玉的作用。因此,Android系统的手机短信功能应用范围十分广泛,拓展性也非常强。参考文献参考文献1陈帆,和红杰,周荣辉.Java 2程序设计实用教程M.机械工业出版社,2006:55582崔群法,王咏梅,李有军.Eclipse 3.0从入门到精通M.电子工业出版社,2008:69723林建素,孟康健.Eclipse开发学习笔记M.电子工业出版社,2008:46534范春梅,王新刚,张卫华.XML基础教程M.人民邮电出版社,2009:2312395 (美)Erik T.Ray,译者: 卓小涛.XML入门M.中国电力出版社,2001:23366梅尔斯T.,奈克莫夫斯基A.,王辉.Java XML 编程指南M.电子工业出版社,2001:1351437麦克劳林B.,孙兆林,汪东.JAVA 与 XMLM.中国电力出版社,2001:1902008威尔顿,P.,科尔比,J.,敖富江.SQL入门经典M.清华大学出版社,2006:981089靳岩,姚尚朗.Android开发入门与实践M.人民邮电出版社,2009:576310傅志红,陈兴璐.深入浅出Google AndroidM.人民邮电出版社,2009:132511赵炯.Linux内核完全注释M.机械工业出版社.2004:687412王占全.Eclipse全程指南M.电子工业出版社.2008:21122013林信良.Java学习笔记M.清华大学出版社.2007:14515214 15/content/09/0910/00/36491_5779118.shtml致谢致 谢经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及同学们的支持,想要完成这个设计是难以想象的。在论文写作的过程中,从论文的选题到确定思路,从资料的搜集、提纲的拟定到内容的写作与修改,继而诸多观点的梳理,都得益于我的导师沈孝科导师的悉心指导和匠心点拨。论文的点评中总是闪烁着智慧的火花,与他的每次交谈我都能从中获益。他渊博的学识,敏锐的学术洞察力,严谨的治学态度,一丝不苟的负责精神,以及对学生孜孜不倦的教诲都给予了我极其深刻的印象,让我受益匪浅。在此,谨向沈老师表示我最衷心地感谢和最诚挚的敬意。同时,也向四年来所有教授过我和帮助过我的教授老师表示感谢,感谢您们对我的谆谆教诲、耐心指导和无私的帮助。感谢我的同学和朋友们,感谢你们在我论文写作过程中给予我的鼓励、关心和无私的帮助。最后衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授!附录附录附录【1】1. packagecom.wissen.sms.receiver;2. publicclassSMSReceiverextends BroadcastReceiver 3. Override4. publicvoidonReceive(Contextcontext,Intentintent) 5./TODO6. 7. 附录【2】. 5.附录【3】1.2.附录【4】1.public voidonReceive(Contextcontext,Intentintent)2.Bundlebundle=intent.getExtras(); 3.Objectmessages=(Object)bundle.get(”pdus”); 4.SmsMessagesmsMessage=newSmsMessagemessages.length; 5.for(intn=0;messages.length;n+)6.smsMessagen=SmsMessage.createFromPdu(byte)messagesn); 7.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鲁迅小说文本解读与赏析:大二语文高级课程教案
- 跨部门协作通讯模板及会议管理
- 存货核算概述
- 供应链质量保证合同
- 团队任务分配与进度监控矩阵表
- 奥德燃气安全培训内容课件
- 2025流动资产借款合同(人民币)
- 2025年个体农业承包合同范本
- 厦门天然气安全培训基地课件
- 2025茶叶代理合同版
- 铭记历史勿忘国耻(课件)小学生主题班会通用版
- 迁坟工程施工方案
- QFD质量功能展开课件
- 公路水运工程试验检测师《水运结构与地基》考试(重点)题库(800题版)
- 红楼梦(英文版)
- 蘑菇和木耳(课件)六年级上册科学青岛版
- 〈药品召回管理办法〉培训
- 甘肃华夏文明简介课件
- 酒店营销与数字化实务完整全套教学课件
- 输电线路智能间隔棒在线监测技术
- 绘本教学故障鸟
评论
0/150
提交评论