1
我刚开始我的NFC应用并试图根据用户操作写入读取和删除内容。我有一些我无法理解的东西。关于NFC标签尺寸的疑惑
机构规模
我有,我有写了一些数据的标记。但是当我试图在同一个标签上再次写入相同数量的数据时,我无法编写它。它的尺寸大于最大容量。是否有一些方法的尺寸更大,或者有其他减小尺寸的方法。
关于擦数据
我也想删什么都我已经写在标签上的数据。有什么方法可以擦除数据,或者我需要按照写入数据的方式写入空字符串。
任何机构都可以帮助我。以下是我写数据的代码
private boolean writeTag(Tag tag)
{
NdefMessage message = new NdefMessage(createNdefRecords());
try
{
// see if tag is already NDEF formatted
Ndef ndef = Ndef.get(tag);
if (ndef != null)
{
ndef.connect();
if (!ndef.isWritable())
{
displayMessage("Read-only tag.");
return false;
}
// work out how much space we need for the data
int size = message.toByteArray().length;
if (ndef.getMaxSize() < size)
{
displayMessage("Tag doesn't have enough free space.");
return false;
}
ndef.writeNdefMessage(message);
displayMessage("Tag written successfully.");
return true;
}
}
catch (Exception e)
{
displayMessage("Failed to write tag");
}
return false;
}
private void addTempData()
{
data.add("10");
data.add("1");
data.add("1");
data.add("245");
data.add("40238");
data.add("0");
}
public NdefRecord[] createNdefRecords()
{
NdefRecord[] ndefRecords = new NdefRecord[data.size()];
for(int i=0; i < data.size(); i++)
{
NdefRecord record = getNdefRecord(data.get(i));
ndefRecords[i] = record;
}
return ndefRecords;
}
private NdefRecord getNdefRecord(String data)
{
NdefRecord record = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, MimeType.TYPE.substring(1).getBytes(), new byte[] {}, data.getBytes());
return record;
}
您确定您有NFC标签可写吗? – Robert
你是如何验证代码中的数据应该适合标签的?您定义了6条记录,根据您选择的记录类型和MIME类型,每条记录都有自己的标题。除了要存储的网络数据之外,这还需要空间。 你是否用NDEF规范中的头部定义进行了交叉检查?参见:[链接](http://www.nfc-forum.org/specs/),例如NFCForum-TS-RTD_1.0和NFCForum-TS-NDEF_1.0 – corvairjo
@Robert Ya是可写的。我可以说,因为如果我插入的数据很少,那么这是反映在标签中,当我读取标签时,我得到的数据我已经插入 – Android