基于Android平台的即时通讯系统的研究与设计毕业设计 精品.docx
《基于Android平台的即时通讯系统的研究与设计毕业设计 精品.docx》由会员分享,可在线阅读,更多相关《基于Android平台的即时通讯系统的研究与设计毕业设计 精品.docx(59页珍藏版)》请在冰豆网上搜索。
基于Android平台的即时通讯系统的研究与设计毕业设计精品
本科毕业设计(论文)
基于Android平台的
即时通讯系统的研究与设计
学院自动化学院
专业网络工程
(网络与信息化方向)
年级班别2009级
(2)班
学号3109001332
学生姓名张京
指导教师郑日荣
2013年5月
基于AndroId平台的即时通讯系统的研究与设计
张京
自动化学院
摘要
随着Android系统的发展,越来越多的移动设备开始使用Android作为操作系统。
Android系统内核基于Linux而来,应用层则使用基于Java代码的Dalvik虚拟机,因此Android代码的主要编程语言是Java。
即时通讯(InstantMessenger,简称IM),指基于互联网的即时交流信息的业务。
即时通讯是当今互联网用户主要通讯方式之一,能够为互联网用户带来直观、便捷的信息交换服务。
蓝牙,一种支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
本文主要对Android系统、蓝牙协议进行研究,通过分析Android的一个蓝牙即时通讯实例,达到基于Android即时通讯系统的研究目的。
在这些研究的基础上,设计出能够实现Android系统上基于蓝牙、能够进行文件发送的即时通讯软件。
首先,本文分析Android系统的框架以及功能特征,讲述了Android系统的基本运作方式。
其次,讲述了在Android系统上如何使用蓝牙协议,研究了Android系统上的蓝牙工作方式以及关键代码。
最后,分析蓝牙的工作实例,在此基础上在Eclipse开发出能够实现即时通讯的Android实例,并且能够传送文件。
关键词:
即时通讯;蓝牙;Android
Abstract
WiththedevelopmentoftheAndroidsystem,moreandmoremobiledevicesstartusingAndroidastheoperatingsystem.AndroidsystemisbasedontheLinuxkernelandtheapplicationlayerisusingJava-basedcodeDalvikvirtualmachine,therefore,themajorprogramminglanguageofAndroidsystemisJava.
InstantMessenger(AbbreviatedIM),referstoInternet-basedreal-timeinformationexchangeservice.IMisthemainwaytocommunicateofInternetusers;onecanprovideInternetuserswithanintuitiveandconvenientinformationexchangeservice.Bluetooth,onethatsupportsshort-rangecommunicationdeviceradiotechnology,canincludemobilephone,PDA,wirelessheadsets,laptopcomputers,relatedperipheralsandotherwirelessinformationexchangebetweendevices.
ThispapermainlyresearchontheAndroidsystemandtheBluetoothprotocol,byanalyzingofaBluetoothAndroidIMinstance,toachievethepurposeofresearchingAndroid-basedinstantmessagingsystem.DesignanAndroidsystembasedonBluetooth,withthecapableofinstantmessagingandfilesending.
Firstly,thispaperanalyzesframeworkandfunctionalcharacteristicsofAndroidsystem,andtellsthebasicoperationofAndroidsystem.Secondly,UsingBluetoothprotocolontheAndroidsystemandtellssomekey-codes.Finally,designanIMprogramthroughEclipsebasedontheanalysisofBluetoothworkingexampleswhichhavetheabilitytotransferfiles.
Keywords:
InstantMessaging;Bluetooth;Android
1绪论
1.1关于Android系统的背景以及研究目的
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
Android一词最早出现于法国作家利尔亚当(AugusteVilliersdel'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'èvefuture)中。
他将外表像人的机器起名为Android[2]。
蓝牙协议Bluetooth。
蓝牙是一种短距离的无线通信技术,它最初提出的是用来取代电缆连线,也可以用于各种移动设备的互联,组建个人无线局域网[4],蓝牙无线通信技术的主要特点[5]有:
低成本、低功率;短标称的蓝牙无线通信距离,以节省电池能量;永外加的功率放大器扩展的无线通信距离;在全球可用并且无限制的2.4GHZISM(工业、科学、医疗)频段内。
随着,人们对于即时通讯的需求越来越多样化,产生了各种各样不同用途的协议。
即时通讯(InstantMessenger,简称IM),是指能够即时发送和接收互联网消息等的业务。
自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。
即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。
是一种终端连往即时通讯网络的服务。
即时通讯不同于e-mail在于它的交谈是即时的。
大部分的即时通讯服务提供了状态信息的特性——显示联络人名单,联络人是否在在线与能否与联络人交谈[3]。
在这样的背景之下,发展Android系统上的即时通讯软件已经成为一个非常主流性的问题,如何实现,以及如何提供更加优质的服务将会是Android开发的一个非常重要的问题。
1.2国内外研究状况
目前Android最新的版本是4.2JellyBean,中文名是“果冻豆”,该系统是Android4.0.xIceCreamSandwich"(冰激凌三明治)"的升级版,Android5.0的代号将是"KeyLimePie(酸橙派)"。
在今年的2013GoogleI/O大会上,从GooglePlay到Map、GameAPI,再到AndroidStudio开发工具,Android在移动端的全面系统升级,这也让Android之前和iOS相对较弱的部分全面追上。
Android发行的版本:
Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:
阿童木(AndroidBeta),发条机器人(Android1.0)。
后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。
甜点命名法开始于Android1.5发布的时候。
作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:
阿童木(AndroidBeta)
发条机器人(Android1.0),2008年9月发布。
纸杯蛋糕(Android1.5)Cupcake,2009年4月30日发布。
甜甜圈(Android1.6)Donut,2009年9月15日发布。
松饼(Android2.0/2.1)Éclair,2009年10月26日发布。
冻酸奶(Android2.2)Froyo,2010年5月20日发布。
姜饼(Android2.3)Gingerbread,2010年12月7日发布。
蜂巢(Android3.0)Honeycomb,2011年2月2日发布。
冰激凌三明治(Android4.0)IceCreamSandwich,2011年10月19日在香港发布。
果冻豆(JellyBean,Android4.1和Android4.2)JellyBean,2012年6月28日发布,Android4.2JellyBean:
2012年10月30日发布。
对于基于Android系统的即时通讯软件,国内比较著名的软件有QQ(Android版)、微信。
国外比较著名的有MSN、LINEME等等。
1.3通过GOOGLEAndroidSDK以及ECLIPSE进行开发
早期的Android应用程序开发中,通常通过在AndroidSDK(Android软件开发包)中使用Java作为编程语言来开发应用程序。
开发者亦可以通过在AndroidNDK(AndroidNative开发包)中使用C语言或者C++语言来作为编程语言开发应用程序。
同时Google还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的VisualBasic语言。
此外,Google还推出了GoogleAppInventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
Eclipse的插件机制是轻型软件组件化架构。
在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。
已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。
插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言[6]。
1.4本论文研究的目的及意义
早期的即时通讯是属于Unix用户的专利,随着个人电脑与互联网的普及,即时通讯成为人与人沟通的另一条管道。
即时通讯在2003年后与万维网、电子邮件共同成为互联网使用的主流。
2007年之后,由于智能手机普遍流行起来。
传统上电信运营商所建构SMS、MMS信息服务系统,逐渐被以网络架构的第三方服务商所瓜分移动设备的加值营收。
而对于Android系统,这方面的发展有5年,相比起其他平台的发展已经短了很多,而对于这种新兴的移动设备系统,有更加多的信息可以利用,例如GPS信息、照片信息,手机联系人信息等等。
这些开发能够使移动设备之间的通讯更加人性化、更加便利,有利于提高通讯效率。
即时通讯除了能加强网络之间的信息沟通外,最主要的是可以将网站信息与聊天用户直接联紧在一起。
通过网站信息向聊天用户群及时群发送,可以迅速吸引聊天用户群对网站的关注,从而加强网站的访问率与回头率;
即时通信利用的是互联网线路,通过文字、语音、视频、文件的信息交流与互动,有效节省了沟通双方的时间与经济成本;
即时通信系统不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台。
1.5本论文主要结构
本文章主要分为5个部分:
绪论、Android系统的研究与设计、程序主要架构与模块、程序的调试、程序运行结果。
1、绪论
本章主要介绍Android系统、Bluetooth的背景以及开发现状,以及本系统的设计意义。
2、Android系统的研究与设计
本章主要介绍Android系统的框架与特征,介绍Android系统的运作方式与特征函数,以及蓝牙的术语定义以及Android中如何运用蓝牙。
3、程序主要架构与模块
本章主要介绍程序的需求分析,介绍系统的逻辑运行流程,介绍实例关键代码。
4、程序的调试以及运行结果
本章主要介绍Eclipse中如何调试及其过程,以及程序的运行结果。
2Android系统的研究与设计
2.1Android系统的功能特征
1、应用程序架构:
在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。
2、Dalvik虚拟机器:
在Android平台上所使用Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。
3、集成的浏览器:
集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。
WedKit是一个开源浏览器网页排版引擎,目前使用WebKit引擎的浏览器主要有:
Safari,Midori,Epiphany等。
配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:
局部性的缩放网页上的资讯、触控式的操作等效果。
4、优化的绘图能力:
在程序里可以用到的绘图功能分为2D与3D两个方面。
在2D方面,Android提供了一套特有的类库,而在3D方面则是使用OpenGLES1.0(openGL for Embedded systems)规范的类库。
它们是一种非常快的图形引擎,并且支持硬件加速。
5、SQLite数据库:
SQLite提供结构化的数据存取。
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。
它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如PHP,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。
它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB。
它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。
同时它还支持事务功能和并发处理等等。
SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。
6、多媒体的支持能力:
主要用于播放媒体文件。
这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:
URI即是统一资源识别地址)模式—在网络上直接播放的流媒体。
另外支持各种通用的静态图像格式,如JPG、PNG、GIF等格式。
7、GSM技术:
Global System for Mobile Communications,即全球移动通讯系统,俗称“全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。
GSM技术是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。
8、蓝牙:
蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。
EDGE(Enhanced Data Rate for GSMEvolution),即增强型数据速率GSM演进技术。
EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和SPSK调制技术。
由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。
Wi-Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。
该技术使用的是2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。
其目前可使用的标准有两个,分别是IEEE802.lla和IEEE802.11b。
这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。
9、GPS:
Global Positioning System,即全球定位系统,它是一个由覆盖全球的24颗卫星组成的卫星系统。
这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。
这项技术可以用来引导飞机、船舶、车辆以及个人。
同样也是属于手机硬体方面的体现,也是在开发Android应用程序是可以突出的特点之一。
2.2Android系统的编程环境的搭建
所需开发环境:
JDK5或者JDK6(仅有JRE不够)、Eclipse3.5(galileo)。
下载用于在Eclipse开发android应用的ADT插件,在企业开发中,很多程序员使用EclipseIDE作为应用的开发环境。
为了使得Android应用的创建,运行和调试更加方便快捷。
Android的开发团队专门针对EclipseIDE定制了一个插件:
AndroidDevelopmentTools(ADT)
安装Eclipse插件(ADT),启动Eclipse,选择Help>InstallNewSoftware,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”,然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件。
点击OK.。
返回可用软件的视图,会看到这个插件,然后选择DeveloperTools(会选中下面的“AndroidDeveloperTools”和“AndroidEditors””),点击Next,最后重启Eclipse。
下载安装AndroidSDK:
AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具。
下载完SDK后,把.zip文件解压到电脑上合适位置。
启动Eclipse,选择window->preferences,在打开的视图左边点击android,在右边的SDKLocation中选择AndroidSDK所在位置。
在用户变量中新建PATH值为:
AndroidSDK中的tools绝对路径(本机为D:
AndroidDevelopandroid-sdk-windowsools)。
新建一个新的项目[7]:
通过File -> New -> Project菜单,建立新项目"Android Project"然后填写必要的参数,(注意这里我勾选的是Google APIs,可以选喜欢的,但要创建相应的AVD),相关参数的说明:
Project Name:
包含这个项目的文件夹的名称。
Package Name:
包名,遵循JAVA规范,用包名来区分不同的类是很重要的,我用的是helloworld.test。
Activity Name:
这是项目的主类名,这个类将会是Android的Activity类的子类。
一个Activity类是一个简单的启动程序和控制程序的类。
它可以根据需要创建界面,但不是必须的。
Application Name:
一个易读的标题在的应用程序上。
在"选择栏"的 "Use default location" 选项,允许选择一个已存在的项目。
点击Finish后,点击Eclipse的Run菜单选择Run Configurations„
选择“Android Application”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“Android Application”, 有个新的选项“New_configuration”(可以改为我们喜欢的名字)。
在右侧Android面板中点击Browse,选择HelloWorld
2.3Android系统的架构
2.3.1Android操作系统
第一层:
Linux操作系统和驱动(Linuxkernel):
由C语言实现。
Android核心系统服务依赖于Linux2.6内核,包括:
安全性、内存管理、进程管理、网络协议、驱动模型。
Linux内核也作为硬件和软件栈之间的抽象层。
除了标准的Linux内核外,Android还增加了内核的驱动程序:
Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。
第二层:
本地框架和Java运行环境(LIBRARIES和ANDROIDRUNTIME)本地框架是有C/C++实现。
包含C/C++库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。
系统C库:
(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。
多媒体库:
基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。
SufaceManager:
显示子系统管理器,并且为多个应用程序提供2D和3D图层的无缝融合。
LibWebCore:
一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。
SGL:
Skia图形库,底层的2D图形引擎。
3Dlibraries:
基于OpenGLES1.0API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。
FreeType:
位图(bitmap)和矢量(vector)字体显示。
Android运行环境(ANDROIDRUNTIME):
提供了Java编程语言核心库的大多数功能,由DalvikJava虚拟机和基础的Java类库组成。
Dalvik是Android中使用的Java虚拟机,每个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。
执行后缀名为.dex的Dalvik可执行文件,该格式的文件针对小内存使用做出了优化。
同时虚拟机是基于寄存器的,所有的类都是有Java编译器编译,然后通过SDK中的“dx”工具转化为.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。
第三层:
Android应用框架(ANDROIDFRAMEWORK):
在Android系统中,开发人员也可以完全访问核心应用程序所使用的API框架。
包含的框架入上图(不在陈述)
第四层:
Android应用程序(APPLICATIONS)Android应用程序都是有Java语言编写的。
用户开发的Android应用程序和A