L2capNetworkSpecifier
public
final
class
L2capNetworkSpecifier
extends NetworkSpecifier
implements
Parcelable
java.lang.Object | ||
↳ | android.net.NetworkSpecifier | |
↳ | android.net.L2capNetworkSpecifier |
A NetworkSpecifier
used to identify an L2CAP network over BLE.
An L2CAP network is not symmetrical, meaning there exists both a server (Bluetooth peripheral)
and a client (Bluetooth central) node. This specifier contains the information required to
request a client L2CAP network using ConnectivityManager.requestNetwork
while specifying
the remote MAC address, and Protocol/Service Multiplexer (PSM). It can also contain information
allocated by the system when reserving a server network using ConnectivityManager.reserveNetwork(NetworkRequest, Handler, NetworkCallback)
such as the Protocol/Service Multiplexer (PSM). In both
cases, the header compression option must be specified.
An L2CAP server network allocates a Protocol/Service Multiplexer (PSM) to be advertised to the
client. A new server network must always be reserved using ConnectivityManager#reserveNetwork
. The subsequent ConnectivityManager.NetworkCallback.onReserved(android.net.NetworkCapabilities)
callback includes an L2CapNetworkSpecifier
. The ERROR(/getPsm())
method will return the Protocol/Service Multiplexer
(PSM) of the reserved network so that the server can advertise it to the client and the client
can connect.
An L2CAP server network is backed by a BluetoothServerSocket
which can,
in theory, accept many connections. However, before SDK version ERROR(/Build.VERSION_CODES.VANILLA_ICE_CREAM)
Bluetooth APIs do not expose the channel ID, so these
connections are indistinguishable. In practice, this means that the network matching semantics in
ConnectivityService will tear down all but the first connection.
When the connection between client and server completes, a Network
whose capabilities
satisfy this L2capNetworkSpecifier
will connect and the usual callbacks, such as ERROR(/NetworkCallback#onAvailable)
, will be called on the callback object passed to ConnectivityManager#reserveNetwork
or ConnectivityManager#requestNetwork
.
Summary
Nested classes | |
---|---|
class |
L2capNetworkSpecifier.Builder
A builder class for L2capNetworkSpecifier. |
Constants | |
---|---|
int |
HEADER_COMPRESSION_6LOWPAN
Use 6lowpan header compression as specified in rfc6282. |
int |
HEADER_COMPRESSION_ANY
Accept any form of header compression. |
int |
HEADER_COMPRESSION_NONE
Do not compress packets on this network. |
int |
PSM_ANY
Match any Protocol/Service Multiplexer (PSM). |
int |
ROLE_ANY
Match any role. |
int |
ROLE_CLIENT
Specifier describes a client network, i.e., the device is the Bluetooth central. |
int |
ROLE_SERVER
Specifier describes a server network, i.e., the device is the Bluetooth peripheral. |
Inherited constants |
---|
Fields | |
---|---|
public
static
final
Creator<L2capNetworkSpecifier> |
CREATOR
|
Public methods | |
---|---|
int
|
describeContents()
Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
int
|
getHeaderCompression()
Returns the compression mechanism for this network. |
int
|
getPsm()
Returns the Protocol/Service Multiplexer (PSM) for this network to connect to. |
MacAddress
|
getRemoteAddress()
Returns the remote MAC address for this network to connect to. |
int
|
getRole()
Returns the role to be used for this network. |
void
|
writeToParcel(Parcel dest, int flags)
Flatten this object in to a Parcel. |
Inherited methods | |
---|---|
Constants
HEADER_COMPRESSION_6LOWPAN
public static final int HEADER_COMPRESSION_6LOWPAN
Use 6lowpan header compression as specified in rfc6282.
Constant Value: 2 (0x00000002)
HEADER_COMPRESSION_ANY
public static final int HEADER_COMPRESSION_ANY
Accept any form of header compression.
This option is only meaningful in NetworkRequest
s. Specifiers for actual L2CAP
networks never have this option set.
Constant Value: 0 (0x00000000)
HEADER_COMPRESSION_NONE
public static final int HEADER_COMPRESSION_NONE
Do not compress packets on this network.
Constant Value: 1 (0x00000001)
PSM_ANY
public static final int PSM_ANY
Match any Protocol/Service Multiplexer (PSM).
This PSM value is only meaningful in NetworkRequest
s. Specifiers for actual L2CAP
networks never have this value set.
Constant Value: 0 (0x00000000)
ROLE_ANY
public static final int ROLE_ANY
Match any role.
This role is only meaningful in NetworkRequest
s. Specifiers for actual L2CAP
networks never have this role set.
Constant Value: 0 (0x00000000)
ROLE_CLIENT
public static final int ROLE_CLIENT
Specifier describes a client network, i.e., the device is the Bluetooth central.
Constant Value: 1 (0x00000001)
ROLE_SERVER
public static final int ROLE_SERVER
Specifier describes a server network, i.e., the device is the Bluetooth peripheral.
Constant Value: 2 (0x00000002)
Fields
Public methods
describeContents
public int describeContents ()
Describe the kinds of special objects contained in this Parcelable
instance's marshaled representation. For example, if the object will
include a file descriptor in the output of writeToParcel(android.os.Parcel, int)
,
the return value of this method must include the
CONTENTS_FILE_DESCRIPTOR
bit.
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled
by this Parcelable object instance.
Value is either 0 or CONTENTS_FILE_DESCRIPTOR |
getHeaderCompression
public int getHeaderCompression ()
Returns the compression mechanism for this network.
Returns | |
---|---|
int |
Value is HEADER_COMPRESSION_ANY , HEADER_COMPRESSION_NONE , or HEADER_COMPRESSION_6LOWPAN |
getPsm
public int getPsm ()
Returns the Protocol/Service Multiplexer (PSM) for this network to connect to.
Returns | |
---|---|
int |
getRemoteAddress
public MacAddress getRemoteAddress ()
Returns the remote MAC address for this network to connect to.
The remote address is only meaningful for networks that have ROLE_CLIENT.
When receiving this L2capNetworkSpecifier
from Connectivity APIs such as a ConnectivityManager.NetworkCallback
, the MAC address is redacted.
Returns | |
---|---|
MacAddress |
This value may be null . |
getRole
public int getRole ()
Returns the role to be used for this network.
Returns | |
---|---|
int |
Value is ROLE_ANY , ROLE_CLIENT , or ROLE_SERVER |
writeToParcel
public void writeToParcel (Parcel dest, int flags)
Flatten this object in to a Parcel.
Parameters | |
---|---|
dest |
Parcel : This value cannot be null . |
flags |
int : Additional flags about how the object should be written.
May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE .
Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE , and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-13 UTC.