基于Android的VoFi语音系统的设计与实现

2013-06-23 09:42金林珠库流亨
电子设计工程 2013年17期
关键词:终端设备服务器端信令

金林珠,库流亨

(1.武汉科技大学 湖北 武汉 430081;2.华北计算机系统工程研究所 北京 100083)

网络通信技术的快速发展和应用正改变着人们的通信和交流方式,VoIP(Voice over Internet Protocol)实现了将模拟声音讯号数字化,并以数据封包的形式在IP数据网络上实时传递的功能[1]。随着WiFi无线网络信号覆盖范围的逐渐扩大以及支持WiFi的智能手机、平板电脑等手持终端设备的大量增加,利用现有的无线网络进行语音通信将会成为更加廉价和便利的方式。早期实现的无线宽带接入商业模式在校园内已得到试用,但校园网内用户终端与外网之间较大的数据传输延迟,经常导致连通率降低,话音质量差,频繁掉线等问题。虽然目前市场上出现的部分WiFi手机已实现了上述应用,但功能比较单一,使用不便,且需要增加额外开支。

基于上述背景和问题,本文提出了一种基于Android平台的VoFi语音设计系统,有效结合VoIP和WiFi技术[2],实现Android终端用户在局域网内免费、广域网内廉价的语音通信。并且此设计的扩展应用在智能家居和电话会议上都体现出了一定的优势,进一步突破了传统电话的局限性。

1 系统架构设计及模块功能描述

1.1 系统架构概述

整个系统基于C/S模式,采用“瘦客户端,胖服务器”的设计理念来实现,在局域网内采用TCP这种可靠的连接进行数据通信,同时在服务器端建立功能丰富的状态机来响应终端的各种不同信令。

整个系统是结合cloud来形成一个庞大的信息交流平台,构成完善的网络信息共享机制,系统的网络示意图如图1所示。

图1 系统网络示意图Fig.1 Schematic diagram of the network system

1.2 服务器

服务器的主要功能:服务器主要承担终端设备管理和数据转发功能,响应处理终端请求,同时负责检查数据链接,调用对应的VoIP接口,与VoIP软件进行数据的交互,其主要功能如图2所示。

图2 服务器端功能图Fig.2 Function diagram of the server

1.3 客户终端

客户终端的主要功能:建立与服务器的连接并得到可呼叫设备列表;向服务器发送发起登陆、呼叫、状态变更、设置优先级、好友管理等请求;监听并执行服务器发送的反馈或命令;处理接收的音频数据,经过解码实时播放给用户;同时对用户语音信息进行采样和编码等处理后发送出去。

2 系统的工作原理

整个系统中将数据分为信令和音频数据两大类。信令采用XML格式传输,语音采用特定的编码格式传输。服务器和移动终端采用两个不同的TCP端口分别监听信令和数据,并对各自的数据进行对应的状态处理。

其中常见的信令包括:NEWCALL、HOLD、RESUME、FORWARD、FINISH。它们分别对应于常用的VoIP软件Skype中的发起新电话,电话保持,回复通话,来电转移和结束通话功能命令。

语音连接分为两种,一种是被动接听,另一种是主动拨打。主动拨打时,需要进行完善的信令确认,保证操作的连续性和可靠性,对于被动接听只需要进行电话的应答和语音的采样和播放。

3 系统的设计流程

1)初始化

首先用户终端应用程序打开WiFi,进入登陆界面,然后设置服务器的IP地址,终端设备首先根据该IP地址登录服务器。服务器接收到终端设备的连接请求后,获取与其建立连接的终端设备的信息,如IP地址、MAC地址、设备状态等,将MAC地址进行哈希映射后得到各终端的ID用来标识各个终端设备,并把这些信息存放在数据库中。终端设备和服务器建立连接后,将从服务器数据库中得到所有可建立连接的终端ID,此时用户才可以向设备列表中的任一设备发起呼叫。

2)终端发起的呼叫

终端向服务器发送NEWCALL命令以及呼叫对方地址ID,服务器监听到指令,执行相关操作:

如果被呼叫方为本局域网内在线登录到服务器的用户,则由服务器来建立与被叫之间的数据链路,打开网络通信信道,然后将主叫端和被叫端的语音数据分别向目的终端按一定的节奏进行转发,同时处理各种不同的异常情况。

如果被呼叫方为远程互联网上的用户,且好友在线,则先由服务器端通过好友列表信息来建立与被叫方之间的数据连接和通信信道,然后调用VoIP接口,将语音数据通过VoIP软件进行相互传输。

3)VoIP软件发起的远程呼叫

首先由远程VoIP软件向服务器端的VoIP软件代理模块发起呼叫,服务器从本地的VoIP软件中通过HOOK技术[3]获取到语音数据流。

然后服务器通过联网终端设备的网络信号强弱、优先级设置等因素综合选取最优的在线可用移动终端设备作为该次通话的目的设备。

最后由服务器向该WiFi局域网内的本地移动终端进行数据转发,同时实时传输由本地移动终端设备采集的语音信息到远端的VoIP软件,形成一次连贯流畅的通话。

4)扩展应用

由于智能家居环境中的各种电器和设备是通过网络实现相互之间的协调与合作,组成的是一个分布式内网系统。那么在VoIP软件发起的远程呼叫中,每个家庭可视为独立的被呼叫单元,服务器则控制所有的智能设备,在闲置状态时,各个在线设备可设为待机状态,一旦服务器监听到远程呼入,首先根据各个设备的电力、功耗、信号等参数优先选择最佳适合接听的终端设备,然后唤起该设备进行应答,此时其他智能设备仍处于待机状态,由此可以达到节能作用。如果在公司企业,此系统亦可应用在电话会议中,会议发起者向服务器发起呼叫申请,服务器根据请求控制各个部门的终端设备,同时唤起多终端设备进行应答,由此可以提高整个公司的效率。

4 系统软件设计实现

4.1 系统的开发环境

1)开发服务器端程序:Eclipse+Visual Studio 2010;

Visual Studio 2010主要用来构建HOOK Lib与对应的VoIP软件进行Windows下的信息交互,同时在Eclipse中进行JNI调用,彼此相互支持和协作,由此完成信息的无缝衔接和传递。

2)开发终端应用程序:Eclipse+JDK+ADT插件+Android SDK;

Eclipse是开发Android应用程序的首选集成开发环境。安装Android开发环境,首先需要安装java开发工具包(JDK),然后安装集成开发环境Eclipse和ADT插件,最后安装整个系统。对于客户端的程序,本实验进行了完整的测试与美工优化,形成良好的人机交互界面。

4.2 关键代码实现

4.2.1 客户端UI设计

AndroidManifest.xml:每个Android程序必须在根目录下包含一个AndroidManifest.xml文件。AndroidManifest.xml是XML格式的Android应用程序声明文件,包含了系统运行Android程序前所必须掌握的重要信息,包括应用程序名、图标、包名、模块组成等。res/main.xml:与用户界面相关的布局文件,描述所要显示的用户界面。4.2.2 客户端工作原理及流程

客户端主要通过android系统自带的音频系统框架[5]来进行系统的开发,首先通过MIC按照一定的采样频率来进行音频数据的采集,同时使用单独的线程来进行数据的编码,以及将数据装入队列,最后通过socket[6]发送到指定的server端口;同时监听本地的数据端口,然后将收到的数据压入队列,并使用单独的线程进行数据的解析和播放,由此实现实时的语音通信,具体的工作流程图如下图3所示。

图3 客户端语音模块工作流程图Fig.3 Flow chart of the client voice module

1)声音数据的采样和编码

AudioRecord类在Java应用程序中负责管理音频资源,记录音频输入设备中产生的数据,AudioRecord对象用来完成读取数据操作,并通以下几个方法从AudioRecord对象中读取数据:read(byte[],int,int),read(short[],int,int)和read(ByteBuffer,int)。

在创建AudioRecord对象时,AudioRecord首先初始化,然后与音频缓冲区建立连接。缓冲新的音频数据时,根据指定的缓冲区大小决定AudioRecord能够记录的最长数据。从硬件设备读取的数据时,必须保证读取量小于整个记录缓冲区。

4.3 Server端设计

服务器端进行数据的交互时,一方面主要进行数据监听,另一方面对数据端口进行监听,一旦收到特定的信令交由状态机进行处理,同时使用多线程管理数据和各种信令,并且使用JNI[7]与特定的HOOK Lib进行交互,完成与VoIP的软件的信息传输。其中对于数据库、并行运算,采用较多的调度算法进行数据的并行处理,提高整个系统的吞吐能力和实时性。

5 系统测试结果

为了尽量的简化操作,同时为了保持友好的操作界面,采用了定制尺寸的图标Logo在HTC G10上进行了实时的运行和测试,测试效果如图4所示。

图4 系统测试效果图Fig.4 Effect chart of the test system

6 结 论

WiFi的频段在世界范围内无需任何电信运营执照,因此WLAN无线设备提供了一个世界范围内可以使用的,费用及其低廉且数据带宽极高的无线空中接口。而VoIP电话则作为互联网的一种应用,进一步降低了网络电话的运营成本。本研究基于Android开源操作系统平台,将WiFi和VoIP有效结合,采用C/S设计模式,设计并实现了WiFi网络终端之间的免费语音通信,同时应答终端不再局限于手机,服务器可以根据性能参数自动优化选择合适的在线移动终端设备,在智能家居应用中,体现了节能、低成本等特点。在公司企业中,亦可实现电话会议这种快捷的沟通方式,提高公司效益。该技术在家庭、学校或者大型企业中都有着广泛的应用前景。

[1]DANIEL Collins.VoIP技术与应用[M].北京:人民邮电出版社,2003.

[2]陈法海,杨斌.Android系统中Wi-Fi网络的研究与实现[J].成都信息工程学院学报,2010,25(5):495-497.CHEN Fa-hai,YANG Bin.Research and implementation of Wi-Fi network in Android system[J].Journal of Chengdu University of Information Technology,2010,25(5):495-497.

[3]Richter J,Nasarre C.Windows核心编程[M].葛子昂,周靖,廖敏,译.北京:清华大学出版社,2008.

[4]Google.Android开发主页[EB/OL].[2012-2-20].http://www.android.com.

[5]杨丰盛.Android技术内幕[M].北京:机械工业出版社,2011.

[6]王志伟,丁海军.OSGi/SIP通信中间件架构设计[J].计算机工程,2011,37(20):234-235.WANG Zhi-wei.DING Hai-jun.Architecture design of OSGi/SIP communication middleware[J].Computer Engineering,2011,37(20):234-235.

[7]任俊伟,林东岱.JNI技术实现跨平台开发的研究[J].计算机应用研究,2005,22(7):180-184.REN Jun-wei,LIN Dong-dai.Research of platform independent programming using JNI technology[J].Application Research of Computers.2005.22(7):180-184.

猜你喜欢
终端设备服务器端信令
Linux环境下基于Socket的数据传输软件设计
SLS字段在七号信令中的运用
视频监视系统新型终端设备接入方案
移动信令在交通大数据分析中的应用探索
基于信令分析的TD-LTE无线网络应用研究
行车记录仪通信连接方法、行车记录仪及终端设备
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
车站信号系统终端设备整合及解决方案
LTE网络信令采集数据的分析及探讨