《Android WifiP2pManager 官方API文档翻译》由会员分享,可在线阅读,更多相关《Android WifiP2pManager 官方API文档翻译(3页珍藏版)》请在金锄头文库上搜索。
1、WifiP2pManagerjava.lang.Object .wifi.p2p.WifiP2pManager这个类提供了 API 来管理 Wi-Fi 点对点连接。这使得应用可以发现存在的 P2P 点、建立与其他 P2P 点的连接以及搜索获得所有 P2P 点的名单。当一个通过使 用 wifi 的 P2P 连接生成时,设备继续保持着在移动或其他任何可用的网络设备上 的互联网链接。这个 API 是以异步方式来响应一个应用通过该应用提供的监听回调(listener callbacks)。 在做任何 p2p 操作前,应用需要使用 initialize(Context, Looper, WifiP2pM
2、anager.ChannelListener) 来做初始化。大部分调用的应用需要 WifiP2pManager.ActionListener 实例来接收回 调 onSuccess() or onFailure(int)。这个动作返回了初始化动作是成功还是 失败的标识,如果失败,则原因可能是如下三种的其中一种: ERROR , P2P_UNSUPPORTED , BUSY。应用程序可通过 discoverPeers(WifiP2pManager.Channel, WifiP2pManager.ActionListener)来初始化 p2p 点搜索。应用的一个初始化 完成的搜索请求在设备开始连接到
3、一个 P2P 点、形成一个 P2P 组或者是一个明确 的指令(stopPeerDiscovery(WifiP2pManager.Channel, WifiP2pManager.ActionListener)之前都是保持存活的。 应用程序可以 通过监听 WIFI_P2P_DISCOVERY_CHANGED_ACTION 来知晓一个 p2p 点对点搜 索是在运行还是已经停止。另外,, WIFI_P2P_PEERS_CHANGED_ACTION 可表 明搜索到的 p2p 点名单是否已变化。应用程序可通过 requestPeers(WifiP2pManager.Channel, WifiP2pMana
4、ger.PeerListListener)来获取当前搜索到的所有 p2p 点的名 单。通过使用 device list 配合方法 onPeersAvailable(WifiP2pDeviceList)来 判断是否存在可见。应用程序通过connect(WifiP2pManager.Channel, WifiP2pConfig, WifiP2pManager.ActionListener)来初始化一个连接到 p2p 点的请求,详 细的配置信息可通过WifiP2pConfig 来获取。如果想与传统不支持 p2p 的设备 通信,应用程序可通过 createGroup(WifiP2pManager.Ch
5、annel, WifiP2pManager.ActionListener)创建一个组从而创建一个访问接入点,这 个接入点可通过 requestGroupInfo(WifiP2pManager.Channel, WifiP2pManager.GroupInfoListener)来获取到。在成功的创建形成一个组后(通过 createGroup(WifiP2pManager.Channel, WifiP2pManager.ActionListener)或者 connect(WifiP2pManager.Channel, WifiP2pConfig, WifiP2pManager.ActionList
6、ener),可使用 requestConnectionInfo(WifiP2pManager.Channel, WifiP2pManager.ConnectionInfoListener)来获取连接信息的详细情况。 连接信息 WifiP2pInfo 中包含了这个组的 owner 的地址 groupOwnerAddress 和一个标识了当前设备是否是这个组的 owner 的标志位 isGroupOwner 。一个 P2P 客户端因此可以套接字通信的方式来与组的 owner 来通信。使用 discoverPeers(WifiP2pManager.Channel, WifiP2pManager.Ac
7、tionListener), 应用可以找到周围的 p2p 点,但是并没 有好的方法找出哪些点可以去建立连接。举例说明,除非是建立了连接,否则一个 游戏程序是无法找出周围其他玩同样游戏的点。 预关联搜索服务的目的就是基于 运行的服务商来解决这个筛选 p2p 点问题的。使用预关联搜索服务,应用程序可以先于设备之间的连接建立前给予建议。当 前,基于 DNS 的搜索服务(Bonjour)和 Upnp 是支持的较高层的协议,可在 dns- sd.org 找到 Bonjour 资源,在 upnp.org 上找到 Upnp 资源。应用程序可通过调用 addLocalService(WifiP2pManage
8、r.Channel, WifiP2pServiceInfo, WifiP2pManager.ActionListener)注册一个 Upnp 或者 Bonjour 服务。当添加完一个本地的服务后,framwork 会在一个 p2p 连接建立之前自动的响应点搜索服务。调用 removeLocalService(WifiP2pManager.Channel, WifiP2pServiceInfo, WifiP2pManager.ActionListener)可以取消一 个本地服务,而clearLocalServices(WifiP2pManager.Channel, WifiP2pManager.
9、ActionListener) 可以用来清除所有的本地服务。应用程序可以通过调用 discoverServices(WifiP2pManager.Channel, WifiP2pManager.ActionListener)来查找那些支持 P2P 服务的设备,而在 初始化搜索之前,应用程序可使用 addServiceRequest(WifiP2pManager.Channel, WifiP2pServiceRequest, WifiP2pManager.ActionListener)来添加搜 索服务请求,使用removeServiceRequest(WifiP2pManager.Channel
10、, WifiP2pServiceRequest, WifiP2pManager.ActionListener)来清除某 个搜索服务请求或者使用 clearServiceRequests(WifiP2pManager.Channel, WifiP2pManager.ActionListener)来清除所有的搜索服务请求。而如果没 有服务请求保留,那么之前运行的搜索服务将停止。应用程序可以通过用于 Bonjour 的 setDnsSdResponseListeners(WifiP2pManager.Channel, WifiP2pManager.DnsSdServiceResponseListen
11、er, WifiP2pManager.DnsSdTxtRecordListener)或者用于Upnp 的 setUpnpServiceResponseListener(WifiP2pManager.Channel, WifiP2pManager.UpnpServiceResponseListener)设置监听回调来获得 搜索服务请求的结果。注意注意: 使用 initialize(Context, Looper, WifiP2pManager.ChannelListener) 需要注册权限 ACCESS_WIFI_STATE和 CHANGE_WIFI_STATE 从而来完成更多的操作。可通过调用 Context.getSystemService(Context.WIFI_P2P_SERVICE) 来获取这个 类的实例。