L2capNetworkSpecifier
class L2capNetworkSpecifier : NetworkSpecifier, Parcelable
| kotlin.Any | ||
| ↳ | 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 android.net.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 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(NetworkCapabilities) callback includes an L2CapNetworkSpecifier. The 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 android.bluetooth.BluetoothServerSocket which can, in theory, accept many connections. However, before SDK version 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 NetworkCallback#onAvailable, will be called on the callback object passed to ConnectivityManager#reserveNetwork or ConnectivityManager#requestNetwork.
Summary
| Nested classes | |
|---|---|
|
A builder class for L2capNetworkSpecifier. |
|
| Constants | |
|---|---|
| static Int |
Use 6lowpan header compression as specified in rfc6282. |
| static Int |
Accept any form of header compression. |
| static Int |
Do not compress packets on this network. |
| static Int |
Match any Protocol/Service Multiplexer (PSM). |
| static Int |
Match any role. |
| static Int |
Specifier describes a client network, i. |
| static Int |
Specifier describes a server network, i. |
| Inherited constants | |
|---|---|
| Public methods | |
|---|---|
| Boolean |
canBeSatisfiedBy(other: NetworkSpecifier!) |
| Int |
Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| Boolean |
Indicates whether some other object is "equal to" this one. |
| Int |
Returns the compression mechanism for this network. |
| Int |
getPsm()Returns the Protocol/Service Multiplexer (PSM) for this network to connect to. |
| MacAddress? |
Returns the remote MAC address for this network to connect to. |
| Int |
getRole()Returns the role to be used for this network. |
| Int |
hashCode()Returns a hash code value for the object. |
| NetworkSpecifier? |
redact() |
| String |
toString()Returns a string representation of the object. |
| Unit |
writeToParcel(dest: Parcel, flags: Int)Flatten this object in to a Parcel. |
| Properties | |
|---|---|
| static Parcelable.Creator<L2capNetworkSpecifier!> | |
Constants
HEADER_COMPRESSION_6LOWPAN
static val HEADER_COMPRESSION_6LOWPAN: Int
Use 6lowpan header compression as specified in rfc6282.
Value: 2HEADER_COMPRESSION_ANY
static val HEADER_COMPRESSION_ANY: Int
Accept any form of header compression. This option is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this option set.
Value: 0HEADER_COMPRESSION_NONE
static val HEADER_COMPRESSION_NONE: Int
Do not compress packets on this network.
Value: 1PSM_ANY
static val PSM_ANY: Int
Match any Protocol/Service Multiplexer (PSM). This PSM value is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this value set.
Value: 0ROLE_ANY
static val ROLE_ANY: Int
Match any role. This role is only meaningful in NetworkRequests. Specifiers for actual L2CAP networks never have this role set.
Value: 0ROLE_CLIENT
static val ROLE_CLIENT: Int
Specifier describes a client network, i.e., the device is the Bluetooth central.
Value: 1ROLE_SERVER
static val ROLE_SERVER: Int
Specifier describes a server network, i.e., the device is the Bluetooth peripheral.
Value: 2Public methods
canBeSatisfiedBy
fun canBeSatisfiedBy(other: NetworkSpecifier!): Boolean
describeContents
fun describeContents(): Int
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(Parcel,int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.
| Return | |
|---|---|
Int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or
|
equals
fun equals(other: Any?): Boolean
Indicates whether some other object is "equal to" this one.
The equals method implements an equivalence relation on non-null object references:
- It is reflexive: for any non-null reference value
x,x.equals(x)should returntrue. - It is symmetric: for any non-null reference values
xandy,x.equals(y)should returntrueif and only ify.equals(x)returnstrue. - It is transitive: for any non-null reference values
x,y, andz, ifx.equals(y)returnstrueandy.equals(z)returnstrue, thenx.equals(z)should returntrue. - It is consistent: for any non-null reference values
xandy, multiple invocations ofx.equals(y)consistently returntrueor consistently returnfalse, provided no information used inequalscomparisons on the objects is modified. - For any non-null reference value
x,x.equals(null)should returnfalse.
An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.
| Parameters | |
|---|---|
obj |
the reference object with which to compare. |
| Return | |
|---|---|
Boolean |
true if this object is the same as the obj argument; false otherwise. |
getHeaderCompression
fun getHeaderCompression(): Int
Returns the compression mechanism for this network.
| Return | |
|---|---|
Int |
Value is one of the following: |
getPsm
fun getPsm(): Int
Returns the Protocol/Service Multiplexer (PSM) for this network to connect to.
getRemoteAddress
fun getRemoteAddress(): MacAddress?
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.
| Return | |
|---|---|
MacAddress? |
This value may be null. |
getRole
fun getRole(): Int
Returns the role to be used for this network.
| Return | |
|---|---|
Int |
Value is one of the following: |
hashCode
fun hashCode(): Int
Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.
The general contract of hashCode is:
- Whenever it is invoked on the same object more than once during an execution of a Java application, the
hashCodemethod must consistently return the same integer, provided no information used inequalscomparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. - If two objects are equal according to the
equalsmethod, then calling thehashCodemethod on each of the two objects must produce the same integer result. - It is not required that if two objects are unequal according to the
equalsmethod, then calling thehashCodemethod on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
| Return | |
|---|---|
Int |
a hash code value for this object. |
toString
fun toString(): String
Returns a string representation of the object.
| Return | |
|---|---|
String |
a string representation of the object. |
writeToParcel
fun writeToParcel(
dest: Parcel,
flags: Int
): Unit
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_WRITE_RETURN_VALUE. Value is either 0 or a combination of the following:
|
Properties
CREATOR
static val CREATOR: Parcelable.Creator<L2capNetworkSpecifier!>