Wifi P2p連接步驟整理

原文:http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html
標題:Creating P2P Connections with Wi-Fi

剛開始看P2p連接的時候,感覺頭緒很多,步驟很亂,弄不清楚來龍去脈。現在用自己的話理了一下。


P2P連接步驟

     設置訪問wifi的許可

     創建一個Intent過濾器A,接收如下信息
          WIFI_P2P_STATE_CHANGED_ACTION     Indicates whether Wi-Fi P2P is enabled
          WIFI_P2P_PEERS_CHANGED_ACTION     Indicates that the available peer list has changed.
          WIFI_P2P_CONNECTION_CHANGED_ACTION     Indicates the state of Wi-Fi P2P connectivity has changed.
          WIFI_P2P_THIS_DEVICE_CHANGED_ACTION     Indicates this device's configuration details have changed.

     創建本線程到WifiP2p框架的通道A

     創建一個接收器A,使用前面提及的過濾器A

     在Activity的onResume()中掛入接收器A,在onPause()中取消接收器A

     ~~~~~~ 準備工作結束,下面啓動掃描 ~~~~~~

     調用P2pManger的discoverPeers,啓動掃描。在其中傳入前面的通道,和一個監聽器A,用於監聽是否成功啓動掃描任務(而不是有沒有掃描到某個設備)

     ~~~~~~ 下面接收掃描結果 ~~~~~~~~~~~~~

     創建PeerListListener接口的實例A,在接口函數中接收掃描到的設備列表

     修改前面的接收器A,使其在收到WIFI_P2P_PEERS_CHANGED_ACTION時調用requestPeers(),在其中傳入實例A和通道A

     疑問:不知道何時會調用實例A,需要自己檢測嘛?

     ~~~~~~ 準備連接到一個peer ~~~~~~

     創建一個WifiP2pConfig配置A,在裏面填入某個peer的信息

     調用connect()函數,在其中傳入通道A、配置A、一個監聽器B,用於監聽是否成功啓動p2p握手任務(而不是有沒有最終握到手)

     創建WifiP2pManager.ConnectionInfoListener接口的實例B,在接口函數onConnectionInfoAvailable()中獲取InetAddress地址和小組的owner信息

     再次返回到前面的接收器A,使其在收到WIFI_P2P_CONNECTION_CHANGED_ACTION時調用requestConnectionInfo(),在其中傳入實例B和通道A

     坐等接口函數onConnectionInfoAvailable()被調用,其後可以根據InetAddress建立socket等連接


P2p連接總結

     一共是三步:
          啓動p2p掃描
          接收掃描結果,內含附近p2p設備
          連接到其中一臺設備

     注意全是異步操作,註冊回調函數來得到結果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章