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 |