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