使用最新的NFC标签,可以存储多达8k的数据。 所以我想知道如何在标签上存储图片,比如恩智浦TagWriter应用程序。
我没有找到有关它的信息。任何人都可以解释如何做到这一点吗?
答案 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();
}
}