【Tech-Android-View】Android 4.1API WifiManager新特性

Android4.0新特性的API

    public class---

        WifiP2pManager

                 ------extends Object

Wi-Fi Direct服务发现

   Wi-Fi DirectAPI在Android 4.1中被增强以支持在WifiP2pManager中的预先关联服务发现。这允许在连接之前使用Wi-Fi Direct通过服务发现和筛选周围的设备。与此同时,Network ServiceDiscovery允许你在一个已存在并保持连接的网络上发现一个服务(例如一个本地的Wi-Fi网络)。


  为了广播你的应用作为一个Wi-Fi上的服务,以便于其他设备能够发现并连接你的应用,需要调

addLocalService()方法并传输一个[7]对象。这个对象描述了你的应用服务。


  为了通过Wi-Fi开始发现附近的设备,首先你应当决定使用Bonjour还是Upnp实现通信。如果使用Bonjour,首先要用setDnsSdResponseListeners()设置好一些回调监听器。这个方法需要WifiP2pManager.DnsSdServiceResponseListener[8]两个作参数。如果使用Upnp,则要调用setUpnpServiceResponseListener()。这个方法需要一个[9]作为参数。

  在你开始发现本地设备上的服务之前,你也需要调用[10]方法。当你传递给这个方法的接口[11]收到一个成功的回调,接着你可以通过调用[12]开始探索在本地设备上的服务。

  当本地服务被发现,你会收到一个回调,来自WifiP2pManager.DnsSdServiceResponseListener或者WifiP2pManager.UpnpServiceResponseListener,这个取决于你注册使用的是Bonjour还是Upnp。收到的回调都会包含一个WifiP2pDevice对象,代表了对应的设备。

 

1.    这个类的API是为了管理点对点P2PWI-FI热点的。这将会使一个应用发现可以的热点,并且和热点建立连接,还可以查询热点。当一个p2p通过wifi进行连接的时候,你的设备将会继续maintain theuplink connection overmobile或者其他的可以用的网络连接在你的设备上。

2.     API是同步和响应于来自通过应用监听器回调方法的应用请求,这个应用在对p2p进行操作的之前必须先去初始化通过一个inintialze(ContextLoop,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.  一个应用可以通知广播一个基于UpnpBonjour的通信协议的服务通过调用一个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_STATE and CHANGE_WIFI_STATE to perform any further peer-to-peer operations. Get aninstance of this class by callingContext.getSystemService(Context.WIFI_P2P_SERVICE).

 

你可能感兴趣的:(【Tech-Android-View】Android 4.1API WifiManager新特性)