Wi-Fi Direct™的API允许应用程序不通过网络或热点,直接与周围的设备进行连接。应用程序可以迅速地查找附近的设备,交换信息。并且与蓝牙相比,Wi-Fi Direct的通讯范围更大。
通过Wi-Fi Direct查找附近的设备,并与之连接一般包括如下几个步骤:
-
设置应用程序权限
-
创建一个广播接收器和对等网络管理器
-
初始化对等点的搜索
-
获取对等点列表
-
连接一个对等点
一、设置应用程序权限
使用Wi-Fi Direct,需要向你的清单文件添加 CHANGE_WIFI_STATE,ACCESS_WIFI_STATE 和INTERNET 权限。Wi-Fi Direct不需要因特网连接,但需要使用标准Java套接字,而套接字需要INTERNET 权限,因此,你需要有以下的权限才可以使用Wi-Fi Direct。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.nsdchat"
...
<uses-permission
android:required="true"
android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission
android:required="true"
android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission
android:required="true"
android:name="android.permission.INTERNET"/>
...
注:
android.permission.ACCESS_WIFI_STATE 允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)
android.permission.CHANGE_WIFI_STATE 允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state)
android.permission.INTERNET 当需要访问网络的时候,需要在AndroidManifest.xml里面添加访问网络的权限
二、创建一个广播接收器和对等网络管理器
使用Wi-Fi Direct,你需要监听广播意图(Intents)来获知某个特定事件的发生。在你的应用程序中,初始化一个 IntentFilter,并让它监听以下动作:
- * 表明Wi-Fi对等网络(P2P)是否已经启用