Android 平台下的即时通讯
该文章转载于http://skywen.iteye.com/blog/1811310
基于Android 平台简易即时通讯的研究与设计
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的
作用和功能以及实现方法。
1 Android 平台简介
Android 是Google 公司于2007年11月5日推出的手机操作系统,经过2年多的发展,Android平台在智能移动领域占有不小的份额,由Google为首的40 多家移动通信领域的领军企业组成开放手机联盟(OHA)。Google 与运营商、设备制造商、开发商和其他第三方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。正因如此,Android 正在被越来越多的开发者和使用者所接受。近日,Google 发言人Anthony House称,截止到2010 年4月15 日,Android Market 已经有3.8万多个应用程序。
2 Android 平台特性与即时通讯的研究
Android 平台框架共由5 部分组成。底层核心是基于Linux 2.6开发的独立操作系统,该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。中间是Android 执行环境,包括系统运行库、Dalvik 虚拟机、核心库和一些C /C ++库等支持Android 使用的各个组件。应用层框架是开发人员使用这些API 框架来开发自己的应用,简化了应用程序开发的架构设计。应用层程序是用Java语言编写的运行在虚拟机上的程序[1] 。整个An- droid 平台框架如图1 所示。
即时通讯(IM)是一个终端连往一个即时通讯网路的服务。即时通讯与e-mail 的不同在于它的交谈是即时的。大部分的即时通讯服务提供了在线提醒的特性──显示联络人名单,联络人是否在线,能否与联络人交谈等。近几年即时通讯发展特
别迅速,即时通讯的功能日益丰富,由PC 客户端发展到移动客户端,逐渐发展成一个综合化信息平台,国内市场上知名的即时通讯工具有腾讯QQ,新浪UC,中国移动飞信等,但这些产品都有着很严重的安全威胁,如ID 被盗、隐私威胁、病毒威胁等。
为了减小这些威胁,可以在企业内部开发自己的即时通讯软件,减少为未知用户带来的威胁。
3 简易即时通讯功能及设计
3.1 简易通讯的功能
本设计实现了在Android 平台上开发即时手机通讯系统,它能够使用户在手机客户端上登录服务器,方便、迅捷地收发即时消息。随着研究的深入,可以在该系统上实现图片的传输和接收,以及其他一些功能,这样可以使该系统功能更加多样化。
3.2 简易通讯系统框架介绍
通讯系统架构采用C /S 模式,即客户端/服务器的体系结构。客户端是基于Android 平台进行开发,通过3G 网络与Internet 建立连接,通过服务器实现Android 客户端之间的即时通讯。
客户端负责初始化通信过程,进行即时通讯时,由客户端负责向服务器端发起连接请求。服务器端采用开源的Openfire[2] 作为服务器,允许多个客户端同时登录,并且同时连接到一个服务器上。服务器对每个客户端进行认证,对认证通过的客户端创建会话,实现客户端与客户端之间的通讯。
3.3 客户端的解决方案
系统的客户端定位于Android 平台的手机,采用SIMPLE[3]协议作为即时通讯协议,SIMPLE(SIP for Instant Messaging and Presence LeveragingExtensions) 是SIP (Session Initiation Protocol)的扩展,它为SIP 协议制定了一整套的架构和扩展方面的规范,用于支持IM。SIMPLE 通过SIP 来传递状态信息和实现分布的信息表示
。根据协议规则,采用Android 平台提供的XML 解析包对XML 进行解析。根据Activity 模块运行于主线程的特点,采用多线程[4] 技术来解决系统通信问题。系统的用户信息和聊天信息存储在Android平台自身所带的SQLite 数据库中。客户端功能模块如图2 所示。
3.4 服务器端解决方案
系统服务器端采用开源的Openfire 来建立即时通信服务器。Openfire 采用Java 语言进行开发,Java 语言具有跨平台的特点,因此Openfire 服务器可以架设于多种操作系统平台上。Openfire服务器的内核主要由服务器连接管理组件、会话
管理组件、数据存储组件和传输器组件等组成。Openfire 实现了插件机制,方便扩展,通过安装与异构网络通讯的插件,便能与其他的通讯软件实现通讯。
在网络连接中采用Apache 的Mina 框架来实现网络连接,Mina 框架使用非阻塞式的高性能I /O 底层,采用异步I /O 事件和事件驱动机制,使服务器具有很高的效率和性能,从而能够及时处理大量的客户端连接事件和I /O 随机事件,单台服务器可支持上万个并发用户。服务器与客户端的连接示意图如图3 所示。
3.5 通信系统结构
随着移动通信与Internet 的飞速发展及其相互融合,3G 无线网络使无线网络高速接入Internet成为现实,从而移动客户端可以接入到Inter- net 的服务。系统客户终端通过3G 无线网络采用TCP 协议连接到服务器,通过SIMPLE 即时通
讯协议进行及时通讯。[5]
在移动网络中,移动终端接入到3G 无线网络。
网关移动交换中心GMSC(Gateway Mobile Switc- hing Center)为用户提供分组路由、隧道和跟踪移动终端的位置等功能。UMTS(Universal Mobile TelecommunicationsSystem)提供3G 网络内部与外部网络的路由和封装,分配IP 地址,实现与Internet 网络的互通。通信系统结构示意图如图4 所示。
3.6 系统工作流程
服务器对用户输入的用户名和密码进行身份验证,验证成功后,客户端从服务器端读取客户端的个人信息,并更新好友列表和群组信息,服务器端响应客户端的各种请求,客户端可发送接收信息,通讯完毕退出系统登录状态。这样,一个简易即时通讯系统便实现了。当然只是个人学习的话可以先从文字通讯开始。
图5 是认证流程示意图。
客户端软件使用Java 和XML 语言在eclipse集成开发环境中开发,基于Andriod 1.5 模拟器开发的用户登录界面如图6 所示。
4 结语
该设计主要讨论了基于Android 平台的简易即时通讯系统,研究了在开源服务器Openfire 上各个移动客户端和服务器之间的通信系统结构,实现了客户端功能。随着研究的进一步深入,基于Android的通讯系统会逐渐完善,相信基于Android 平台的即时通信系统会有着很好的应用前景。
[参考文献]
[1]余志龙,陈昱勋,郑名杰,等.Google Android SDK 开发范例大全[M].北京:人民邮电出版社,2009.
[2]张云川.标准化的即时通信协议———SIMPlE 和XMPP 的对比研究[J].武汉科技大学学报:自然科学版,2005,28(4):375-377
[3]张海燕.Java 多线程技术在手机互联网中的应用[J].农业网络信息,2008(3):97-98.
[4]姚昱旻,刘卫国.Android的架构与应用开发研究[J].计算机系统应用,2008(11):110-113.
[5]张利国,代闻,龚海平.Android移动开发案例详解[M].北京:人民邮电出版社,2010.
Android 平台下的即时通讯相关推荐
- b/s模式下的即时通讯,使用ajax框架dwr实现
b/s模式下的即时通讯,使用ajax框架dwr实现 了解java的发展史可以知道,客户端编程在基于浏览器的编程方面,以前的做法是用applet实现客户端编程,在当时算是流行的做法,但是随着IE的不一致 ...
- 如何在Android平台下进行Socket通信
如何在Android平台下进行Socket通信 首先在Java se平台上新建一个Socket服务端: public static void main(String[] args) { try { S ...
- 高通Android平台下关于display部分的几个关键问题
高通Android平台下关于display部分的几个关键问题 2011-04-07 18:59 From: http://hi.baidu.com/leowenj/blog/item/3fe59f74 ...
- Android平台下的图片/视频转Ascii码图片/视频 (一)
前一阵看鸿洋公众号日推,看到一个几年前就感觉有意思的一个技术,那就是图片转Ascii码,记得上大学时玩过windows的图片或视频转ascii码,可惜那个软件不好用,有bug,转视频的时候动不动就卡死 ...
- 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)
基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...
- android平台下基于ANativeWindow实现渲染bitmap图像
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- Android 平台下的原生 Markdown 解析器
Markdown 项目地址:zzhoujay/Markdown 简介:Android 平台下的原生 Markdown 解析器 Android 平台的原生 Markdown 解析器,已整合进 RichT ...
- android richtext显示html,RichText Android 平台下的富文本显示控件 @codeKK Android开源站...
注意:此项目已不再维护 Android 平台下的富文本解析器 流式操作 低侵入性 依赖少,只依赖了disklrucache和support v4 支持 Html 和 Markdown 格式文本 支持图 ...
- 在Android平台下实现音视频语音聊天
音视频通信 作为独立开发者或想缩短音视频开发周期的公司来说,想要在Android平台下实现音视频通信,最快捷的方法是寻找开源项目或调用其他公司API.之所以这么说是因为音视频通信技术涉及到底层音视频采 ...
- android平台下使用点九PNG技术
"点九"是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png 智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不 ...
最新文章
- 基于python和OpenCV构建智能停车系统
- 学习JS面向对象成果,借国庆发布个最新作品与大家交流
- idea lombok安装后还是标红_小辣椒神器Lombok
- 4:springApplication.run 原理
- java静态函数调用,书籍+视频+学习笔记+技能提升资源库
- Oracle 与 MySql 区别
- python机器学习案例系列教程——关联分析(Apriori、FP-growth)
- oracle 索引问题梳理
- 推荐可永久保存文件的免费网络硬盘
- 汽车冬季养护的四个重点
- linux中cp: omitting directory `XXX' 问题解决
- Kernel panic - not syncing
- Oracle数据库精讲与疑难解析(第2版)
- TabLayout使用介绍
- 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享
- RAID的几种工作模式
- java 工资管理系统_Java工资管理系统
- java 打码_java基础(二)
- 使用IDEA画结构图
- 怎样解决Keil复制文注释到记事本出现乱码
热门文章
- base64图片的String字符串压缩变小
- lbp2900打印机linux驱动下载,佳能LBP2900+打印机驱动
- 修改Windows用户名后用户路径没有修改的解决方案
- Operator norm - 算子范数
- 三菱plc控制步进电机实例_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
- java 分贝_java – wav文件中特定点的分贝值
- EMP电磁脉冲射频发射器制作教程
- 卡皇稳了,RTX3090获鲁大师Q1季度最强显卡!
- 读书 -- 个人购书经验总结
- 违反计算机信息网络国际联网安全,网络安全合规指引题库:计算机信息网络国际联网,是指中华人民共和国境内的计算机信息网络为实现信息的国际交流,同外国的计算机信息网络相联接。()...