Most visited

Recently visited

Added in API level 10

Ndef

public final class Ndef
extends Object implements TagTechnology

java.lang.Object
   ↳ android.nfc.tech.Ndef


提供对 Tag NDEF内容和操作的 Tag

使用 get(Tag)获取 Ndef对象。

NDEF是NFC论坛数据格式。 数据格式在NdefMessageNdefRecord中实现。 该类提供了检索和修改标签上的NdefMessage方法。

目前有四种NFC论坛标准化标签类型可以格式化为包含NDEF数据。

It is mandatory for all Android devices with NFC to correctly enumerate Ndef on NFC Forum Tag Types 1-4, and implement all NDEF operations as defined in this class.

一些供应商有自己明确定义的规范,用于在不属于上述类别的标签上存储NDEF数据。 带有NFC的Android设备应Ndef在这些供应商规格下枚举并实施Ndef ,但这不是强制性的。 getType()返回描述此规范的字符串,例如MIFARE_CLASSICcom.nxp.ndef.mifareclassic

支持MIFARE Classic的Android设备还必须在格式化为NDEF的MIFARE Classic标签上正确实施 Ndef

为确保所有Android设备与NFC之间的兼容性,建议在使用NDEF有效载荷的NFC标签的新部署中使用NFC论坛类型1-4。 供应商NDEF格式不适用于所有Android设备。

注意:执行I / O操作的方法需要 NFC权限。

Summary

Constants

String MIFARE_CLASSIC

NDIF在MIFARE Classic上

String NFC_FORUM_TYPE_1

NFC论坛标签类型1

String NFC_FORUM_TYPE_2

NFC论坛标签类型2

String NFC_FORUM_TYPE_3

NFC论坛标签类型4

String NFC_FORUM_TYPE_4

NFC论坛标签类型4

Public methods

boolean canMakeReadOnly()

指示标记是否可以通过 makeReadOnly()

void close()

禁用对来自此 TagTechnology对象的标记的I / O操作,并释放资源。

void connect()

对来自此 TagTechnology对象的标记启用I / O操作。

static Ndef get(Tag tag)

为给定标签获取 Ndef的实例。

NdefMessage getCachedNdefMessage()

获取在发现时从标签中读取的 NdefMessage

int getMaxSize()

以字节为单位获取最大的NDEF消息大小。

NdefMessage getNdefMessage()

阅读这个标签上的当前 NdefMessage

Tag getTag()

获取 Tag对象支持此 TagTechnology对象。

String getType()

获取NDEF标签类型。

boolean isConnected()

帮助者指出I / O操作是否可行。

boolean isWritable()

确定标签是否可写。

boolean makeReadOnly()

使标签为只读。

void writeNdefMessage(NdefMessage msg)

覆盖此标签上的 NdefMessage

Inherited methods

From class java.lang.Object
From interface android.nfc.tech.TagTechnology
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Constants

MIFARE_CLASSIC

Added in API level 10
String MIFARE_CLASSIC

NDIF在MIFARE Classic上

常量值:“com.nxp.ndef.mifareclassic”

NFC_FORUM_TYPE_1

Added in API level 10
String NFC_FORUM_TYPE_1

NFC论坛标签类型1

常量值:“org.nfcforum.ndef.type1”

NFC_FORUM_TYPE_2

Added in API level 10
String NFC_FORUM_TYPE_2

NFC论坛标签类型2

常量值:“org.nfcforum.ndef.type2”

NFC_FORUM_TYPE_3

Added in API level 10
String NFC_FORUM_TYPE_3

NFC论坛标签类型4

常量值:“org.nfcforum.ndef.type3”

NFC_FORUM_TYPE_4

Added in API level 10
String NFC_FORUM_TYPE_4

NFC论坛标签类型4

常量值:“org.nfcforum.ndef.type4”

Public methods

canMakeReadOnly

Added in API level 10
boolean canMakeReadOnly ()

指示标记是否可以通过 makeReadOnly()设置为只读。

不会导致任何RF活动并且不会阻止。

Returns
boolean true if it is possible to make this tag read-only

close

Added in API level 10
void close ()

禁用对来自此 TagTechnology对象的标记的I / O操作,并释放资源。

还会导致其他线程上的所有被阻止的I / O操作被取消,并返回 IOException

需要 NFC权限。

Throws
IOException

connect

Added in API level 10
void connect ()

对来自此 TagTechnology对象的标记启用I / O操作。

可能导致RF活动并可能阻塞。 不能从主应用程序线程调用。 IOException通过从另一个线程呼叫close()而被阻止的呼叫将被取消。

一次只能将一个 TagTechnology对象连接到 Tag

当I / O操作完成时,应用程序必须调用 close()

需要 NFC权限。

Throws
IOException

get

Added in API level 10
Ndef get (Tag tag)

获取给定标签的 Ndef实例。

如果Ndef未在getTechList()枚举,则返回null。 这表示该标记不是NDEF格式,或者该标记是NDEF格式的,但是根据此Android设备未实现的供应商规范。

不会导致任何RF活动并且不会阻止。

Parameters
tag Tag: an NDEF compatible tag
Returns
Ndef Ndef object

getCachedNdefMessage

Added in API level 10
NdefMessage getCachedNdefMessage ()

获取在发现时从标签中读取的 NdefMessage

如果NDEF消息被I / O操作修改了,那么它不会在这里更新,这个函数只返回标签进入该字段时发现的内容。

请注意,如果标记处于NFC论坛定义的INITIALIZED状态,则此方法可能会返回null,因为在此状态下,标记已格式化为支持NDEF但尚未包含消息。

不会导致任何RF活动并且不会阻止。

Returns
NdefMessage NDEF Message read from the tag at discovery time, can be null

getMaxSize

Added in API level 10
int getMaxSize ()

以字节为单位获取最大的NDEF消息大小。

不会导致任何RF活动并且不会阻止。

Returns
int size in bytes

getNdefMessage

Added in API level 10
NdefMessage getNdefMessage ()

阅读这个标签上的当前 NdefMessage

这总是读取标签上存储的当前NDEF消息。

请注意,如果标签处于NFC论坛定义的INITIALIZED状态,此方法可能会返回null,因为在该状态下,标签的格式设置为支持NDEF但尚未包含消息。

这是一个I / O操作,将阻塞直到完成。 它不能从主应用程序线程调用。 如果从另一个线程调用close()被阻止的呼叫将被取消, IOException

需要 NFC权限。

Returns
NdefMessage the NDEF Message, can be null
Throws
TagLostException if the tag leaves the field
IOException if there is an I/O failure, or the operation is canceled
FormatException if the NDEF Message on the tag is malformed

getTag

Added in API level 10
Tag getTag ()

获取 Tag对象支持此 TagTechnology对象。

Returns
Tag the Tag backing this TagTechnology object.

getType

Added in API level 10
String getType ()

获取NDEF标签类型。

返回一个 NFC_FORUM_TYPE_1NFC_FORUM_TYPE_2NFC_FORUM_TYPE_3NFC_FORUM_TYPE_4MIFARE_CLASSIC或尚未在这个Android API正式另一NDEF标签类型。

不会导致任何RF活动并且不会阻止。

Returns
String a string representing the NDEF tag type

isConnected

Added in API level 10
boolean isConnected ()

帮助者指出I / O操作是否可行。

如果返回true connect()已经完成,并 close()没有被调用,并且 Tag不知道是超出范围。

不会导致射频活动,也不会阻止。

Returns
boolean true if I/O operations should be possible

isWritable

Added in API level 10
boolean isWritable ()

确定标签是否可写。

NFC Forum标签可以处于只读或读写状态。

不会导致任何RF活动并且不会阻止。

需要 NFC权限。

Returns
boolean true if the tag is writable

makeReadOnly

Added in API level 10
boolean makeReadOnly ()

使标签为只读。

这会将CC字段设置为指示标签是只读的,并且在可能的情况下永久设置锁定位,以防止对存储器进行任何进一步的修改。

这是一个单向过程,无法恢复!

这是一个I / O操作,将阻塞直到完成。 它不能从主应用程序线程调用。 如果从另一个线程调用close()被阻止的呼叫将被IOException取消。

需要 NFC权限。

Returns
boolean true on success, false if it is not possible to make this tag read-only
Throws
TagLostException if the tag leaves the field
IOException if there is an I/O failure, or the operation is canceled

writeNdefMessage

Added in API level 10
void writeNdefMessage (NdefMessage msg)

覆盖此标签上的 NdefMessage

这是一个I / O操作,将阻塞直到完成。 它不能从主应用程序线程调用。 如果从另一个线程调用close()被阻止的呼叫将被IOException取消。

需要 NFC权限。

Parameters
msg NdefMessage: the NDEF Message to write, must not be null
Throws
TagLostException if the tag leaves the field
IOException if there is an I/O failure, or the operation is canceled
FormatException if the NDEF Message to write is malformed

Hooray!