Sipdroid的簡單分析

參考:Sipdroid簡單分析

Sipdroid是一款相對成熟的Voip軟件,本身提供了視頻語音通話功能,支 持各種網絡接入模式(藍牙,wifi,3G等),多種語音視頻編碼處理,同時Sip完全用java上層編寫,模塊比較清晰,相對比較好修改。

1、SipDroid模塊簡單分析
        UI層,負責界面顯示模塊和界面時間傳遞
        Engine層:軟件核心處理層,啓動各種服務,初始化軟件參數。處理各種UI時間,維持配置文件信息,保存全局屬性變量。其中包括UserAgenProfile(用戶配置文件屬性),UserAgent(用戶事件處理),SipdroidEngine(核心處理,所有的UI的事件,參數設計,服務的啓動都由此文件調度),RegisterAgent(註冊服務處理)
        Sip層:提供所有sip消息模型,所有sip消息的處理流程,包括髮送,接收,封裝,解碼等等
        網絡傳輸:提供音頻,視頻信息的處理,此模塊會對音頻視頻進行即時編碼解碼,同時發送數據。同時還提供JSTN NAT透傳技術。

0_13017394372Pr2.gif

 
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請求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章