編輯: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
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
RoboGuice最近推出了2.0版本。和1.1相比具有:提高了穩定性支持Fragment更簡潔易用但由於RoboGuice2 不完全向下兼容RoboGuice1.1,因
微軟已經對Android平台上的Outlook應用進行了升級,除了修復消費者反饋的大量BUG之外還對收件箱的功能進行了強化,為消費者提供未讀和已標記信息的篩選功能,此外還
獲取網絡連接狀態隨著3G和Wifi的推廣,越來越多的Android應用程序需要調用網絡資源,檢測網 絡連接狀態也就成為網絡應用程序所必備的功能。Android平台提供了C
蘋果WWDC大會結束後,著名Android論壇Droid-life發布了iOS 7與Android4.2操作系統功能對比的文章,作者作為Android 粉絲,稱谷歌早已懶