新聞中心

        EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > Android平臺下基于Wi―Fi的可視化VoIP通話系統(tǒng)設(shè)計

        Android平臺下基于Wi―Fi的可視化VoIP通話系統(tǒng)設(shè)計

        作者: 時間:2013-07-22 來源:網(wǎng)絡(luò) 收藏

        我們將客戶端軟件架構(gòu)分成了UI層、Engine層、層和網(wǎng)絡(luò)傳輸層4個部分,各層主要實現(xiàn)的功能如下:
        ①UI層。主要負責(zé)界面顯示模塊和界面事件的傳遞。
        ②Engine層。這一層是軟件的核心處理層,它啟動各種服務(wù)、初始化軟件參數(shù)、處理各種UI事件、維持配置文件信息和保存全局屬性變量。其中包括UserAgenProfile(用戶配置文件屬性),UserAgent(用戶事件處理),Engine(核心處理中所有的UI事件、參數(shù)設(shè)計、服務(wù)
        的啟動都由此文件調(diào)度),以及RegisterAgent(注冊服務(wù)處理)。
        層。提供所有的消息模型,所有SIP消息的處理流程,包括發(fā)送、接收、封裝、解碼等等。
        ④網(wǎng)絡(luò)傳輸層。提供音頻、視頻信息的處理,此模塊對音頻、視頻進行即時編解碼,同時發(fā)送數(shù)據(jù)。
        3.2 客戶端軟件主要功能模塊的實現(xiàn)
        3.2.1 通話功能模塊的實現(xiàn)
        通話功能是系統(tǒng)的核心模塊,該模塊負責(zé)實現(xiàn)通話的整個流程,包括了注冊服務(wù)器、會話的發(fā)起和接收以及會話的結(jié)束。通話模塊的流程如圖3所示。

         

        本文引用地址:http://www.104case.com/article/153444.htm

        c.JPG


        首先,客戶端軟件進行系統(tǒng)資源以及配置文件的初始化。初始化工作完成后,從主線程里創(chuàng)建一個SIP消息監(jiān)聽線程。該線程用來監(jiān)聽和處理SIP消息,創(chuàng)建子線程成功后,主線程向服務(wù)器發(fā)起注冊請求,待客戶端注冊成功后即可發(fā)起和接收會話進行語音、視頻通信,會話結(jié)束后,伴隨著Activity的結(jié)束。在此過程中,主線程發(fā)出了一個結(jié)束信號給SIP消息監(jiān)聽線程,SIP消息監(jiān)聽線程收到這個結(jié)束信號后調(diào)用finish()方法退出,等待用戶的下一次呼叫操作。
        3.2.2 媒體流管理模塊的實現(xiàn)
        在本系統(tǒng)中,媒體流管理模塊用來實現(xiàn)通話過程中音視頻的實時采集、編碼和播放功能,為了便于系統(tǒng)的調(diào)用,設(shè)計中實現(xiàn)了幾個主要的功能函數(shù)StartMediaStream()、StopMediaStream()、InitMediaChannel(),分別完成開啟音視頻操作、關(guān)閉音視頻操作、媒體流通道的初始化。為了具體實現(xiàn)媒體流的管理功能,系統(tǒng)需要向下調(diào)用RTP/RTCP庫、音視頻編解碼、采集播放等接口。使用RTP/RTCP協(xié)議是目前解決流媒體實時傳輸問題的最好辦法,RTP負責(zé)流媒體數(shù)據(jù)的發(fā)送和接收,而RTCP負責(zé)提供數(shù)據(jù)分發(fā)質(zhì)量反饋信息。
        對于編解碼庫的加載,系統(tǒng)中采用了JNI技術(shù)實現(xiàn)了底層C/C++與上層Java的通信,具體的函數(shù)語句如下:
        static{
        System.loadLibrary(“Mediacodec”);
        }
        其中,Mediacodec是視頻編解碼動態(tài)鏈接庫的名稱,源文件為Mediacodec.so,通過以上方法,我們實現(xiàn)了底層和上層應(yīng)用之間的通信。

        4 封裝與測試
        為了能夠在操作系統(tǒng)的智能手機和平板電腦上面方便地移植和使用該系統(tǒng),在實現(xiàn)了各模塊的功能后,還需將上面所有的模塊進行封裝。 SDK本身就提供了一些很有用的工具。由于本文的重點環(huán)節(jié)不在于 SDK上,所以我們采用集成開發(fā)工具——集成在Eclipse中的ADT插件來對整個系統(tǒng)進行封裝。在工程libs(如果不存在則新建)目錄下新建一個名為armeabi的目錄,將Eclipse中編譯生成的.so庫文件放到該目錄下。ADT在封裝資源時會自動將該庫文件封裝到apk文件中,apk是Android手機操作系統(tǒng)中應(yīng)用程序的封裝形式,在所有Android平臺中均能使用。將封裝后的apk包安裝到Android手機、PDA或虛擬機中。
        系統(tǒng)測試環(huán)境由服務(wù)器和安裝有可視化通話軟件的移動終端組成。測試結(jié)果表明,系統(tǒng)運行穩(wěn)定,性能良好,通話過程中無明顯回音,圖像清晰流暢,語音和視頻能夠保持同步。由于本系統(tǒng)運行在局域網(wǎng)內(nèi),通話延遲基本為零,充分滿足了可視化通話系統(tǒng)的要求。

        結(jié)語
        本文中所設(shè)計的可視化VoIP通話系統(tǒng)屬于無線局域網(wǎng)領(lǐng)域的應(yīng)用。系統(tǒng)在無線局域網(wǎng)內(nèi)具有信令處理穩(wěn)定、通話無時延、視頻清晰流暢、語音視頻同步性高等優(yōu)點,在實際應(yīng)用中具有潛在的市場價值。但本系統(tǒng)仍然有許多的不足之處,比如說信令不夠完善、服務(wù)過于單一等缺點。

        c++相關(guān)文章:c++教程



        上一頁 1 2 3 下一頁

        關(guān)鍵詞: VoIP SIP OpenSIPS Android

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 西峡县| 阳信县| 郴州市| 木兰县| 阳朔县| 雅安市| 墨江| 察哈| 临沧市| 兖州市| 黄山市| 青河县| 广汉市| 徐州市| 永川市| 奉新县| 恭城| 遂平县| 宁晋县| 百色市| 疏附县| 颍上县| 德保县| 化隆| 榆社县| 尤溪县| 修水县| 江油市| 丹巴县| 迭部县| 富源县| 察哈| 扎赉特旗| 高淳县| 开化县| 昌黎县| 新平| 英德市| 台州市| 尼木县| 龙州县|