基于局域網(wǎng)的視頻聊天系統--蛙酷
摘要:隨著(zhù)無(wú)線(xiàn)網(wǎng)絡(luò )的發(fā)展,支持Wi-Fi的電子產(chǎn)品越來(lái)越多,與Wi-Fi綁定的應用也層出不窮,但還沒(méi)有一款基于Wi-Fi的視頻聊天軟件能夠滿(mǎn)足人們的日常交互需求,因此我們開(kāi)發(fā)出“蛙酷”,一款基于局域網(wǎng)的視頻聊天軟件,能夠在局域網(wǎng)覆蓋下實(shí)現隨時(shí)隨地視頻聊天和視頻會(huì )議,且無(wú)需耗費任何手機數據流量,真正給用戶(hù)帶來(lái)了隨聊隨見(jiàn)的交互體驗。
本文引用地址:http://dyxdggzs.com/article/267433.htm1 引言
目前,社會(huì )所流行的聊天軟件所專(zhuān)注的問(wèn)題僅限于視頻效果和軟件盈利上,應用目的趨于商業(yè)化,而沒(méi)有真正從用戶(hù)的角度出發(fā)去設計開(kāi)發(fā)軟件,由于視頻通訊不同于文字通訊和語(yǔ)言通訊,傳輸信息量大且十分耗費數據流量,導致用戶(hù)想用能用卻不敢用?;谶@一點(diǎn),我們提出了“蛙酷”,這是一款基于無(wú)線(xiàn)局域網(wǎng)的視頻聊天軟件,主要包含在線(xiàn)視頻聊天和視頻組播功能,用戶(hù)可以使用這款軟件與同一局域網(wǎng)內的任意一位好友隨時(shí)隨地進(jìn)行視頻通訊,也可邀請多名好友開(kāi)啟在線(xiàn)視頻會(huì )議。這款軟件最大的特性在于我們能夠通過(guò)訪(fǎng)問(wèn)局域網(wǎng)的方式來(lái)滿(mǎn)足各種交互需求且節省數據流量,適用于高校、企業(yè)、商城以及其它有無(wú)線(xiàn)局域網(wǎng)覆蓋的各大場(chǎng)所,這款軟件簡(jiǎn)單實(shí)用,穩定的后臺服務(wù)能夠讓用戶(hù)隨時(shí)隨地與好友進(jìn)行視頻通訊。
2 成果展示及介紹
2.1 主界面
如圖1所示。
2.2 系統架構
(1)視頻聊天 一方客戶(hù)端發(fā)出邀請(發(fā)送IP及端口),然后服務(wù)器在此局域網(wǎng)內檢索該IP地址,一旦檢索到即鎖定IP并發(fā)送端口號,接收端接收到邀請后,即做出應答(接受/拒絕),拒絕則關(guān)閉連接,接受則開(kāi)啟連接并互相發(fā)送數據給對方,實(shí)現視頻聊天。
(2)視頻會(huì )議 由發(fā)送端客戶(hù)端開(kāi)啟視頻會(huì )議號(組播IP地址段),開(kāi)啟時(shí)即開(kāi)始發(fā)送數據到服務(wù)器端(不管有沒(méi)有終端客戶(hù)端連入),開(kāi)啟組播后,多個(gè)終端客戶(hù)端可以通過(guò)加入同一組播IP而開(kāi)始接收發(fā)送端發(fā)送的數據信息,實(shí)現視頻會(huì )議。
3 詳細分析硬件與軟件模塊
3.1 Wi-Fi
3.1.1 Wi-Fi程序模塊
(1)開(kāi)源庫wpa_supplicant
一個(gè)開(kāi)源庫,加入到Android源碼中,經(jīng)過(guò)修改后成為Android實(shí)現Wi-Fi功能的基礎。它的代碼位于./external/wpa_supplicant文件夾中,主要用C和C++寫(xiě)成,實(shí)現了從上層接到命令后,發(fā)送給硬件驅動(dòng)程序,接著(zhù)操作硬件完成需要的操作,這里是通過(guò)socket來(lái)與硬件驅動(dòng)進(jìn)行通信的。
(2)硬件驅動(dòng)程序
前文所說(shuō)的wpa_supplicant,與之通信的硬件驅動(dòng)的代碼位于./hardware/libhardware_legacy/wifi/wifi.c中。
(3)JNI部分
首先簡(jiǎn)要介紹一下JNI,JNI是JavaNativeInterface的縮寫(xiě),它實(shí)現了Java代碼與其他代碼進(jìn)行交互,使得在Java虛擬機中運行的Java代碼能夠與用其他語(yǔ)言編寫(xiě)的應用程序和庫進(jìn)行交互。在Android中,JNI可以讓Java程序調用C程序。
與Wi-Fi相關(guān)的JNI代碼位于./frameworks/base/core/jni/android_net_wifi_Wifi.cpp中。
(4)Wi-Fi API部分
這部分源代碼使用Java完成了對Wi-FiAPI的封裝,使應用程序可以使用Wi-Fi功能,它們位于frameworks/base/services/java/com/android/server/和frameworks/base/wifi/java/android/net/wifi/中。
c++相關(guān)文章:c++教程
評論