手研网]SipDroid简单分析

本文详细分析了SipDroid的模块结构及工作流程。介绍了UI层、Engine层、Sip层和网络传输层的功能。并深入探讨了拨号与接听电话的具体过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1SipDroid模块简单分析

      UI层,负责界面显示模块和界面时间传递

      Engine层:软件核心处理层,启动各种服务,初始化软件参数。处理各种UI时间,维持配置文件信息,保存全局属性变量。其中包括 UserAgenProfile(用户配置文件属性),UserAgent(用户事件处理),SipdroidEngine(核心处理,所有的UI的事件,参数设计,服务的启动都由此文件调度),RegisterAgent(注册服务处理)

      Sip层:提供所有sip消息模型,所有sip消息的处理流程,包括发送,接收,封装,解码等等

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

[转][手研网]SipDroid简单分析


2SipDroid流程分析:

    拨号:拨号请求由UI通过Receiver广播信息交给SipDroidEngine处理,在SipDroidEngine做一些验证,然后交给 UserAgine处理。其中call(String target_url, booleansend_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请求。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值