基于Android手机平台的多媒体短信系统的研究
2015-06-08高凯
高凯
(陕西理工学院 数学与计算机科学学院,陕西 汉中 723001)
Google公司出品的android操作系统是目前世界范围内占有率最高的智能手机操作系统,这个系统依托于Google公司强大的互联网服务有着很好的发展前景。目前的手机短信功能相对比较简单,基本上以发送文本信息为主,虽然也可以发送彩信,但是彩信的大小有限制,而且费用也相对比较高。目前手机上的聊天软件主要有中国移动的飞信、腾讯QQ和腾讯微信,这些聊天软件应用普遍,非常受人们的欢迎。这些软件依托智能手机上搭载的3G卡网络实现通信,同时也可以使用wifi上传输网络数据。
目前使用3G网络的用户越来越多,利用3G网络传输速度快的特点可以在手机上开发一个软件,利用网络来发送多媒体信息,这样不仅可以即时通信,而且还可以省去相当一部分费用[1]。
1 测试需求分析
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,对软件需求的深入理解是软件开发工作获得成功的前提条件。
1.1 好友管理
作为一款聊天通信软件,用户可能会有很多好友,好友管理是用户常用的功能,聊天用户可以对自己的好友进行管理,包括查找好友、添加好友、删除好友,修改好友在本地的显示信息。
1.2 发送信息
发送聊天信息是该软件的核心功能,用户可以发送多媒体信息,包括文字、图片、动画、音频、视频。用户发送文字消息具有即时性,如果用户在线则可以立即收到好友发送的消息。用户接收到的信息会存储到数据库中,当同一用户再次登录后可以看到自己的聊天记录。当自己和好友聊天时,如果其他的好友发送消息过来则给予声音提示,并加入到最近聊天好友列表里[2-3]。
2 总体设计
为了描绘信息流和数据从输入移动到输出的过程中所经受的变换,及数据在软件中流动和被处理的过程,特用以下数据流图来形象的表示。首先从用户出发,用户需要登录,对于没有注册的用户需要注册后才能登录本系统,登录后可以和好友进行聊天,可以发送多媒体信息,如图1所示,是整个软件的系统设计流图[4]。
图1 数据流图Fig.1 Data flow diagram
为了把用户的数据要求清楚、准确地描述出来,建立一个概念性的数据模型,它描述了从用户角度看到的数据,反映了用户的现实环境。本系统的实例联系,是以手机用户为中心,分为性别、状态、账号、密码、昵称、Email和年龄。
3 系统概要设计
根据上面的需求分析设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,用较低成本开发出较高质量的软件系统。
3.1 系统的体系结构与设计思想
根据需求分析把系统的整体架构设计出来,用一张图形象直观地展示出来。设计思想描述了系统的设计过程与思想[5]。
3.1.1 系统的体系结构
系统的体系结构从整体上描述了系统的架构,描述系统内部的运行流程。首先由客户端发起请求,服务器在收到请求后根据请求类型做相应的业务逻辑处理,逻辑处理会与数据库交互,业务逻辑处理完后返回数据给客户端,客户端根据服务器的返回数据的类型做相应的业务逻辑处理,往本地数据库保存数据或者从本地数据库查询数据,然后给用户展示界面,整个系统的体系结构如图2所示。
3.1.2 系统的设计思想
本系统的核心是手机用户之间通过本系统利用网络发送多媒体消息,即时通信。本系统使用socket方式通信。服务器端一直监听客户端的连接,每当有客户端连接服务器时,服务器新建一个线程来处理客户端的请求操作。当客户端连接到服务器时将客户端的socket保存到服务器中,以便读取客户端信息和给客户端发送信息。当客户端给好友发送消息时,首先传送给服务器,服务器从保存的socket中找到对应好友的socket,然后通过好友的socket给好友发送信息。信息的传递是以Json数据的形式在用户之间传输,对于二进制刚将二进制文件用Base64将字节转换为字符后再以Json的形式传输。
图2 系统体系结构图Fig.2 System architecture diagram
3.2 系统功能模块设计
根据系统的整体架构把系统分为多个子模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体。
3.2.1 系统总体功能模块
根据系统的需求分析,将系统划分为如下几个模块:
登录模块,注册模块,添加好友模块,删除好友模块,查找好友模块,发送文字信息模块,发送二进制文件模块。
3.2.2 系统总体流程
用户从开始登录到退出本系统的一个使用流程用图3来展示。用户在主界面与聊天界面停留时间最长,也是系统的核心功能所在。
4 核心功能模块设计及实现
4.1 登录功能
对于首次使用本系统的用户需要注册,用户登录后可以给好友展示不同的在线状态,包括:在线(默认),离开,忙碌,隐身。登录界面对应的类为:MainActivity.java。
图3 系统流程图Fig.3 The flow chart of the system
用户点击登录按钮时会调用SocketSingle对象,Socke tSingle类使用了单例设计模式,在本系统中SocketSingle对象只有唯一的一个,第一次调用SocketSingle对象时会与服务器连接,客户端连接服务器代码如下:
如果连接5秒还没有连接成功则提示用户连接超时。
服务器一直处于监听状态,监听客户端的连接,一旦有客户端连接并连接成功则保持长久连接,并保存用户登录信息及用户的Socket对象,直到用户退出系统连接都会中断。服务器监听客户端连接代码如下:
与服务器连接成功后服务器会给客户端分配一个线程来处理该客户端的所有请求,客户端请求登录时会向服务器发送登录时需要的信息,这些信息包括:用户名、密码、在线状态、请求类型。服务器接收到登录消息后提取出请求类型,根据请求类型将传送过来的Json数据转化为对象,然后去数据库中查询该用户是否存在,如果存在的话再判断该用户的用户名和密码是否正确,如果正确则给客户端发送成功的消息,否则发送失败的消息,服务器返回的消息也是以Json数据的形式发送给客户端,返回消息里面包括返回类型,客户端根据返回类型做出相应的处理,如果登录成功则跳到主界面,否则提示用户登录失败。
4.2 查找好友功能
查找好友界面对应的类为:FindActivity.java。当用户点击查找按钮时会调用find(View view)方法。该方法首先会判断用户输入的关键字是不是为空,如果为空则提示用户输入关键字,如果不为空则调用SocketSingle的SendMsg()方法给服务器发送消息。
服务器一直监听客户端发送过来的消息,接收到消息后则根据请求类型将客户端发送过来的Json数据转换为相应的对象,然后使用该对象去数据库中查询相关好友,查询相关好友。服务器将查询出来的好友转化为Json数据再返回给客户端,客户端根据返回类型来做相应的处理。
4.3 聊天功能
聊天信息以列表的形式展现给用户,聊天信息分为五种:文本、图片、动画、音频、视频。选择发送类型对应的类为:ChatingActivity.java。发送消息不可以为空,点击发送按钮会调用ChatingAvtivity的send方法,该方法首先判断发送内容是否为空,然后组装待发送的聊天信息,待发送的消息内容包括用户名、好友用户名、聊天内容、发送时间、用户昵称、请求类型,如图4所示为发送信息界面图[6]。
图4 发送信息界面图Fig.4 Send information interface diagram
服务器接收到客户端发送过来的消息后提取出客户端的请求类型,根据请求类型将Json数据转化为对象,然后根据好友用户名查找好友的Socket对象,根据Socket对象可以得到好友的输入流和输出流,接着把json数据转发给好友,好友根据服务器发送过来的数据提取出返回类型,根据返回类型转化为相应的对象,从对象里提取出聊天内容并展示给用户。
5 结 论
本文使用Android手机平台在智能手机上开发的通信软件,可以在安装本软件的手机用户之间发送多媒体短信,用户使用体验良好,是一种Android手机平台的较为新颖的多媒体短信应用解决方案。但是在用户发送二进制文件时传输时间太长,这也是今后系统改进的方向。
[1]王明勇,王林,吴根金,等.基于Android手机3G网络远程可移动监控系统[J].电子世界,2014(11):17-18.WANG MING-yong,WANG Lin,WU GENG-jin,et al.Based on the Android mobile remote monitoring system of 3G network[J].Electronics World,2014(11):17-18.
[2]齐加文.基于Android平台刮刮乐彩票软件的研究与实现[D].内蒙:内蒙古师范大学,2011.
[3]袁方.基于Android平台的手机混沌加密系统的设计与实现[D].杭州:杭州电子科技大学,2013.
[4]朱竑宇.基于Android手机平台的智能家居安防系统设计[D].哈尔滨:哈尔滨理工大学,2013.
[5]崔栩凯.基于Android手机的定位及信息检测的应用开发[D].北京:北京邮电大学,2013.
[6]杨敏.基于Android短信平台技术的研究与实现[D].昆明:昆明理工大学,2012.