NfcB

class NfcB : TagTechnology
kotlin.Any
   ↳ android.nfc.tech.NfcB

Provides access to NFC-B (ISO 14443-3B) properties and I/O operations on a Tag.

Acquire a NfcB object using #get.

The primary NFC-B I/O operation is #transceive. Applications must implement their own protocol stack on top of #transceive.

Note: Methods that perform I/O operations require the android.Manifest.permission#NFC permission.
Requires API level 10 (Android 2.3.3, Gingerbread)

Summary

Public methods
ByteArray!

Return the Protocol Info bytes from ATQB/SENSB_RES at tag discovery.

ByteArray!

Return the Application Data bytes from ATQB/SENSB_RES at tag discovery.

ByteArray!

Send raw NFC-B commands to the tag and receive the response.

Tag!

Get the Tag object backing this TagTechnology object.

Unit

Enable I/O operations to the tag from this TagTechnology object.

Int

Return the maximum number of bytes that can be sent with #transceive.

Unit

Disable I/O operations to the tag from this TagTechnology object, and release resources.

Boolean

Helper to indicate if I/O operations should be possible.

static NfcB!
get(tag: Tag!)

Get an instance of NfcB for the given tag.

Public methods

getProtocolInfo

added in API level 10
fun getProtocolInfo(): ByteArray!

Return the Protocol Info bytes from ATQB/SENSB_RES at tag discovery.

Does not cause any RF activity and does not block.
Requires API level 10 (Android 2.3.3, Gingerbread)

Return
ByteArray!: Protocol Info bytes from ATQB/SENSB_RES bytes

getApplicationData

added in API level 10
fun getApplicationData(): ByteArray!

Return the Application Data bytes from ATQB/SENSB_RES at tag discovery.

Does not cause any RF activity and does not block.
Requires API level 10 (Android 2.3.3, Gingerbread)

Return
ByteArray!: Application Data bytes from ATQB/SENSB_RES bytes

transceive

added in API level 10
fun transceive(data: ByteArray!): ByteArray!

Send raw NFC-B commands to the tag and receive the response.

Applications must not append the EoD (CRC) to the payload, it will be automatically calculated.

Applications must not send commands that manage the polling loop and initialization (SENSB_REQ, SLOT_MARKER etc).

Use #getMaxTransceiveLength to retrieve the maximum number of bytes that can be sent with #transceive.

This is an I/O operation and will block until complete. It must not be called from the main application thread. A blocked call will be canceled with IOException if #close is called from another thread.

Requires the android.Manifest.permission#NFC permission.
Requires API level 10 (Android 2.3.3, Gingerbread)

Parameters
data ByteArray!: bytes to send
Return
ByteArray!: bytes received in response
Exceptions
TagLostException if the tag leaves the field
IOException if there is an I/O failure, or this operation is canceled

getTag

added in API level 10
fun getTag(): Tag!

Get the Tag object backing this TagTechnology object.
Requires API level 10 (Android 2.3.3, Gingerbread) Requires API level 10 (Android 2.3.3, Gingerbread)

Return
Tag!: the Tag backing this TagTechnology object.

connect

added in API level 10
fun connect(): Unit

Enable I/O operations to the tag from this TagTechnology object.

May cause RF activity and may block. Must not be called from the main application thread. A blocked call will be canceled with IOException by calling #close from another thread.

Only one TagTechnology object can be connected to a Tag at a time.

Applications must call #close when I/O operations are complete.

Requires the android.Manifest.permission#NFC permission.
Requires API level 10 (Android 2.3.3, Gingerbread) Requires API level 10 (Android 2.3.3, Gingerbread)

Exceptions
TagLostException if the tag leaves the field
IOException if there is an I/O failure, or connect is canceled

getMaxTransceiveLength

added in API level 14
fun getMaxTransceiveLength(): Int

Return the maximum number of bytes that can be sent with #transceive.
Requires API level 14 (Android 4.0, IceCreamSandwich)

Return
Int: the maximum number of bytes that can be sent with #transceive.

close

added in API level 10
fun close(): Unit

Disable I/O operations to the tag from this TagTechnology object, and release resources.

Also causes all blocked I/O operations on other thread to be canceled and return with IOException.

Requires the android.Manifest.permission#NFC permission.
Requires API level 10 (Android 2.3.3, Gingerbread) Requires API level 10 (Android 2.3.3, Gingerbread)

Exceptions
Exception if this resource cannot be closed
IOException if an I/O error occurs

isConnected

added in API level 10
fun isConnected(): Boolean

Helper to indicate if I/O operations should be possible.

Returns true if #connect has completed, and #close has not been called, and the Tag is not known to be out of range.

Does not cause RF activity, and does not block.
Requires API level 10 (Android 2.3.3, Gingerbread) Requires API level 10 (Android 2.3.3, Gingerbread)

Return
Boolean: true if I/O operations should be possible

get

added in API level 10
static fun get(tag: Tag!): NfcB!

Get an instance of NfcB for the given tag.

Returns null if NfcB was not enumerated in Tag#getTechList. This indicates the tag does not support NFC-B.

Does not cause any RF activity and does not block.
Requires API level 10 (Android 2.3.3, Gingerbread)

Parameters
tag Tag!: an NFC-B compatible tag
Return
NfcB!: NFC-B object