一、Wi-Fi Direct 简介
Wi-Fi Direct标准是指允许无线网络中的设备无需通过无线路由器
即可相互连接。与蓝牙
技术类似,这种标准允许无线设备以点对点形式互连,而且在传输速度与传输距离方面则比蓝牙有大幅提升。
按照定义,Wi-Fi Direct设备是支持对等连接的设备,这种设备既支持基础设施网络,也支持P2P连接。Wi-Fi Direct设备能够作为典型的站点(STA
)加入基础设施网络,而且必须支持Wi-Fi Protected Setup加入者功能。
Wi-Fi Direct设备通过组建小组(以一对一或一对多的拓扑形式)来建立连接,小组的工作形式与基础设施BSS类似。由一部Wi-Fi Direct设备负责整个小组,包括控制哪部设备加入、小组何时启动和终止等。这种设备对于传统客户设备而言就是一部接入点,能够提供基础设施接入点所提供的部分服务。
详见百度百科
二、Android中的Wi-Fi Direct
从Android4.0(API level 14)
开始,开始支持Wi-Fi Direct,它可以在没有热点(hotspot)和网络连接(Internet)的情况下,实现点对点(P2P)的连接。Android的Framework提供了一组API,允许你发现和连接其它支持Wi-Fi
Direct的
设备。这种连接比蓝牙速度更快,通信距离更远。
三
、部分代码及分析
下面通过分析一部分代码来介绍API的使用方法。其中//...代表一些省略掉的代码未显示。
首先使用Wi-Fi Direct,需要向你的清单文件添加 CHANGE_WIFI_STATE, ACCESS_WIFI_STATE 和 INTERNET 权限。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
获取
WifiP2pManager和
Channel。
WifiP2pManager是API中的主类,可以通过系统服务获取。Channel是app和Framework连接的通道,在
WifiP2pManager调用initialize()方法初始化后返回一个
Channel
。
public class Mai