Sipdroid简单分析

最近做android上面的IP通话,所有对sipdroid做了一个简单分析,希望对各位做voip的朋友有点帮助,同时在这里抛砖引玉,希望高手加以指点。我主要是修改Sip那块,将sipdroidSip换成自己的私有Sip,同时做一个自己的sip和标准Sip的状态映射,所以对UI这块还不太明白

 

Sipdroid是一款相对成熟的Voip软件,本身提供了视频语音通话功能,支 持各种网络接入模式(蓝牙,wifi3G),多种语音视频编码处理,同时Sip完全用java上层编写,模块比较清晰,相对比较好修改。

 

 

 

1SipDroid模块简单分析
        UI
层,负责界面显示模块和界面时间传递
        Engine
层:软件核心处理层,启动各种服务,初始化软件参数。处理各种UI时间,维持配置文件信息,保存全局属性变量。其中包括UserAgenProfile(用户配置文件属性),UserAgent(用户事件处理),SipdroidEngine(核心处理,所有的UI的事件,参数设计,服务的启动都由此文件调度),RegisterAgent(注册服务处理)
        Sip
层:提供所有sip消息模型,所有sip消息的处理流程,包括发送,接收,封装,解码等等

        
网络传输:提供音频,视频信息的处理,此模块会对音频视频进行即时编码解码,同时发送数据。同时还提供JSTN NAT透传技术。


 


2
SipDroid流程分析:
    
拨号:拨号请求由UI通过Receiver广播信息交给SipDroidEngine处理,在SipDroidEngine做一些验证,然后交给UserAgine处理。其中call(String target_url, boolean send_anonymous)为判断是否匿名拨号再此方法中,会创建一个ExtendedCall对象,以提供给sip协议栈使用,然后调用ExtendedCallcall方法处理,之后由ExtendedCallcall,调用ExtendedInviteDialog来发送invite请求。由InviteDialog执行具体的invite调用InviteTransactionClientrequest方法,最后由InviteTransactionClient发送request请求,在InviteTransactionClient中会通过SipProvider,来发送消息,并打开对端口监听,来收sip消息。发送消息主要有(UDP传输 UdpTransport  TCP传输TcpTransport
来电:在启动程序的时候会通过SipDroidEngine会根据配置,创建一个Provider,这里用到udp传输,创建一个Udpproviderudpprover是一个Thread,创建的时候就会启动线程,开始监听收到的信息,当受到信息后,通过onServiceTerminated方法,把对象传出到UdpTransport,由UdpTransport处理,再通过onTransportTerminated方法传出到SipProvider对象,最后将在SipProviderprocessReceivedMessage方法中处理收到的消息,最后从listenersmap)中取出相应的listener,最后通过相应的listener中的OnReceiveMessage()来处理具体Sip请求

转自http://blog.csdn.net/Leixin525/article/details/6299050

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值