基于A(yíng)ndroid的VoIP系統的設計與實(shí)現
摘要:為實(shí)現一個(gè)Android平臺的網(wǎng)絡(luò )電話(huà),提出一個(gè)基于PJSIP堆棧的VoIP系統設計方案。該方案符合Android NDK開(kāi)發(fā)規范,即上層使用Java語(yǔ)言開(kāi)發(fā),下層采用純C語(yǔ)言的PJSIP庫開(kāi)發(fā)其協(xié)議棧,并使用JNI連接上下兩部分。在此敘述了PJSIP的原理,并以此為出發(fā)點(diǎn),分析并設計了一個(gè)具體的VoIP系統。最后通過(guò)測試,該方案能很好地完成會(huì )話(huà)的發(fā)起、應答、通信,以及會(huì )話(huà)的注銷(xiāo)等功能,達到了設計要求。
關(guān)鍵詞:Android;網(wǎng)絡(luò )電話(huà);PJSIP;JNI;NDK
0 引言
VoIP(Voice over Internet Protocol)即首先數字化語(yǔ)音信號并壓縮成幀,轉換為IP數據包在網(wǎng)絡(luò )上傳輸,以此完成語(yǔ)音通話(huà)的業(yè)務(wù),是一種利用IP協(xié)議傳輸語(yǔ)音數據的、新興的通信技術(shù)。
隨著(zhù)我國三網(wǎng)融合的推進(jìn),VoIP與IPTV(Interactive Personality TV)一起成為這一龐大工程的重要標志。而目前手機中,VoIP的解決方案并不是很多,特別是在Google公司推出的開(kāi)源操作系統Android中。盡管該系統推出時(shí)間不長(cháng),憑借強大的功能、良好的界面、廣泛的商業(yè)支持,為用戶(hù)帶來(lái)很好的體驗,成為2010年最熱門(mén)且發(fā)展最快的手機操作系統。因此,兩者的結合,將是未來(lái)的發(fā)展趨勢。本文提出一種基于PJSIP協(xié)議棧的解決方案,通過(guò)Android本地開(kāi)發(fā)工具(NDK),實(shí)現一個(gè)高效、穩定且功能強大的VoIP系統,具有較高的參考和實(shí)用價(jià)值。
1 VoIP設計方案
1.1 設計目標
本方案所設計的系統包含以下功能:首先,完成用戶(hù)終端(如手機)中語(yǔ)音數據的采集與編碼,并通過(guò)RTP(實(shí)時(shí)傳輸協(xié)議)/RTCP(RTP傳輸控制協(xié)議)進(jìn)行傳輸和控制;其次,完成會(huì )話(huà)的控制,包括會(huì )話(huà)的注冊、發(fā)起、維護與結束、注銷(xiāo)等;再次,作為一個(gè)應用程序,必須實(shí)現一個(gè)良好的界面,與用戶(hù)交互;最后,作為一個(gè)開(kāi)放系統,需具有良好的可擴展性。
1.2 總體設計
本方案基本上符合Android的NDK框架的開(kāi)發(fā)規范,將系統分為4層,如圖1所示。最上層為應用層,該層將在A(yíng)ndroid SDK的框架內,采用Java語(yǔ)言來(lái)實(shí)現;第二層為JNI層,SIP協(xié)議棧有很多種實(shí)現,其中,采用C語(yǔ)言的SIP協(xié)議棧在效率、速度、系統占用方面有著(zhù)超越其他庫(如Java協(xié)議棧)的優(yōu)勢,因此,該方案將在第三層采用純C語(yǔ)言實(shí)現的PJSIP協(xié)議棧。為了讓Java應用層能調用協(xié)議棧層,在兩層之間需要一個(gè)銜接的橋梁,這就是JNI層。最后一層是驅動(dòng)層,這部分一般是由手機廠(chǎng)商來(lái)實(shí)現的,本文將不做重點(diǎn)介紹。
評論