Android手機間無線互傳功能探索及實現


  年前研究了一下Android如何實現無線互傳的功能,寫了個小demo,最近無事,遂整理一下,與各位共享。前期調研發現,Android想要實現無線互傳有以下幾種技術:1,Bluetooth通行已久,簡單易用,無奈速度奇慢是硬傷;2,NFC,官方從API 9開始支持,但各廠商對此技術持觀望態度,比如我的三星就沒有相應NFC硬件,NFC適用近場少量數據傳輸,尚未測試數據量的表現,不過NFC所謂的近場對距離要求相當苛刻,基本是要貼着才能傳;3,WIFI-P2P,傳輸速度快,且P2P使得兩台設備互為C/S,傳輸可雙向進行,官方從API 14開始支持,考慮到目前API 14以下的設備保養量巨大,只能暫時放棄此技術。

  權衡一下,參考目前各類無線快傳軟件,最終確定使用Wifi AP方式,自測兼容API 8設備,傳輸速度快,但只能單向傳輸。Client端通過Wifi連接到Server端開啟的Wifi AP,連接成功后Client通過HttpEngine向Server發起Http請求,Server通過一個簡易的HttpServer向Client提供響應服務,下面用一個非標准的流程圖來大致示意一下方案流程:

   在上傳工程之前,對源代碼中幾個重要的類簡單解釋一下:

  Client端

  WifiApClientManager:對WifiManager的接口進行了封裝,以便於進行開啟、連接等操作

  HttpEngineLite:發起Http請求的"引擎"類

  WifiApClientRequest:請求抽象類,子類WifiApClientGetRecvListRequest,WifiApClientGetFileRequest分別表示獲取獲取Server端待傳文件列表請求及獲取Server端指定文件請求,使用HttpEngineLite執行具體操作

  NanoHTTPClient:提供獲取Server端待傳文件列表,獲取Server端指定文件等操作接口,使用線程池管理WifiApClientRequest

 

  Server端

  WifiApServerManager:對WifiManager的接口進行了封裝,以便於進行開啟AP,配置AP等操作

  WifiApServerUtil:定義了Android AP通用網關IP

  NanoHTTPD:此類為引用的開源代碼(A simple, tiny, nicely embeddable HTTP server in Java)

  NanoHTTPServer:NanoHTTPD的子類,實現其接口,返回相應的HttpResponse

 

  下面就是源代碼時間了,Read the fucking source code:

  http://files.cnblogs.com/zealotrouge/WifiAPDemo.7z

 


免責聲明!

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



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