lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey
added in API level 26

WifiAwareSession

public class WifiAwareSession
extends Object implements AutoCloseable

java.lang.Object
   ↳ android.net.wifi.aware.WifiAwareSession


This class represents a Wi-Fi Aware session - an attachment to the Wi-Fi Aware service through which the app can execute discovery operations.

Summary

Public methods

void close()

Destroy the Wi-Fi Aware service session and, if no other applications are attached to Aware, also disable Aware.

NetworkSpecifier createNetworkSpecifierOpen(int role, byte[] peer)

Create a NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) for an unencrypted WiFi Aware connection (link) to the specified peer.

NetworkSpecifier createNetworkSpecifierPassphrase(int role, byte[] peer, String passphrase)

Create a NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) for an encrypted WiFi Aware connection (link) to the specified peer.

void publish(PublishConfig publishConfig, DiscoverySessionCallback callback, Handler handler)

Issue a request to the Aware service to create a new Aware publish discovery session, using the specified publishConfig configuration.

void subscribe(SubscribeConfig subscribeConfig, DiscoverySessionCallback callback, Handler handler)

Issue a request to the Aware service to create a new Aware subscribe discovery session, using the specified subscribeConfig configuration.

Inherited methods

Public methods

close

added in API level 26
public void close ()

Destroy the Wi-Fi Aware service session and, if no other applications are attached to Aware, also disable Aware. This method destroys all outstanding operations - i.e. all publish and subscribes are terminated, and any outstanding data-links are shut-down. However, it is good practice to destroy these discovery sessions and connections explicitly before a session-wide destroy.

An application may re-attach after a destroy using WifiAwareManager.attach(AttachCallback, Handler) .

createNetworkSpecifierOpen

added in API level 26
public NetworkSpecifier createNetworkSpecifierOpen (int role, 
                byte[] peer)

Create a NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) for an unencrypted WiFi Aware connection (link) to the specified peer. The NetworkRequest.Builder.addTransportType(int) should be set to NetworkCapabilities.TRANSPORT_WIFI_AWARE.

This API is targeted for applications which can obtain the peer MAC address using OOB (out-of-band) discovery. Aware discovery does not provide the MAC address of the peer - when using Aware discovery use the alternative network specifier method - DiscoverySession.createNetworkSpecifierOpen(PeerHandle).

To set up an encrypted link use the createNetworkSpecifierPassphrase(int, byte[], String) API.

Parameters
role int: The role of this device: WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR or WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER

peer byte: The MAC address of the peer's Aware discovery interface. On a RESPONDER this value is used to gate the acceptance of a connection request from only that peer.

This value must never be null.

Returns
NetworkSpecifier A NetworkSpecifier to be used to construct NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) to pass to ConnectivityManager.requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) [or other varieties of that API].

createNetworkSpecifierPassphrase

added in API level 26
public NetworkSpecifier createNetworkSpecifierPassphrase (int role, 
                byte[] peer, 
                String passphrase)

Create a NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) for an encrypted WiFi Aware connection (link) to the specified peer. The NetworkRequest.Builder.addTransportType(int) should be set to NetworkCapabilities.TRANSPORT_WIFI_AWARE.

This API is targeted for applications which can obtain the peer MAC address using OOB (out-of-band) discovery. Aware discovery does not provide the MAC address of the peer - when using Aware discovery use the alternative network specifier method - DiscoverySession.createNetworkSpecifierPassphrase(PeerHandle, String).

Parameters
role int: The role of this device: WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR or WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER

peer byte: The MAC address of the peer's Aware discovery interface. On a RESPONDER this value is used to gate the acceptance of a connection request from only that peer.

This value must never be null.

passphrase String: The passphrase to be used to encrypt the link. The PMK is generated from the passphrase. Use createNetworkSpecifierOpen(int, byte[]) to specify an open (unencrypted) link.

This value must never be null.

Returns
NetworkSpecifier A NetworkSpecifier to be used to construct NetworkRequest.Builder.setNetworkSpecifier(NetworkSpecifier) to pass to ConnectivityManager.requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback) [or other varieties of that API].

publish

added in API level 26
public void publish (PublishConfig publishConfig, 
                DiscoverySessionCallback callback, 
                Handler handler)

Issue a request to the Aware service to create a new Aware publish discovery session, using the specified publishConfig configuration. The results of the publish operation are routed to the callbacks of DiscoverySessionCallback:

Other results of the publish session operations will also be routed to callbacks on the callback object. The resulting publish session can be modified using PublishDiscoverySession.updatePublish(PublishConfig).

An application must use the DiscoverySession.close() to terminate the publish discovery session once it isn't needed. This will free resources as well terminate any on-air transmissions.

The application must have the Manifest.permission.ACCESS_COARSE_LOCATION permission to start a publish discovery session.

Parameters
publishConfig PublishConfig: The PublishConfig specifying the configuration of the requested publish session.

This value must never be null.

callback DiscoverySessionCallback: A DiscoverySessionCallback derived object to be used for session event callbacks.

This value must never be null.

handler Handler: The Handler on whose thread to execute the callbacks of the callback object. If a null is provided then the application's main thread will be used.

subscribe

added in API level 26
public void subscribe (SubscribeConfig subscribeConfig, 
                DiscoverySessionCallback callback, 
                Handler handler)

Issue a request to the Aware service to create a new Aware subscribe discovery session, using the specified subscribeConfig configuration. The results of the subscribe operation are routed to the callbacks of DiscoverySessionCallback:

Other results of the subscribe session operations will also be routed to callbacks on the callback object. The resulting subscribe session can be modified using SubscribeDiscoverySession.updateSubscribe(SubscribeConfig).

An application must use the DiscoverySession.close() to terminate the subscribe discovery session once it isn't needed. This will free resources as well terminate any on-air transmissions.

The application must have the Manifest.permission.ACCESS_COARSE_LOCATION permission to start a subscribe discovery session.

Parameters
subscribeConfig SubscribeConfig: The SubscribeConfig specifying the configuration of the requested subscribe session.

This value must never be null.

callback DiscoverySessionCallback: A DiscoverySessionCallback derived object to be used for session event callbacks.

This value must never be null.

handler Handler: The Handler on whose thread to execute the callbacks of the callback object. If a null is provided then the application's main thread will be used.