Added in API level 10

TagTechnology


interface TagTechnology : Closeable
IsoDep

Provides access to ISO-DEP (ISO 14443-4) properties and I/O operations on a Tag.

MifareClassic

Provides access to MIFARE Classic properties and I/O operations on a Tag.

MifareUltralight

Provides access to MIFARE Ultralight properties and I/O operations on a Tag.

Ndef

Provides access to NDEF content and operations on a Tag.

NdefFormatable

Provide access to NDEF format operations on a Tag.

NfcA

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

NfcB

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

NfcBarcode

Provides access to tags containing just a barcode.

NfcF

Provides access to NFC-F (JIS 6319-4) properties and I/O operations on a Tag.

NfcV

Provides access to NFC-V (ISO 15693) properties and I/O operations on a Tag.

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
It is optional for Android NFC devices to provide the following TagTechnology implementations. If it is not provided, the Android device will never enumerate that class via Tag.getTechList.

TagTechnology implementations provide methods that fall into two classes: cached getters and I/O operations.

Cached getters

These methods (usually prefixed by get 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 (including connect with IOException.
  • Only one TagTechnology can be connected at a time. Other calls to connect will return IOException.
  • 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

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

abstract Unit

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

abstract Tag!

Get the Tag object backing this TagTechnology object.

abstract Boolean

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

Public methods

close

Added in API level 10
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

Added in API level 10
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

    Added in API level 10
    abstract fun getTag(): Tag!

    Get the Tag object backing this TagTechnology object.

    Return
    Tag! the Tag backing this TagTechnology object.

    isConnected

    Added in API level 10
    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