NfcF
class NfcF : TagTechnology
| kotlin.Any | |
| ↳ | android.nfc.tech.NfcF |
Provides access to NFC-F (JIS 6319-4) properties and I/O operations on a Tag.
Acquire a NfcF object using get.
The primary NFC-F 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.
Summary
| Public methods | |
|---|---|
| Unit |
close() |
| Unit |
connect() |
| static NfcF! |
Get an instance of |
| ByteArray! |
Return the Manufacturer bytes from tag discovery. |
| Int |
Return the maximum number of bytes that can be sent with |
| ByteArray! |
Return the System Code bytes from tag discovery. |
| Tag! |
getTag() |
| Int |
Get the current |
| Boolean | |
| Unit |
setTimeout(timeout: Int)Set the |
| ByteArray! |
transceive(data: ByteArray!)Send raw NFC-F commands to the tag and receive the response. |
Public methods
close
fun close(): Unit
| Exceptions | |
|---|---|
java.lang.Exception |
if this resource cannot be closed |
java.io.IOException |
if an I/O error occurs |
java.lang.SecurityException |
if the tag object is reused after the tag has left the field |
connect
fun connect(): Unit
| Exceptions | |
|---|---|
TagLostException |
if the tag leaves the field |
java.io.IOException |
if there is an I/O failure, or connect is canceled |
java.lang.SecurityException |
if the tag object is reused after the tag has left the field |
get
static fun get(tag: Tag!): NfcF!
Get an instance of NfcF for the given tag.
Returns null if NfcF was not enumerated in Tag.getTechList. This indicates the tag does not support NFC-F.
Does not cause any RF activity and does not block.
| Parameters | |
|---|---|
tag |
Tag!: an NFC-F compatible tag |
| Return | |
|---|---|
NfcF! |
NFC-F object |
getManufacturer
fun getManufacturer(): ByteArray!
Return the Manufacturer bytes from tag discovery.
Does not cause any RF activity and does not block.
| Return | |
|---|---|
ByteArray! |
Manufacturer bytes |
getMaxTransceiveLength
fun getMaxTransceiveLength(): Int
Return the maximum number of bytes that can be sent with transceive.
| Return | |
|---|---|
Int |
the maximum number of bytes that can be sent with transceive. |
getSystemCode
fun getSystemCode(): ByteArray!
Return the System Code bytes from tag discovery.
Does not cause any RF activity and does not block.
| Return | |
|---|---|
ByteArray! |
System Code bytes |
getTag
fun getTag(): Tag!
| Return | |
|---|---|
Tag! |
the Tag backing this TagTechnology object. |
getTimeout
fun getTimeout(): Int
Get the current transceive timeout in milliseconds.
Requires the android.Manifest.permission#NFC permission.
| Return | |
|---|---|
Int |
timeout value in milliseconds |
| Exceptions | |
|---|---|
java.lang.SecurityException |
if the tag object is reused after the tag has left the field |
isConnected
fun isConnected(): Boolean
| Return | |
|---|---|
Boolean |
true if I/O operations should be possible |
setTimeout
fun setTimeout(timeout: Int): Unit
Set the transceive timeout in milliseconds.
The timeout only applies to transceive on this object, and is reset to a default value when #close is called.
Setting a longer timeout may be useful when performing transactions that require a long processing time on the tag such as key generation.
Requires the android.Manifest.permission#NFC permission.
| Parameters | |
|---|---|
timeout |
Int: timeout value in milliseconds |
| Exceptions | |
|---|---|
java.lang.SecurityException |
if the tag object is reused after the tag has left the field |
transceive
fun transceive(data: ByteArray!): ByteArray!
Send raw NFC-F commands to the tag and receive the response.
Applications must not prefix the SoD (preamble and sync code) and/or append the EoD (CRC) to the payload, it will be automatically calculated.
A typical NFC-F frame for this method looks like:
LENGTH (1 byte) --- CMD (1 byte) -- IDm (8 bytes) -- PARAMS (LENGTH - 10 bytes)
Use getMaxTransceiveLength to retrieve the maximum amount 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.
| Parameters | |
|---|---|
data |
ByteArray!: bytes to send |
| Return | |
|---|---|
ByteArray! |
bytes received in response |
| Exceptions | |
|---|---|
TagLostException |
if the tag leaves the field |
java.io.IOException |
if there is an I/O failure, or this operation is canceled |