# 研究背景android
Wifi P2P (peer to peer):定義爲 Wifi 點對點,也叫 Wifi 直連(Wifi Direct),它是 Wifi Display(投屏) 應用的技術基礎。ios
使用 WLAN 直連 (P2P) 技術,可讓具有相應硬件的 Android 4.0(API 級別 14)或更高版本設備在沒有中間接入點的狀況下,經過 WLAN 進行直接互聯。使用這些 API,您能夠實現支持 WLAN P2P 的設備間相互發現和鏈接,從而得到比藍牙鏈接更遠距離的高速鏈接通訊效果。對於多人遊戲或照片共享等須要在用戶之間共享數據的應用而言,這一技術很是有用。
WiFi Direct是指容許無線網絡中的設備無需經過無線路由器便可相互鏈接。其原理與藍牙技術相似,這種標準容許無線設備以點對點形式互連。而更爲重要的是,WiFi Direct技術容許一個WiFi設備同時創建多個無線鏈接,這是目前不少新形態WiFi應用最關鍵的技術。git
WiFi Direct是一種P2P的無線互聯技術,它所創建的網絡是一種改進型的adhoc網絡,採用無線通信模式。github
WiFi兩種網絡模式:Infrastructure Mode 和Ad Hoc Mode.安全
WiFi Direct主要解決了物理層的鏈接問題,包括設備發現和服務發現等。相關技術有NFC和DLNA。服務器
WiFi Direct其餘特性:微信
Miracast依賴的Wi-Fi技術項有:網絡
上述的Wi-Fi技術中,絕大部分功能由硬件廠商實現。而在Android中,對Miracast來講最重要的是兩個基礎技術:架構
說明:根據官方的demo,整理成Andorid Studio中可編譯的項目,並添加測試用例。app
代碼及測試apk請點擊:WiFiDirectDemo
官方文檔:WLAN 直連(對等鏈接或 P2P)概覽
官方源碼連接:WiFiDirectDemo
測試安裝包:
在apk目錄下,文件名爲:wifidirectDemo.apk
。
測試用例:
測試以前,記得首先打開手機WiFi,不然部分手機可能出現閃退的問題。
設備支持必要條件:開啓WiFI並容許獲取定位權限。
如下爲五種測試場景:
兩個手機鏈接WLAN熱點:如Smart(2.4G/5G)
,在同一個網絡下。
運行結果:兩個手機能正常通訊,能正常收發圖片。
一個手機鏈接WLAN熱點:如Smart-Slim(5G)
,另外一個手機鏈接Smart(2.4G/5G)
。
運行結果:兩個手機能正常通訊,能正常收發圖片。
一個手機鏈接4G網絡虛擬的人個熱點
,一個手機鏈接Smart(2.4G/5G)
。
運行結果:兩個手機能正常通訊,能正常收發圖片。
運行結果:兩個手機能正常通訊,能正常收發圖片。
同上述四種測試場景。
小結:只要兩端都打開wifi,不管連的是否同一個網絡,均可以鏈接上並收發圖片。
異常狀況:
有時候會出現搜索不到的狀況,須要多試幾回才能搜索成功。另外須要Rom取消發送邀請、確認配對鏈接彈窗。
Multipeer connectivity是一個使附近設備經過Wi-Fi網絡、P2P Wi-Fi以及藍牙我的局域網進行通訊的框架。互相連接的節點能夠安全地傳遞信息、流或是其餘文件資源,而不用經過網絡服務。
此框架是在iOS7之後推出,旨在替代GameKit下的GKPeerPickerController通訊。
經過此框架咱們能夠直接鏈接同一網絡下的設備,讓其直接進行相似微信,qq那樣的即時通信效果。
使用場景:
如何在iPhone移動設備上使用Wi-Fi Direct功能
https://stackoverflow.com/que...
alljoyn(目前只找到Android 項目services-simulators
,iOS端沒有找到 )
AllJoyn,由高通公司主導的高通創新中心(Qualcomm Innovation Center)所開發的開放源代碼專案,主要用於近距離無線傳輸,透過Wifi或藍牙技術,進行定位與點對點檔案傳輸。
(Android端和iOS端都有相應的App。未找到開源的項目)
FireChat,是一個專門用於手機的APP,由開放花園公司開發。它能使智能手機在沒有網絡存取時,經由無線網狀網絡的藍牙、Wi-Fi,或蘋果公司的多點連線(Multipeer Connectivity)對等網絡架構連線。
Mobile peer-to-peer mesh networking library.Integrates into iOS and Android apps and works over Wi-Fi and Bluetooth.
重點對udark進行Demo驗證,驗證後發現存在如下問題:
Android 端:
能夠看到底層源碼(只能經過implementation 'io.underdark:underdark:1.0.12'
查看jar包),底層代碼初步判斷是基於藍牙和WiFI(NSD)混合模式實現。可是鏈接成功或是失敗,尋找緣由時,因爲沒有文檔接口說明很差定位問題。
iOS端: 真機存在適配系統版本13及以上的適配問題,目前只能在iOS模擬器上跑通Demo。代碼不開源,沒法看到鏈接原理,沒法定位問題。
文檔:
兩端沒有接口文檔說明,開源做者也沒法進一步聯繫。
結論:
該開源項目暫時不能在項目中運用,須要考慮其餘方向。
最後,若是你看到了此文,對Wifi P2P及跨平臺通訊研究感興趣,歡迎交流。
Android 10.0相關權限的變動(使用WiFi Direct必須打開定位)
Android 實現無網絡傳輸文件2(wifi熱點)
WifiDirect (WIFIP2P) 最全最詳細,應用於智能硬件(智能家居,車機,無人機)等
Android Wi-Fi Display(Miracast)介紹(其中的第四種Miracast拓撲圖應用場景有用)