基于局域網(wǎng)的視頻聊天系統(tǒng)--蛙酷
3.2.4 配置IP地址
本文引用地址:http://2s4d.com/article/267433.htm當(dāng)wpa_supplicant成功連接上AP之后,它向控制通道發(fā)送事件通知連接上AP了, wifi_wait_for_event函數(shù)接收到該事件, WifiMonitor中的MonitorThread被執(zhí)行來處理這個事件,WifiMonitor再調(diào)用WifiStateTracker的notifyStateChange,WifiStateTracker接著往自身發(fā)送EVENT_DHCP_START消息啟動DHCP去獲取IP地址,然后再廣播發(fā)送NETWORK_STATE_CHANGED_ACTION這個Intent。
WifiLayer注冊了接收NETWORK_STATE_CHANGED_ACTION這個Intent,所以它的相關(guān)處理函數(shù)handleNetworkStateChanged會被調(diào)用,當(dāng) DHCP拿到IP地址之后,會再發(fā)送EVENT_DHCP_SUCCEEDED消息,WifiLayer處理EVENT_DHCP_SUCCEEDED消息, 會再次廣播發(fā)送NETWORK_STATE_CHANGED_ACTION這個Intent,這次帶上完整的IP地址信息。至此為止,整個連接過程完成。
3.3 相機
Android的Camera包含取景器(viewfinder)和拍攝照片的功能。目前Android發(fā)布版的Camera程序功能比較簡單,其程序的架構(gòu)分成客戶端(Client)和服務(wù)器(Server)兩個部分,它們建立在Android的進程間通訊Binder的結(jié)構(gòu)上。
以開源的Android為例,Camera的代碼主要在以下的目錄中:
Camera的JAVA程序的路徑:
packages/apps/Camera/src/com/android/camera/
其中Camera.java是主要實現(xiàn)的文件
frameworks/base/core/java/android/hardware/Camera.java
這個類是和JNI中定義的類是一個,有些方法通過JNI的方式調(diào)用本地代碼得到,有些方法自己實現(xiàn)。
Camera的JAVA本地調(diào)用部分(JNI):
frameworks/base/core/jni/android_hardware_Camera.cpp
這部分內(nèi)容編譯成為目標是libandroid_runtime.so。
主要的頭文件在以下的目錄中:
frameworks/base/include/ui/
Camera底層庫在以下的目錄中:
frameworks/base/libs/ui/
這部分的內(nèi)容被編譯成庫libui.so。
Camera服務(wù)部分:
frameworks/base/camera/libcameraservice/
這部分內(nèi)容被編譯成庫libcameraservice.so。
為了實現(xiàn)一個具體功能的Camera,在最底層還需要一個硬件相關(guān)的Camer庫(例如通過調(diào)用video for linux驅(qū)動程序和Jpeg編碼程序?qū)崿F(xiàn)),而這個庫最終將會被Camera的服務(wù)庫libcameraservice.so調(diào)用。
4 實驗結(jié)果與比較
這款視頻聊天軟件——“蛙酷”能夠穩(wěn)定地完成各項功能,可以完美地實現(xiàn)視頻聊天和視頻會議等功能,經(jīng)過反復(fù)測試以及調(diào)試后,程序中的BUG也已基本得到有效解決。一開始在與其他視頻聊天平臺的對比測試中,我們發(fā)現(xiàn)“蛙酷”視頻傳輸存在延遲,延遲時間大約為0.8至1.0秒,視頻畫面呈現(xiàn)出較多的噪點,在較差的網(wǎng)絡(luò)環(huán)境下也頻繁出現(xiàn)視頻畫面卡頓的現(xiàn)象。對于這一系列問題,在查閱相關(guān)資料后,我們發(fā)現(xiàn)主要問題在于我們沒有選擇最佳的視頻解碼,還有一個問題是我們沒有對網(wǎng)絡(luò)傳輸進行優(yōu)化。在進行了一系列優(yōu)化后,視頻效果已經(jīng)顯著改善,達到視頻聊天標準。
參考文獻:
[1] Android實時視頻采集——camera預(yù)覽采集[EB/OL].http://www.cnblogs.com/skyseraph/archive/2012/03/26/2418665.html
[2] Android之SurfaceView實現(xiàn)視頻播放[EB/OL].http://www.cnblogs.com/devinzhang/archive/2012/02/03/2337576.html
[3]秦延?xùn)|.基于UDP的可靠性數(shù)據(jù)傳遞算法研究與實現(xiàn),信息科學(xué)與技術(shù)學(xué)院[EB/OL].http://www.doc88.com/p-6611634997913.html
[4] Android開發(fā)之socket編程UDP和TCP通信實現(xiàn)[EB/OL].http://wenku.baidu.com/link?url=W5m0SW-NBCgNlgjfIR0Gorh-zv7qfqJ6WaaVEehMQJCqNSs6DX0VuYMOup9IPHo4O39sGBUwSoGQ11OOVng9uuu96-o_L2lUgSAY-IsLD3W
[5] Android Wi-Fi獲取組播[EB/OL].http://www.apkbus.com/android-16351-1-1.html
[6] IP組播技術(shù)及其應(yīng)用[EB/OL].http://wenku.baidu.com/link?url=Q4egZm_VLHn28au6JlEM6R-nki8AndPchGqKwGMRFsmfUT34E3bAtkzd_PQzo90otP3yh-5dfNMatoB_d8vnX-FVZUS7uESaIaEINr4nf9K
[7] Android Wi-Fi 工作原理[EB/OL].http://blog.csdn.net/sunxingzhesunjinbiao/article/details/22822083
c++相關(guān)文章:c++教程
評論