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