`

转:WifiP2pManager讲解

    博客分类:
  • P2P
 
阅读更多
1.    这个类的API是为了管理点对点P2PWI-FI热点的。这将会使一个应用发现可以的热点,并且和热点建立连接,还可以查询热点。当一个p2p通过wifi进行连接的时候,你的设备将会继续maintain the uplink connection overmobile或者其他的可以用的网络连接在你的设备上。
2.     这API是同步和响应于来自通过应用监听器回调方法的应用请求,这个应用在对p2p进行操作的之前必须先去初始化通过一个inintialze(Context ,Loop,Wifip2pManager.chanekListener)的方法。
Context:一个源的上下文,Looper:返回一个被调用的回调的Looper。
3.     更多的APP调用需要一个wifip2pManager.changeListener实例去得到两个回调的方法OnSuccess()andOnFailure(int).这两个方法说明了是否成功实例化了这一行为(类)。如果是失败的话,原因可能是一个错误或者不支持或者正忙。
4.     一个应用可以初始化被发现的热点是通过discoverPeers(Wifip2pManager.channel,Wifip2pManager.ActionListener). 一个已经被初始化的Peer来自从设备开始连接热点后应用在活动期间的请求,会组成一个Peer组或者这里有一个明确的stopPeerDiscovery(Wifip2pManager.channel,Wifip2pManager.ActionListen),Apps可以监听wifi_p2p_discovery_changed_Action去知道一个p2p是否在运行或者停止工作,通常地,wifi_p2p_peers_changed_action可以说明peer列表的改变。
5.     当一个应用程序需要去取得当前的peer列表,可以通过调用requestPeers(wifip2pmanager.channnel,wifip2pManager.PeerListListener),当peer列表是可以用的onpeerAvailable(wifip2pDeviceList)被设备列表调用。
6.     一个应用可以初始化一个请求peer的连接通过connect(wifip2pManager.channel,wifip2pConfig,wifip2pManager.ActionListemer).你可以去查看wifip2pConfig 为了详细地去设置配置。为了和附近的不支持p2p的Wifi设备进行通信,一个应用可以产生一个使用createGroup(wifip2pmanger.chanenl,wifip2pmanager.ActionListener)去产生一个可以访问的并可以通过requsetGroupInfo(wifip2pManager.Channel,wifip2pManager.GroupInfiListener)的热点的组。
7.     一个成功通过createGroup(wifip2pmanger.chanenl,wifip2pmanager.ActionListener)或者通过connect(wifip2pmanger.chanenl,wifip2pConfig,wifip2pmanager.ActionListener)形成的组,使用requestConnectionInfo(wifip2pmanger.chanenl,wifip2pmanager.ActionListener)去得到uoge详细的连接信息。这个wifip2pInfo连接信息包含了拥有者组的地址groupOwnerAddress 和一个去说明是非当前设备是这个p2p组的拥有者的标志isGroupOwer,一个p2p的客户端因此可以和p2p组拥有者通过一个socket连接进行通信。
8.     通过peer发现点使用discoverPeer(wifip2pmanger.chanenl,wifip2pmanager.ActionListener),一个应用可以发现附近的应用,但不一个很好的方法去计算那个peer应该去建立一个连接。E.g:如果一个乐于搜索附近的peer是否和自己一样运行同样游戏的游戏应用,它无法找出直到连接被建立之后。
9.     伴随着pre-association服务于discovery,一个应用可以通知一个在两个设备上建立了热点通信的热点应用的服务。目前,基于DNS发现的服务和自动端口映射是更高级OSI的高层协议。获得零配置联网资源在dns-sd.org和自动端口映射资源在的列子:一个视频应用可以发现有能力的自动端口映射热点在去建立wifip2p连接设备。
10.  一个应用可以通知广播一个基于Upnp或Bonjour的通信协议的服务通过调用一个addLocalService(wifip2pManager.Channel,wifip2pManagerInfo,wifip2pManager.ActionListener).的方法。在一个本地的服务增加后,framework会自动响应给一个peer应用发现优先去建立一个p2p连接。调用removeLocalService(wifip2pManager.Channel,wifip2pManagerInfo,wifip2pManager.ActionListener)可以移除一个本地服务或者利用clear(wifip2pManager.Channel,wifip2pManagerInfo,wifip2pManager.ActionListener),清除所有的服务。
11.  一个应用搜索一个支持某种服务的热点设备可以通过调用discoverservices().优先去初始化一个发现,应用可以增加业务请求通过调用addServiceRequest()方法,移除这个业务请求用removeServiceRequest()或者清理所有的请求通过调用clearservicerRequest().当没有业务请求被记录,一个之前正在运行的服务将会被停止,用会得到通知在为业务请求设置了监听器的话。setDnsSdResponseListeners(WifiP2pManager.Channel,WifiP2pManager.DnsSdServiceResponseListener,WifiP2pManager.DnsSdTxtRecordListener)for Bonjour or setUpnpServiceResponseListener(WifiP2pManager.Channel,WifiP2pManager.UpnpServiceResponseListener) for Upnp.
12.  提醒:注册一个应用处理者利用initialize()的方法是有权限限制的 要在配置的文件中声明权限。permissionsACCESS_WIFI_STATEandCHANGE_WIFI_STATE to perform any further peer-to-peer operations. Get aninstance of this class by callingContext.getSystemService(Context.WIFI_P2P_SERVICE).
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics