本文译自:http://developer.android.com/guide/topics/connectivity/wifip2p.html
Wi-Fi Direct允许Android4.0(API Level 14)以后的设备,使用相应的硬件通过Wi-Fi直接的彼此相连,而不需要中间访问点。当每个都设备支持Wi-Fi Direct时,使用这些API就能够发现并连接另一个对等设备,而且通信距离要远远超过蓝牙连接。这对于要在用户间共享应用程序的数据是有用的,如多人游戏或图片共享应用程序等。
Wi-Fi Direct由以下主要部分组成:
1.
2.
3.
这个三个主要的API组件经常要一起使用。例如,给discoverPeers()方法提供一个WifiP2pManager.ActionListener监听器,以便能够用ActionListener.onSuccess()和ActionListener.onFailure()方法来获取通知。如果discoverPeers()方法发现对等设备列表发生改变,还会发出一个WIFI_P2P_PEERS_CHANGED_ACTION类型的Intent广播。
API概要
WifiP2pManager提供了一些用于跟设备的Wi-Fi硬件相互作用的方法,这些方法完成设备的彼此发现和连接。以下是操作是有效的:
表1.Wi-Fi Direct方法
方法 | 介绍 |
把应用程序注册到Wi-Fi框架中,它必须在调用其他Wi-Fi Direct方法之前调用。 | |
用指定的配置来启动设备间的对等连接。 | |
取消任何进行中的对等设备间连接请求。 | |
请求设备的连接信息。 | |
用当前设备作为组管理员来创建一个对等组。 | |
删除当期对等设备组。 | |
请求对等组信息。 | |
启动对等点的发现。 | |
请求当前发现的对等点的列表。 |
WifiP2pManager类的方法会让你传入一个监听器,以便Wi-Fi Direct框架能够通知你的Activity该调用的状态。下表介绍了WifiP2pManager类的方法调用时可用的监听器接口:
表2.Wi-Fi Direct监听器
监听器接口 | 关联的操作 |
connect(),cancelConnect(),createGroup(),removeGroup(), and discoverPeers() | |
Wi-Fi Direct API还定义了一些在某些Wi-Fi Direct事件发生时,用广播的形式发出的Intent对象,如在发现对等设备或设备的Wi-Fi状态发生变化时。你能够在你的应用程序中注册接收这些Intent对象,并通过创建广播接收器来处理这些Intent对象:
表3.Wi-Fi Direct Intent
Intent | 介绍 |
在设备的Wi-Fi连接状态变化时,发出这个广播。 | |
在调用discoverPeers()方法时,发出这个广播,如果你要在应用程序中处理这个Intent,通常是希望调用requestPeers()方法来获取对等设备的更新列表。 | |
当启用或禁用设备上的Wi-Fi Direct时,发出这个广播。 | |
当设备的细节(如设备的名称)发生变化时,发出这个广播。 |
给Wi-Fi Direct的Intent创建广播接收器
广播接收器允许你接收由Android系统发出的Intent广播,以便你的应用程序能够响应你感兴趣的事件。以下是创建处理Wi-Fi Direct的Intent接收器的基本步骤:
1.
2.
下列代码显示了如何创建一个典型的广播接收器。该广播接收器需要一个WifiP2pManager对象和一个Activity对象作为参数,并且使用这两个类在广播接收器接收到Intent时,执行合适的需要的操作:
public class WiFiDirectBroadcastRecei
}