TagTechnology
interface TagTechnology : Closeable
android.nfc.tech.TagTechnology |
is an interface to a technology in a Tag
Obtain a TagTechnology
implementation by calling the static method get()
on the implementation class.
NFC tags are based on a number of independently developed technologies and offer a wide range of capabilities. The TagTechnology
implementations provide access to these different technologies and capabilities. Some sub-classes map to technology specification (for example NfcA
, IsoDep
, others map to pseudo-technologies or capabilities (for example Ndef
, NdefFormatable
).
It is mandatory for all Android NFC devices to provide the following TagTechnology
implementations.
NfcA
(also known as ISO 14443-3A)NfcB
(also known as ISO 14443-3B)NfcF
(also known as JIS 6319-4)NfcV
(also known as ISO 15693)IsoDep
Ndef
on NFC Forum Type 1, Type 2, Type 3 or Type 4 compliant tags
TagTechnology
implementations. If it is not provided, the Android device will never enumerate that class via Tag#getTechList
.
MifareClassic
MifareUltralight
NfcBarcode
NdefFormatable
must only be enumerated on tags for which this Android device is capable of formatting. Proprietary knowledge is often required to format a tag to make it NDEF compatible.
TagTechnology
implementations provide methods that fall into two classes: cached getters and I/O operations.
Cached getters
These methods (usually prefixed byget
or is
) return properties of the tag, as determined at discovery time. These methods will never block or cause RF activity, and do not require connect
to have been called. They also never update, for example if a property is changed by an I/O operation with a tag then the cached getter will still return the result from tag discovery time.
I/O operations
I/O operations may require RF activity, and may block. They have the following semantics.connect
must be called before using any other I/O operation.- close must be called after completing I/O operations with a
TagTechnology
, and it will cancel all other blocked I/O operations on other threads (includingconnect
withIOException
. - Only one
TagTechnology
can be connected at a time. Other calls toconnect
will returnIOException
. - I/O operations may block, and should never be called on the main application thread.
Note: Methods that perform I/O operations require the android.Manifest.permission#NFC
permission.
Summary
Public methods | |
---|---|
abstract Unit |
close() Disable I/O operations to the tag from this |
abstract Unit |
connect() Enable I/O operations to the tag from this |
abstract Tag! |
getTag() Get the |
abstract Boolean |
Helper to indicate if I/O operations should be possible. |
Public methods
close
abstract 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.
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 |
See Also
connect
abstract 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.
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 |
See Also
getTag
abstract fun getTag(): Tag!
Get the Tag
object backing this TagTechnology
object.
Return | |
---|---|
Tag! |
the Tag backing this TagTechnology object. |
isConnected
abstract 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.
Return | |
---|---|
Boolean |
true if I/O operations should be possible |