Android Wifi Direct Cordova Plugin
========

wifi-direct的cordova插件。socket部分使用了OKSocket第三方库来做设备间的双工通信，支持文件传输。

引入插件
--------
在cordova项目下通过命令<cordova plugin add 插件项目的路径>，将插件引入cordova项目中，例如：

```
cordova plugin add https://github.com/wengtaotao/cordova-plugin-wifi-direct.git
```

***支持 Android SDK >= 21***

如何使用
--------
插件对象为：WifiDirect。在app准备就绪后，就可以直接使用这个代码来获取插件对象。例如：
```
onDeviceReady: function() {
    wifiDirectNode = new WifiDirect();     
}
```



## API介绍

### 方法

startDiscovering()
---
    开始搜索支持wifi-direct的设备（配合监听事件discovered）。例如：
```
wifiDirectNode.startDiscovering();
```

stopDiscovering()
---
    停止搜索设备（配合监听事件stopDiscovering）。例如：
```
wifiDirectNode.stopDiscovering();
```

connect(peer)
---
    连接设备，参数为设备对象（设备对象从监听事件discovered中得到）（配合监听事件connection）。例如：
```
wifiDirectNode.connect(selectedDevice);
```

disconnect()
---
    断开连接（配合监听事件disconnection）。例如：
```
wifiDirectNode.disconnect();
```

shutdown()
---
    停止并退出（配合监听事件shutdown）。例如：
```
wifiDirectNode.shutdown();
```

createServer ()
---
    创建服务器（配合监听事件createdServer）。例如
```
wifiDirectNode.createServer();
```

sendFileToServer(fileName, dataURL)
---
    发送文件给服务器（配合监听事件sendFile、receivedFile）。例如：
```
wifiDirectNode.sendFileToServer(fileName,dataUrl);
```

sendFileToClient(uniqueTag, fileName, dataURL)
---
    发送文件给客户端（配合监听事件sendFile、receivedFile）。例如：
```
wifiDirectNode.sendFileToClient(uniqueTag,fileName,dataUrl);
```


### 事件监听

discovered
---
    搜索设备成功后会触发这个监听事件，回调函数中返回的参数是设备列表。例如：
```
wifiDirectNode.on('discovered', function(result){
     console.log('discovered success.');
     deviceList = result; 
});
```
stopDiscovering
---
	停止搜索设备成功后触发这个监听事件。例如：
```
wifiDirectNode.on('stopDiscovering', function(result){
     console.log('stopDiscovering success.'); 
});
```
connection
---
	连接设备成功后会触发这个监听事件。客户端和服务端的区别在于回调函数返回的结果不同，服务端返回的结果包含客户端的唯一标识uniqueTag。例如：
```
wifiDirectNode.on('connection', function(result){
     if(result.uniqueTag){//服务端才有值         
        uniqueTag = result.uniqueTag;     
        }     
    console.log('connection success.'); 
});
```

disconnection
---
	断开设备成功后会触发这个监听事件。客户端和服务端的区别在于回调函数返回的结果不同，服务端返回的结果包含客户端的唯一标识uniqueTag。例如：
```
wifiDirectNode.on('disconnection', function(result){
    if(result.uniqueTag){//服务端才有值         
        uniqueTag = result.uniqueTag;     
    }     
    console.log('disconnection success.'); 
});
```
receivedFile
---
	接收文件成功后会触发这个监听事件。回调函数返回的结果有文件名（fileName）、文件扩展名（extension）、文件路径（filePath），如果是服务端则多一个客户端唯一标识字段uniqueTag。例如：
```
wifiDirectNode.on('receivedFile', function(result){
    var fileName = result.fileName;     
    var extension = result.extension;
    var filePath = result.filePath;     
    if(result.uniqueTag){         
        uniqueTag = result.uniqueTag;     
    }     
    console.log('receive file success.'); 
});
```
sendFile
---
	发送文件成功后会触发这个监听事件。例如：
```
wifiDirectNode.on('sendFile', function(result){
     console.log('send file success.'); 
});
```
shutdown
---
	停止并退出成功后会触发这个监听事件。例如：
```
wifiDirectNode.on('shutdown', function(result){
     console.log('shutdown success.'); 
});
```
createdServer
---
	创建服务器成功后会触发这个监听事件。例如：
```
wifiDirectNode.on('createdServer', function(result){
     console.log('created server success.'); 
});
```



