WifiAwareNetworkSpecifier.Builder

public static final class WifiAwareNetworkSpecifier.Builder
extends Object

java.lang.Object
   ↳ android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder


A builder class for a Wi-Fi Aware network specifier to set up an Aware connection with a peer.

Summary

Public constructors

Builder(DiscoverySession discoverySession, PeerHandle peerHandle)

Create a builder for WifiAwareNetworkSpecifier used in requests to set up a Wi-Fi Aware connection with a specific peer.

Builder(PublishDiscoverySession publishDiscoverySession)

Create a builder for WifiAwareNetworkSpecifier used in requests to set up a Wi-Fi Aware connection.

Public methods

WifiAwareNetworkSpecifier build()

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

WifiAwareNetworkSpecifier.Builder setChannelFrequencyMhz(int channelInMhz, boolean required)

Configure the Channel frequency for the Wi-Fi Aware connection being requested.

WifiAwareNetworkSpecifier.Builder setDataPathSecurityConfig(WifiAwareDataPathSecurityConfig securityConfig)

Configure security config for the Wi-Fi Aware connection being requested.

WifiAwareNetworkSpecifier.Builder setPmk(byte[] pmk)

Configure the PMK for the Wi-Fi Aware connection being requested.

WifiAwareNetworkSpecifier.Builder setPort(int port)

Configure the port number which will be used to create a connection over this link.

WifiAwareNetworkSpecifier.Builder setPskPassphrase(String pskPassphrase)

Configure the PSK Passphrase for the Wi-Fi Aware connection being requested.

WifiAwareNetworkSpecifier.Builder setTransportProtocol(int transportProtocol)

Configure the transport protocol which will be used to create a connection over this link.

Inherited methods

Public constructors

Builder

Added in API level 29
public Builder (DiscoverySession discoverySession, 
                PeerHandle peerHandle)

Create a builder for WifiAwareNetworkSpecifier used in requests to set up a Wi-Fi Aware connection with a specific peer.

To set up a connection to any peer or to multiple peers use Builder(android.net.wifi.aware.PublishDiscoverySession).

Parameters
discoverySession DiscoverySession: A Wi-Fi Aware discovery session in whose context the connection is created. This value cannot be null.

peerHandle PeerHandle: The handle of the peer to which the Wi-Fi Aware connection is requested. The peer is discovered through Wi-Fi Aware discovery. The handle can be obtained through DiscoverySessionCallback#onServiceDiscovered(PeerHandle, byte[], java.util.List) or DiscoverySessionCallback#onMessageReceived(PeerHandle, byte[]). This value cannot be null.

Builder

Added in API level 29
public Builder (PublishDiscoverySession publishDiscoverySession)

Create a builder for WifiAwareNetworkSpecifier used in requests to set up a Wi-Fi Aware connection. This configuration allows connections to any peers or to multiple peers (as opposed to only a specific peer with Builder(android.net.wifi.aware.DiscoverySession, android.net.wifi.aware.PeerHandle)).

Multiple connections can be triggered by this configuration and using a single request via ConnectivityManager#requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback) and similar methods. Each successful connection will be signaled via the standard Connectivity Manager mechanisms - ConnectivityManager.NetworkCallback#onAvailable(Network). Calling ConnectivityManager#unregisterNetworkCallback(ConnectivityManager.NetworkCallback) will terminate all connections.

Parameters
publishDiscoverySession PublishDiscoverySession: This value cannot be null.

Public methods

build

Added in API level 29
public WifiAwareNetworkSpecifier build ()

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

The default builder constructor will initialize a NetworkSpecifier which requests an open (non-encrypted) link. To request an encrypted link use the setPskPassphrase(java.lang.String) or setPmk(byte[]) builder methods.

Returns
WifiAwareNetworkSpecifier 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]. This value cannot be null.

setChannelFrequencyMhz

Added in API level 33
public WifiAwareNetworkSpecifier.Builder setChannelFrequencyMhz (int channelInMhz, 
                boolean required)

Configure the Channel frequency for the Wi-Fi Aware connection being requested. This method is optional - if not called, then channelInMhz to use will be decided by firmware. Only use this when WifiAwareManager#isSetChannelOnDataPathSupported() is true, otherwise the set channelInMhz will be ignored.

Parameters
channelInMhz int: Channel frequency in Mhz. Value is 0 or greater

required boolean: If set to true, Channel request is specified and must be respected. If the firmware cannot honor the request then the data-path request is rejected. Otherwise, requested channelInMhz is a recommendation and may be overridden by the firmware.

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.

setDataPathSecurityConfig

Added in API level 33
public WifiAwareNetworkSpecifier.Builder setDataPathSecurityConfig (WifiAwareDataPathSecurityConfig securityConfig)

Configure security config for the Wi-Fi Aware connection being requested. This method is optional - if not called, then an Open (unencrypted) connection will be created. Note: this method is the superset of the setPmk(byte[]) and setPskPassphrase(java.lang.String).

Parameters
securityConfig WifiAwareDataPathSecurityConfig: The (optional) security config to be used to encrypt the link. This value cannot be null.

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.

setPmk

Added in API level 30
public WifiAwareNetworkSpecifier.Builder setPmk (byte[] pmk)

Configure the PMK for the Wi-Fi Aware connection being requested. This method is optional - if not called, then an Open (unencrypted) connection will be created. Note: Use setDataPathSecurityConfig(android.net.wifi.aware.WifiAwareDataPathSecurityConfig) to avoid interoperability issues when devices support different cipher suites by explicitly specifying a cipher suite as opposed to relying on a default cipher suite.

Parameters
pmk byte: A PMK (pairwise master key, see IEEE 802.11i) specifying the key to use for encrypting the data-path. Use the setPskPassphrase(java.lang.String) to specify a Passphrase. This value cannot be null.

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.

setPort

Added in API level 29
public WifiAwareNetworkSpecifier.Builder setPort (int port)

Configure the port number which will be used to create a connection over this link. This configuration should only be done on the server device, e.g. the device creating the ServerSocket.

Notes:

Parameters
port int: A positive integer indicating the port to be used for communication. Value is between 0 and 65535 inclusive

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.

setPskPassphrase

Added in API level 29
public WifiAwareNetworkSpecifier.Builder setPskPassphrase (String pskPassphrase)

Configure the PSK Passphrase for the Wi-Fi Aware connection being requested. This method is optional - if not called, then an Open (unencrypted) connection will be created. Note: Use setDataPathSecurityConfig(android.net.wifi.aware.WifiAwareDataPathSecurityConfig) to avoid interoperability issues when devices support different cipher suites by explicitly specifying a cipher suite as opposed to relying on a default cipher suite. WifiAwareDataPathSecurityConfig.Builder#Builder(int)

Parameters
pskPassphrase String: The (optional) passphrase to be used to encrypt the link. Use the setPmk(byte[]) to specify a PMK. This value cannot be null.

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.

setTransportProtocol

Added in API level 29
public WifiAwareNetworkSpecifier.Builder setTransportProtocol (int transportProtocol)

Configure the transport protocol which will be used to create a connection over this link. This configuration should only be done on the server device, e.g. the device creating the ServerSocket for TCP.

Notes:

The transport protocol number is assigned by the Internet Assigned Numbers Authority (IANA) https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml.

Parameters
transportProtocol int: The transport protocol to be used for communication. Value is between 0 and 255 inclusive

Returns
WifiAwareNetworkSpecifier.Builder the current Builder builder, enabling chaining of builder methods. This value cannot be null.