【发布时间】:2014-05-11 08:13:02
【问题描述】:
使用最新的 NFC 标签,可以存储多达 8k 的数据。 所以我想知道如何在标签上存储图片,比如 NXP TagWriter 应用程序。
我没有找到有关它的信息。谁能解释一下怎么做?
【问题讨论】:
标签: java android tags nfc ndef
使用最新的 NFC 标签,可以存储多达 8k 的数据。 所以我想知道如何在标签上存储图片,比如 NXP TagWriter 应用程序。
我没有找到有关它的信息。谁能解释一下怎么做?
【问题讨论】:
标签: java android tags nfc ndef
您可以使用 MIME 类型的记录将图像存储在 NFC 标签上。例如,如果您的图像是 JPEG 图像,您将使用 MIME 类型“image/jpeg”。您的 NDEF 记录可能如下所示:
+----------------------------------------+
+ MB=1, ME=1, CF=0, SR=0, IL=0, TNF=MIME +
+----------------------------------------+
+ Type Length = 10 +
+----------------------------------------+
+ Payload Length = N +
+----------------------------------------+
+ image/jpeg +
+----------------------------------------+
+ <Your image data (N bytes)> +
+----------------------------------------+
在 Android 上,您可以使用
创建这样的记录byte[] myImage = ...;
NdefRecord myImageRecord = NdefRecord.createMime("image/jpeg", myImage);
或者使用NdefRecord的构造函数:
byte[] myImage = ...;
NdefRecord myImageRecord = new NdefRecord(
NdefRecord.TNF_MIME_MEDIA,
"image/jpeg".getBytes("US-ASCII"),
null,
myImage
);
一旦您拥有 NDEF 标签的 Tag 句柄(即通过接收和 NFC 发现意图),您就可以将 NDEF 记录写入标签:
NdefMessage ndefMsg = new NdefMessage(new NdefRecord[] { myImageRecord });
Tag tag = ...;
Ndef ndefTag = Ndef.get(tag);
if (ndefTag != null) {
ndefTag.connect();
ndefTag.writeNdefMessage(ndefMsg);
ndefTag.close();
} else {
NdefFormatable ndefFormatable = NdefFormatable.get(tag);
if (ndefFormatable != null) {
ndefFormatable.connect();
ndefFormatable.format(ndefMsg);
ndefFormatable.close();
}
}
【讨论】: