Loading repository data…
Loading repository data…
anitaa1990 / repository
A library project to connect two devices using Wifi-Direct
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.

A simple wrapper module to connect two devices and share data using Wifi-Direct.
This library provides an easy way to access the wifi direct api provided by Android without having to deal with all the boilerplate stuff going on inside.
dependencies {
implementation 'com.wifiscanner:wifiscanner:0.1.2'
}
Maven Dependecy - Java
<dependency>
<groupId>com.wifiscanner</groupId>
<artifactId>wifiscanner</artifactId>
<version>0.1.2</version>
<type>pom</type>
</dependency>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Declare the following service:
<service android:enabled="true" android:name="com.wifiscanner.server.ServerDataService" />
Note: Currently the app does not support runtime permissions.
Step 2: Define the wrapper class in the onCreate() method of the activity
WifiP2PService wifiP2PService = new WifiP2PServiceImpl.Builder()
.setSender(this)
.setWifiP2PConnectionCallback(this)
.build();
wifiP2PService.onCreate();
We need to initialize the wrapper class and declare the activity as either the Sender or the Receiver.
For instance, in order to declare the activity as a Sender class, we use .setSender(this).
In order to declare the activity as a Receiver class, we use .setReceiver(this)
The Receiver - will act as the server. It will fetch the list of available nearby devices and select a device to connect with. The Sender - will act as the client. Once a connection request is made from the server, the sender will accept the connection and pass data to the Receiver
Step 3: Add the following method in the onResume method of the activity
wifiP2PService.onResume();
This method will register the broadcast receiver that will listen for the changes in Wifi network.
Step 4: Add the following method in the onStop method of the activity
wifiP2PService.onStop();
This method will unregister the broadcast receiver since the activity is no longer at the top of the activity.
Step 5: Implement the WifiP2PConnectionCallback interface in your activity
public class MainActivity extends AppCompatActivity implements WifiP2PConnectionCallback {
Functions in the WifiP2PConnectionCallback interface
| Function Name | Usage |
|---|---|
initiateDiscovery() | This callback method is called when the scan is first initiated |
onDiscoverySuccess() | This callback method is called the discovery is successful |
onDiscoveryFailure() | This callback method is called the discovery is not successful |
onPeerAvailable() | This callback method is called with a list of all peer available devices |
onPeerStatusChanged() | This status of the peers that are discovered is changing |
onPeerConnectionSuccess() | called when a connection to a nearby device is successful |
onPeerConnectionFailure() | called when a connection to a nearby device is not successful |
onPeerDisconnectionSuccess() | called when a disconnection to a nearby device is successful |
onPeerDisconnectionFailure() | called when a disconnection to a nearby device is not successful |
onDataTransferring() | called when data transfer has been initiated |
onDataTransferredSuccess() | called when data transfer has completed & is successful |
onDataTransferredFailure() | called when data transfer has completed & is not successful |
onDataReceiving() | Called when the receiver has started to receive the data from sender |
onDataReceivedSuccess(String message) | Called when the receiver has received the data successfully |
onDataReceivedFailure() | Called when the data transferred is completed but data is not received |
Methods available in the Receiver class:
Method to connect to an available device: - you need to pass the device that is to be connected
wifiP2PService.connectDevice(wifiP2pDevice);
Method to start data transfer - you need to pass the message that needs to be shared to the client
wifiP2PService.startDataTransfer("Helllooo");
And that's it folks!