<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于局域網(wǎng)的視頻聊天系統--蛙酷

基于局域網(wǎng)的視頻聊天系統--蛙酷

作者:邱超 丁建輝 陽(yáng)平 時(shí)間:2014-12-29 來(lái)源:電子產(chǎn)品世界 收藏
編者按:  摘要:隨著(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)的交互體驗。   1 引言   目前,社會(huì )所流行的聊天軟件所專(zhuān)注的問(wèn)題僅限于視頻效果和軟件盈利上,應用目的趨于商業(yè)化,而沒(méi)有真正從用戶(hù)的角度出發(fā)去設計開(kāi)發(fā)軟件,

  (5) Settings應用程序部分

本文引用地址:http://dyxdggzs.com/article/267433.htm

  這是自帶的一個(gè)應用程序,在手機的Settings中,它可以讓用戶(hù)手動(dòng)打開(kāi)或關(guān)閉功能。當用戶(hù)打開(kāi)功能后,它會(huì )自動(dòng)搜索周?chē)臒o(wú)線(xiàn)網(wǎng)絡(luò ),并以列表的形式顯示,供用戶(hù)選擇,默認會(huì )連接用戶(hù)上一次成功連接的無(wú)線(xiàn)網(wǎng)絡(luò )。這部分代碼位于./packages/apps/Settings/src/com/android/settings/wifi中。

  3.2 Wi-Fi執行過(guò)程

  3.2.1 從Settings中啟動(dòng)Wi-Fi

  當用戶(hù)按下Wi-Fi按鈕后,調用WifiEnabler的onPreferenceChange,再由WifiEnabler調用WifiManager的setWifiEnabled接口函數,通過(guò)AIDL,調用WifiService的setWifiEnabled函數,WifiService接著(zhù)向自身發(fā)送一條MESSAGE_ENABLE_WIFI消息,在處理該消息的代碼中做真正的使能工作:首先裝載WIFI內核模塊(該模塊的位置硬編碼為"/system/lib/modules/wlan.ko"), 然后啟動(dòng)wpa_supplicant(配置文件硬編碼為"/data/misc/wifi/wpa_supplicant.conf"),再通過(guò)WifiStateTracker啟動(dòng)WifiMonitor中的監視線(xiàn)程。

  當成功使能后,廣播發(fā)送WIFI_STATE_CHANGED_ACTION這個(gè)Intent通知外界Wi-Fi已經(jīng)成功使能。WifiEnabler創(chuàng )建的時(shí)候就會(huì )向注冊接收

  WIFI_STATE_CHANGED_ACTION,因此它會(huì )收到該Intent,從而開(kāi)始掃描。

  3.2.2 查找AccessPoint (AP)

  掃描的入口函數是WifiService的startScan,它往wpa_supplicant發(fā)送SCAN命令。當wpa_supplicant處理完SCAN命令后,它會(huì )向控制通道發(fā)送事件通知掃描完成, wifi_wait_for_event函數會(huì )接收到該事件,由此WifiMonitor中的MonitorThread會(huì )被執行處理這個(gè)事件,WifiStateTracker接著(zhù)廣播SCAN_RESULTS_AVAILABLE_ACTION這個(gè)Intent,WifiLayer注冊了接收SCAN_RESULTS_AVAILABLE_ACTION這個(gè)Intent,所以它的相關(guān)處理函數handleScanResultsAvailable會(huì )被調用,在該函數中拿到SCAN的結果(最終是往wpa_supplicant發(fā)送SCAN_RESULT命令并讀取返回值來(lái)實(shí)現的)。

  對每一個(gè)掃描返回的AP,WifiLayer會(huì )調用WifiSettings的onAccessPointSetChanged函數,從而最終把該AP加到GUI顯示列表中。

  3.2.3 連接AP

  當用戶(hù)在A(yíng)cessPointDialog中選擇好加密方式和輸入密鑰之后,再點(diǎn)擊連接按鈕,Android就會(huì )去連接這個(gè)AP。

  WifiLayer會(huì )先檢測這個(gè)AP是不是之前被配置過(guò),這個(gè)是通過(guò)向wpa_supplicant發(fā)送LIST_NETWORK命令并且比較返回值來(lái)實(shí)現的,如果wpa_supplicant沒(méi)有這個(gè)AP的配置信息,則向wpa_supplicant發(fā)送ADD_NETWORK命令來(lái)添加該AP,ADD_NETWORK命令返回一個(gè)ID,WifiLayer再用這個(gè)返回的ID作為參數向wpa_supplicant發(fā)送ENABLE_NETWORK命令,從而讓wpa_supplicant去連接該AP。

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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>