Android WIFI 無縫切換 小結(1)


最近在做一個項目,是一個公司的無線系統,包括網絡配置,服務器端,PC客戶端和ANdroid客戶端幾個部分。

我主要是是在前人的基礎上負責android端程序的編寫。

其中有一條需求是,在同一個ssid下不同bssid的無縫切換。

這個問題困擾了很久,知道現在也沒有很好的解決。。

拿到手的思路很簡單,當達到切換條件后,斷開當前連接AP,然后連接新的AP,然后進行重新認證。。目前主體思路也還是這樣沒變

第一個版本是監聽系統的rssi_changed_action廣播,比較當前連接的BSSID的RSSI值與相同SSID的最強信號,如果相差達到一定閾值,馬上進行切換動作;

用了一段時間后,發現這個系統廣播非常不穩定,不會每隔幾秒就發一次什么的,於是在第二個版本中換用了scanresult_avaible_action這個廣播,因為發現切換動作並不依賴某個特定廣播,而且scan_action相比較第一版的廣播穩定很多,基本上每隔3S就發一次。。

但在拔掉某個AP的測試環境下,時延還是很嚴重,於是就有了第三個版本,在監聽以上兩個廣播的基礎上,加上了電池電量變化廣播和每隔一秒發送一次的系統時鍾廣播,這兩個發送的頻率更高。

 

在現有情況下,感覺系統還不是很穩定,時延有時還是會比較大。

晚上研究無線協議,找到一個802.11r,快速漫游協議。。這兩天好好研究下,以及該協議在Android平台的實現現狀。。

附上一個android社區對該協議的討論:http://code.google.com/p/android/issues/detail?id=17972

 

 ————————————————————————————————————————————————————

 (20140703)

今天又看到這這篇文章,突然想起上面的表述是有問題的。。之前做的並不是相同ssid下不同bssid的切換,而是在同一個ssid下有兩套不同的控制器,比如說Cisco一套,Motorola一套,然后實現在分屬於兩個不同控制器下的bssid進行切換。

所以上面提到的11r協議可能並不能很好的解決這個問題,目前我做到的也就是1)監聽不同bssid的rssi、2)比較各收到的rssi的強弱、3)判斷是否屬於同一套控制器,若相同則不作處理;若不是,則在達到切換條件下手動進行切換。

(/20140703)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM