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設備
連接到其中一臺設備
注意全是異步操作,註冊回調函數來得到結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.