Sipdroid简单分析

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

 

 

 

1、SipDroid模块简单分析
        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协议栈使用,然后调用ExtendedCall的call方法处理,之后由ExtendedCall的call,调用ExtendedInviteDialog来发送invite请求。由InviteDialog执行具体的invite调用InviteTransactionClient的request方法,最后由InviteTransactionClient发送request请求,在InviteTransactionClient中会通过SipProvider,来发送消息,并打开对端口监听,来收sip消息。发送消息主要有(UDP传输 UdpTransport  TCP传输TcpTransport)
来电:在启动程序的时候会通过SipDroidEngine会根据配置,创建一个Provider,这里用到udp传输,创建一个Udpprovider,udpprover是一个Thread,创建的时候就会启动线程,开始监听收到的信息,当受到信息后,通过onServiceTerminated方法,把对象传出到UdpTransport,由UdpTransport处理,再通过onTransportTerminated方法传出到SipProvider对象,最后将在SipProvider的processReceivedMessage方法中处理收到的消息,最后从listeners(map)中取出相应的listener,最后通过相应的listener中的OnReceiveMessage()来处理具体Sip请求。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值