15
Wi-Fi Direct Presented By: Ramesh Akula 1

Wi fi direct

Embed Size (px)

Citation preview

Page 1: Wi fi direct

Wi-Fi DirectPresented By: Ramesh Akula

1

Page 2: Wi fi direct

Contents

1.Introduction

2.Benefits

3.Architecture

4.Group Information

5.Technical Overview

6.Conclusion

2

Page 3: Wi fi direct

Introduction

Supports Android 4.0+ (API level 14)

Wi-Fi direct is new technology defined by the Wi-Fi alliance aimed at enhancing direct device to device communication without requiring a wireless access point

Wi-Fi Direct promises device-to-device transfer speeds of up to 250Mbps, while Bluetooth 4.0 promises speeds similar to Bluetooth 3.0 of up to 25Mbps.

3

Page 4: Wi fi direct

Benefits

1. Content Sharing

2. Security (WPS Push button)

3. Offline Chat

4. Multi player games

5. Acts as Access Point

6. Supports Mobiles, Printer and Camera etc. 4

Page 5: Wi fi direct

Architecture

Wi-Fi direct device communicate by establishing P2P group

The device implementing AP-like functionality in P2P group is referred to as the P2P Group Owner(P2P GO), and device acting as client are known as P2P clients.

Once P2P group is established, other P2P clients can join the group as in a traditional Wi-Fi network.

Wi-Fi direct does not allow transferring the role of P2P GO within the group and if P2P GO leaves the P2P group then the group is break down, and has to re-established.

5

Page 6: Wi fi direct

Group Information

6

Page 7: Wi fi direct

Group Information

Group Formation procedure involves two phases

❖ Determination of P2P Group owner

➢ Negotiated - Two P2P devices negotiate for P2P group owner based on desire/capabilities to be a P2P GO.

➢ Selected - P2P group Owner role established at formation or at an application level

❖ Provisioning of P2P Group

➢ Establishment of P2P group session using appropriate credentials

➢ Using Wi-Fi simple configuration to exchange credentials.

7

Page 8: Wi fi direct

Technical OverviewAndroidManifest.xml:

<uses-sdk android:minSdkVersion="14" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<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" />

8

Page 9: Wi fi direct

WifiP2pManager mManager;

Channel mChannel;

BroadcastReceiver mReceiver;

...

@Override

protected void onCreate(Bundle savedInstanceState){

...

mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);

mChannel = mManager.initialize(this, getMainLooper(), null);

mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);

...

}

Set up Wi-Fi P2P Framework

9

Page 10: Wi fi direct

// A BroadcastReceiver that notifies of important Wi-Fi p2p events.

public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {

int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);

if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {

// Wifi P2P is enabled

} else {

// Wi-Fi P2P is not enabled

} } }

Check Wi-Fi P2P supported or not

10

Page 11: Wi fi direct

IntentFilter mIntentFilter;

...

@Override

protected void onCreate(Bundle savedInstanceState){

...

mIntentFilter = new IntentFilter();

mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);

mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);

mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);

mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

...

}

Register Broadcastreceiver

11

Page 12: Wi fi direct

mManager.discoverPeers(channel, new WifiP2pManager.ActionListener() {

@Override

public void onSuccess() {

...

}

@Override

public void onFailure(int reasonCode) {

...

}

});

PeerListListener myPeerListListener;

...

if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {

// request available peers from the wifi p2p manager. This is an

// asynchronous call and the calling activity is notified with a

// callback on PeerListListener.onPeersAvailable()

if (mManager != null) {

mManager.requestPeers(mChannel, myPeerListListener);

}

}

Discovering peers

12

Page 13: Wi fi direct

//obtain a peer from the WifiP2pDeviceListWifiP2pDevice device;WifiP2pConfig config = new WifiP2pConfig();config.deviceAddress = device.deviceAddress;mManager.connect(mChannel, config, new ActionListener() {

@Override public void onSuccess() { //success logic }

@Override public void onFailure(int reason) { //failure logic }});

Connecting to peers

13

Page 14: Wi fi direct

Conclusion

I. Technology used:

A.For transferring files b/w device to device in SuperBeam, Mobile Content Transfer(Synchronoss) etc.

B.Samsung allowed using the Wi-Fi Direct ability to connect to devices since API 9 (2.3 Gingerbread).

II.Related Topics:

A.Network Service Discovery (NSD)

B.Hotspot (Share-It)

C.Wifi P2p Service Discovery

14

Page 15: Wi fi direct

Thank you!

References:

1.https://developer.android.com/guide/topics/connectivity/wifip2p.html#creating-app

2.http://developer.android.com/guide/topics/connectivity/wifip2p.html

3.https://github.com/NanoHttpd/nanohttpd15