×
家电数码 > 手机 > 详情

Android的VoIP系统的设计与实现

发布时间:2022-03-18 发布时间:
|

摘要:为实现一个Android平台的网络电话,提出一个基于PJSIP堆栈的VoIP系统设计方案。该方案符合Android NDK开发规范,即上层使用Java语言开发,下层采用纯C语言的PJSIP库开发其协议栈,并使用JNI连接上下两部分。在此叙述了PJSIP的原理,并以此为出发点,分析并设计了一个具体的VoIP系统。最后通过测试,该方案能很好地完成会话的发起、应答、通信,以及会话的注销等功能,达到了设计要求。
关键词:Android;网络电话;PJSIP;JNI;NDK

0 引言
VoIP(Voice over Internet Protocol)即首先数字化语音信号并压缩成帧,转换为IP数据包在网络上传输,以此完成语音通话的业务,是一种利用IP协议传输语音数据的、新兴的通信技术。
随着我国三网融合的推进,VoIP与IPTV(Interactive Personality TV)一起成为这一庞大工程的重要标志。而目前手机中,VoIP的解决方案并不是很多,特别是在Google公司推出的开源操作系统Android中。尽管该系统推出时间不长,凭借强大的功能、良好的界面、广泛的商业支持,为用户带来很好的体验,成为2010年最热门且发展最快的手机操作系统。因此,两者的结合,将是未来的发展趋势。本文提出一种基于PJSIP协议栈的解决方案,通过Android本地开发工具(NDK),实现一个高效、稳定且功能强大的VoIP系统,具有较高的参考和实用价值。

1 VoIP设计方案
1.1 设计目标
本方案所设计的系统包含以下功能:首先,完成用户终端(如手机)中语音数据的采集与编码,并通过RTP(实时传输协议)/RTCP(RTP传输控制协议)进行传输和控制;其次,完成会话的控制,包括会话的注册、发起、维护与结束、注销等;再次,作为一个应用程序,必须实现一个良好的界面,与用户交互;最后,作为一个开放系统,需具有良好的可扩展性。
1.2 总体设计
本方案基本上符合Android的NDK框架的开发规范,将系统分为4层,如图1所示。最上层为应用层,该层将在Android SDK的框架内,采用Java语言来实现;第二层为JNI层,SIP协议栈有很多种实现,其中,采用C语言的SIP协议栈在效率、速度、系统占用方面有着超越其他库(如Java协议栈)的优势,因此,该方案将在第三层采用纯C语言实现的PJSIP协议栈。为了让Java应用层能调用协议栈层,在两层之间需要一个衔接的桥梁,这就是JNI层。最后一层是驱动层,这部分一般是由手机厂商来实现的,本文将不做重点介绍。

a.JPG



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
不采用自适应算法的智能天线系统分析