public final class Ndef
extends Object implements TagTechnology
| java.lang.Object | |
| android.nfc.tech.Ndef | |
NDEF是NFC论坛数据格式。 数据格式在NdefMessage和NdefRecord中实现。 该类提供了检索和修改标签上的NdefMessage方法。
目前有四种NFC论坛标准化标签类型可以格式化为包含NDEF数据。
NFC_FORUM_TYPE_1), such as the Innovision Topaz NFC_FORUM_TYPE_2), such as the NXP MIFARE Ultralight NFC_FORUM_TYPE_3), such as Sony Felica NFC_FORUM_TYPE_4), such as NXP MIFARE Desfire 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_CLASSIC是com.nxp.ndef.mifareclassic 。
支持MIFARE Classic的Android设备还必须在格式化为NDEF的MIFARE Classic标签上正确实施 Ndef 。
为确保所有Android设备与NFC之间的兼容性,建议在使用NDEF有效载荷的NFC标签的新部署中使用NFC论坛类型1-4。 供应商NDEF格式不适用于所有Android设备。
注意:执行I / O操作的方法需要 NFC权限。
常量(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() 指示标记是否可以通过 |
void |
close() 禁用对来自此 |
void |
connect() 对来自此 |
static Ndef |
get(Tag tag) 为给定标签获取 |
NdefMessage |
getCachedNdefMessage() 获取在发现时从标签中读取的 |
int |
getMaxSize() 以字节为单位获取最大的NDEF消息大小。 |
NdefMessage |
getNdefMessage() 阅读这个标签上的当前 |
Tag |
getTag() 获取 |
String |
getType() 获取NDEF标签类型。 |
boolean |
isConnected() 帮助者指出I / O操作是否可行。 |
boolean |
isWritable() 确定标签是否可写。 |
boolean |
makeReadOnly() 使标签为只读。 |
void |
writeNdefMessage(NdefMessage msg) 覆盖此标签上的 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
android.nfc.tech.TagTechnology
|
|
java.io.Closeable
|
|
java.lang.AutoCloseable
|
|
String MIFARE_CLASSIC
NDIF在MIFARE Classic上
常量值:“com.nxp.ndef.mifareclassic”
String NFC_FORUM_TYPE_1
NFC论坛标签类型1
常量值:“org.nfcforum.ndef.type1”
String NFC_FORUM_TYPE_2
NFC论坛标签类型2
常量值:“org.nfcforum.ndef.type2”
String NFC_FORUM_TYPE_3
NFC论坛标签类型4
常量值:“org.nfcforum.ndef.type3”
String NFC_FORUM_TYPE_4
NFC论坛标签类型4
常量值:“org.nfcforum.ndef.type4”
boolean canMakeReadOnly ()
指示标记是否可以通过 makeReadOnly()设置为只读。
不会导致任何RF活动并且不会阻止。
| 返回(Returns) | |
|---|---|
boolean |
true if it is possible to make this tag read-only |
void close ()
禁用对来自此 TagTechnology对象的标记的I / O操作,并释放资源。
还会导致其他线程上的所有被阻止的I / O操作被取消,并返回 IOException 。
需要 NFC权限。
| 抛出异常(Throws) | |
|---|---|
IOException |
|
void connect ()
对来自此 TagTechnology对象的标记启用I / O操作。
可能导致RF活动并可能阻塞。 不能从主应用程序线程调用。 IOException通过从另一个线程呼叫close()而被阻止的呼叫将被取消。
一次只能将一个 TagTechnology对象连接到 Tag 。
当I / O操作完成时,应用程序必须调用 close() 。
需要 NFC权限。
| 抛出异常(Throws) | |
|---|---|
IOException |
|
Ndef get (Tag tag)
获取给定标签的 Ndef实例。
如果Ndef未在getTechList()枚举,则返回null。 这表示该标记不是NDEF格式,或者该标记是NDEF格式的,但是根据此Android设备未实现的供应商规范。
不会导致任何RF活动并且不会阻止。
| 参数(Parameters) | |
|---|---|
tag |
Tag: an NDEF compatible tag |
| 返回(Returns) | |
|---|---|
Ndef |
Ndef object |
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 |
int getMaxSize ()
以字节为单位获取最大的NDEF消息大小。
不会导致任何RF活动并且不会阻止。
| 返回(Returns) | |
|---|---|
int |
size in bytes |
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 |
Tag getTag ()
获取 Tag对象支持此 TagTechnology对象。
| 返回(Returns) | |
|---|---|
Tag |
the Tag backing this TagTechnology object. |
String getType ()
获取NDEF标签类型。
返回一个 NFC_FORUM_TYPE_1 , NFC_FORUM_TYPE_2 , NFC_FORUM_TYPE_3 , NFC_FORUM_TYPE_4 , MIFARE_CLASSIC或尚未在这个Android API正式另一NDEF标签类型。
不会导致任何RF活动并且不会阻止。
| 返回(Returns) | |
|---|---|
String |
a string representing the NDEF tag type |
boolean isConnected ()
帮助者指出I / O操作是否可行。
如果返回true connect()已经完成,并 close()没有被调用,并且 Tag不知道是超出范围。
不会导致射频活动,也不会阻止。
| 返回(Returns) | |
|---|---|
boolean |
true if I/O operations should be possible |
boolean isWritable ()
确定标签是否可写。
NFC Forum标签可以处于只读或读写状态。
不会导致任何RF活动并且不会阻止。
需要 NFC权限。
| 返回(Returns) | |
|---|---|
boolean |
true if the tag is writable |
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 |
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 |