您好,登錄后才能下訂單哦!
當沒有 Wi-Fi 訪問點或互聯(lián)網(wǎng)訪問時,Android* 應用可能需要對等連接在兩臺或多臺 Android* 設(shè)備之間建立連接。 比如,文件共享應用和多人游戲。
該功能可使用 NFC、藍牙或 Wi-Fi 對等技術(shù)來實施。 特定案例中的首選技術(shù)需要根據(jù)所需的距離、連接速度、功耗和獨特的技術(shù)特性來決定。
本文將對 Wi-Fi 對等技術(shù)進行評估。 Wi-Fi 對等(P2P)支持具備適當應用的 Android 4.0 或更高版本在沒有接入點的情況下通過 Wi-Fi 彼此連接。 Android Wi-Fi P2P 框架符合 Wi-Fi Direct 標準。 一般情況下,Wi-Fi Direct 支持更快的速度和更遠的距離,但是所需的功耗比藍牙連接高。上一章研究了Android* Bullet 物理引擎移植至英特爾 架構(gòu)詳解
本文將重點介紹在兩臺 Android 設(shè)備之間建立套接字連接的基本步驟。
如要使用 Wi-Fi P2P,應用必須將最低軟件開發(fā)套件版本正確設(shè)置為 14,并在 AndroidManifest.xml 文件中申請如下許可:
ACCESS_WIFI_STATE
CHANGE_WIFI_STATE
ACCESS_NETWORK_STATE
CHANGE_NETWORK_STATE
INTERNET
應用需要調(diào)用 WifiP2pManager 對象的 initialize() 方法,以使用 Wi-Fi P2P 框架注冊應用。 這種方法必須在執(zhí)行 Wi-Fi P2P 操作前調(diào)用。
應用需要為以下 Wi-Fi P2P intent 創(chuàng)建和注冊廣播接收器:
WIFI_P2P_CONNECTION_CHANGED_ACTION
WIFI_P2P_PEERS_CHANGED_ACTION
WIFI_P2P_STATE_CHANGED_ACTION
WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
執(zhí)行以上步驟后,應用將能夠在 WifiP2pManager 對象中調(diào)用 Wi-Fi P2P 方法,并接收 Wi-Fi P2P intent。 大部分的 WifiP2pManager 方法是異步的,因此開發(fā)人員需要向每種方法調(diào)用提供 listener 來獲取狀態(tài)和結(jié)果。
如要發(fā)現(xiàn)可用的 Wi-Fi P2P 設(shè)備,需要調(diào)用 WifiP2pManager 對象的 discoverPeers() 方法。 發(fā)現(xiàn)流程將會一直執(zhí)行,知道設(shè)備打開 Wi-Fi P2P 連接或調(diào)用 stopPeerDiscovery 方法。
當應用接收 WIFI_P2P_PEERS_CHANGED_ACTION intent 時,使用 WifiP2pManager 對象的 requestPeers()方法將能夠獲得發(fā)現(xiàn)的對等設(shè)備列表。
如要連接獲取的對等設(shè)備列表中的某臺設(shè)備,需要準備包含完整 deviceAddress 字段的 WifiP2pConfig對象,并調(diào)用 WifiP2pManager 對象的 connect() 方法。
成功連接后,通過調(diào)用 WifiP2pManager 對象的 requestConnectInfo() 方法獲取設(shè)備 IP 地址。
然后,使用 IP 地址創(chuàng)建一個 Socket 和 ServerSocket 對象。 使用標準的套接字接口執(zhí)行通信。
以下是調(diào)用方法并接收 intent 以準備為 Wi-Fi P2P 設(shè)備建立連接的圖表:
如要在兩臺 Android 設(shè)備之間建立 Wi-Fi P2P 連接,至少需要執(zhí)行這些步驟。 應用應為所有 Wi-Fi P2P intent 和 listener 實施處理程序,以充分響應不同的事件,如連接丟失或 Wi-Fi 禁用。 請參閱 Android 文檔,了解更多信息。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。