论文部分内容阅读
近年来,随着移动网络技术的迅猛发展,移动VoIP开始显露出强大的增长潜力。市场调研机构ON World公司预计到2011年全球移动VoIP用户将达到1亿人。通过移动VoIP,用户不仅能享受移动通讯带来的快乐,同时还能享受VoIP带来的低廉的通话成本。移动VoIP的功能主要是通过运行在移动终端上的SIP客户端来体现的,然而实现支持移动终端的SIP客户端会有许多困难,移动终端的硬件资源十分有限,CPU运算能力低,内存小,移动终端上运行的操作系统多达数十种,而且相互之间差别较大。此外,移动终端体积较小,屏幕分辨率较低,操作方式受到许多限制,多以触摸屏和按键为主。针对移动终端的这些特点,本文结合开源项目PJSIP,将SIP客户端设计为五大模块:平台抽象层、SIP栈、媒体栈、功能封装层和用户界面。平台抽象层是跨平台性的基础,实现对操作系统各种接口和数据类型的抽象,此外还提供了独立的内存管理机制,进程从内存池中而不是堆中申请内存,保证了内存资源的有效利用且不会造成内存泄漏。SIP栈在PJSIP基础上改进了注册认证过程,使得用户不用手动输入realm认证参数就能实现注册。在媒体栈中添加了对G.729A音频codec的支持,G.729A是G.729的定点运算实现,对系统的要求大大降低,并且还针对移动终端平台进行了优化,以满足实时语音通话的要求,此外还调整了媒体栈的一些参数以改善语音质量。功能封装层对SIP栈和媒体栈进行了封装,降低了用户界面与协议栈的耦合度,此外还实现了其它的功能,包括文件播放、按键音、回铃音、配置文件读写、发送保活信息等功能。用户界面与操作系统紧密相关,采用C++语言开发,充分利用现在图形开发资源,界面设计在遵循操作系统原有风格的基础上尽量考虑界面友好性。结构上采用MVC模式,使界面与底层逻辑分离,在最大限度上实现跨平台性的同时保留操作系统的操作特性。在这些设计的基础上,本文实现了一款能运行在Windows Mobile操作系统上的SIP客户端程序,该程序具有极好的可移植性,当移植到Symbian、Linux等其它平台时只有界面部分需要重新开发。此外该程序还具有良好的可扩展性,可以很方便地添加即时消息等其它功能。