Android官方提供了WiFi-Direct的API和示例代码。以下是实现WiFi-Direct连接的代码示例:
声明WiFi-Direct:
WifiP2pManager mManager;
WifiP2pManager.Channel mChannel;
将上述代码添加到您的类中并实现以下方法:
在onCreate方法中:
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), null);
初始化peers列表:
WifiP2pManager.PeerListListener peerListListener = new WifiP2pManager.PeerListListener() {
@Override
public void onPeersAvailable(WifiP2pDeviceList peerList) {
// 检查WiFi-Direct对等列表是否更改
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
peers.clear();
peers.addAll(peerList.getDeviceList());
// 显示设备的名称
DeviceNameListAdapter adapter = new DeviceNameListAdapter(MainActivity.this, peers);
listView.setAdapter(adapter);
if (peers.size() == 0) {
return;
}
}
}
搜索设备:
mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
// 成功开始发现设备
progressDialog = ProgressDialog.show(MainActivity.this, "Press back to cancel", "Finding peers", true, true);
}
@Override
public void onFailure(int reasonCode) {
// 发现设备失败,错误码说明
Toast.makeText(MainActivity.this, R.string.search_fail, Toast.LENGTH_SHORT).show();
}
});
连接设备:
// 根据您选择的设备提供下面的WiFi-Direct设备地址
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = device.deviceAddress;
mManager.connect(mChannel, config, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, R.string.connect_ok, Toast