新闻中心

EEPW首页>手机与无线通信>设计应用> Android平台下基于Wi―Fi的可视化VoIP通话系统设计

Android平台下基于Wi―Fi的可视化VoIP通话系统设计

作者: 时间:2013-07-22 来源:网络 收藏

我们将客户端软件架构分成了UI层、Engine层、层和网络传输层4个部分,各层主要实现的功能如下:
①UI层。主要负责界面显示模块和界面事件的传递。
②Engine层。这一层是软件的核心处理层,它启动各种服务、初始化软件参数、处理各种UI事件、维持配置文件信息和保存全局属性变量。其中包括UserAgenProfile(用户配置文件属性),UserAgent(用户事件处理),Engine(核心处理中所有的UI事件、参数设计、服务
的启动都由此文件调度),以及RegisterAgent(注册服务处理)。
层。提供所有的消息模型,所有SIP消息的处理流程,包括发送、接收、封装、解码等等。
④网络传输层。提供音频、视频信息的处理,此模块对音频、视频进行即时编解码,同时发送数据。
3.2 客户端软件主要功能模块的实现
3.2.1 通话功能模块的实现
通话功能是系统的核心模块,该模块负责实现通话的整个流程,包括了注册服务器、会话的发起和接收以及会话的结束。通话模块的流程如图3所示。

本文引用地址://m.amcfsurvey.com/article/153444.htm

c.JPG


首先,客户端软件进行系统资源以及配置文件的初始化。初始化工作完成后,从主线程里创建一个SIP消息监听线程。该线程用来监听和处理SIP消息,创建子线程成功后,主线程向服务器发起注册请求,待客户端注册成功后即可发起和接收会话进行语音、视频通信,会话结束后,伴随着Activity的结束。在此过程中,主线程发出了一个结束信号给SIP消息监听线程,SIP消息监听线程收到这个结束信号后调用finish()方法退出,等待用户的下一次呼叫操作。
3.2.2 媒体流管理模块的实现
在本系统中,媒体流管理模块用来实现通话过程中音视频的实时采集、编码和播放功能,为了便于系统的调用,设计中实现了几个主要的功能函数StartMediaStream()、StopMediaStream()、InitMediaChannel(),分别完成开启音视频操作、关闭音视频操作、媒体流通道的初始化。为了具体实现媒体流的管理功能,系统需要向下调用RTP/RTCP库、音视频编解码、采集播放等接口。使用RTP/RTCP协议是目前解决流媒体实时传输问题的最好办法,RTP负责流媒体数据的发送和接收,而RTCP负责提供数据分发质量反馈信息。
对于编解码库的加载,系统中采用了JNI技术实现了底层C/C++与上层Java的通信,具体的函数语句如下:
static{
System.loadLibrary(“Mediacodec”);
}
其中,Mediacodec是视频编解码动态链接库的名称,源文件为Mediacodec.so,通过以上方法,我们实现了底层和上层应用之间的通信。

4 封装与测试
为了能够在操作系统的智能手机和平板电脑上面方便地移植和使用该系统,在实现了各模块的功能后,还需将上面所有的模块进行封装。SDK本身就提供了一些很有用的工具。由于本文的重点环节不在于SDK上,所以我们采用集成开发工具——集成在Eclipse中的ADT插件来对整个系统进行封装。在工程libs(如果不存在则新建)目录下新建一个名为armeabi的目录,将Eclipse中编译生成的.so库文件放到该目录下。ADT在封装资源时会自动将该库文件封装到apk文件中,apk是Android手机操作系统中应用程序的封装形式,在所有Android平台中均能使用。将封装后的apk包安装到Android手机、PDA或虚拟机中。
系统测试环境由服务器和安装有可视化通话软件的移动终端组成。测试结果表明,系统运行稳定,性能良好,通话过程中无明显回音,图像清晰流畅,语音和视频能够保持同步。由于本系统运行在局域网内,通话延迟基本为零,充分满足了可视化通话系统的要求。

结语
本文中所设计的可视化VoIP通话系统属于无线局域网领域的应用。系统在无线局域网内具有信令处理稳定、通话无时延、视频清晰流畅、语音视频同步性高等优点,在实际应用中具有潜在的市场价值。但本系统仍然有许多的不足之处,比如说信令不够完善、服务过于单一等缺点。

c++相关文章:c++教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭