NFC标签上的图片

时间:2014-05-11 08:13:03

标签: java android tags nfc ndef

使用最新的NFC标签,可以存储多达8k的数据。 所以我想知道如何在标签上存储图片,比如恩智浦TagWriter应用程序。

我没有找到有关它的信息。任何人都可以解释如何做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您可以使用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();
    }
}