Android 对NFC标签大小感到困惑
我刚刚启动了我的NFC应用程序,并尝试根据用户操作来写、读和删除内容。我几乎没有什么不懂的东西 关于尺寸 我有一个标签,上面写着一些数据。但是,当我试图在同一个标记上再次写入相同数量的数据时,我无法写入它。它使尺寸大于最大容量。是否有某种方法,因为其尺寸更大,或者有其他方法来减小尺寸 关于擦除数据 我还想删除我写在标签上的数据。是否有某种方法来擦除数据,或者我需要以写入数据的方式写入空字符串 有人能帮我吗。下面是我编写数据的代码Android 对NFC标签大小感到困惑,android,nfc,Android,Nfc,我刚刚启动了我的NFC应用程序,并尝试根据用户操作来写、读和删除内容。我几乎没有什么不懂的东西 关于尺寸 我有一个标签,上面写着一些数据。但是,当我试图在同一个标记上再次写入相同数量的数据时,我无法写入它。它使尺寸大于最大容量。是否有某种方法,因为其尺寸更大,或者有其他方法来减小尺寸 关于擦除数据 我还想删除我写在标签上的数据。是否有某种方法来擦除数据,或者我需要以写入数据的方式写入空字符串 有人能帮我吗。下面是我编写数据的代码 private boolean writeTag(Tag tag)
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图书馆。如果需要,您可以使用此功能:
您确定有可写的NFC标记吗?您如何验证代码中的数据是否适合标记?您定义了6条记录,根据您选择的记录类型和MIME类型,每个记录都有自己的头。除了要存储的网络数据之外,还需要空间。您是否与NDEF规范中的标题定义进行了交叉检查?参见:,例如NFCForum-TS-RTD_1.0和NFCForum-TS-NDEF_1。0@Robert是的,那是可以写的。我可以这样说,因为如果我插入的数据很少,那么这些数据就会反映在标记中,当我读取标记时,我会得到我所拥有的数据inserted@corvairjo我明白你的意思。我是NFC的新手,刚刚开始我的第一个应用程序。我从您的评论中了解到,我需要使用单个标题并插入数据,这样标题就不会占用额外的空间。你能给我一个示例代码来实现这一点吗。我正在浏览你的链接。如何将数据划分为记录取决于你的应用程序和你的需要。您只需要知道每个记录都有一个标头,它也会占用标记上的空间。您不需要自己创建头,这是由操作系统在通过NdefRecord构造函数或createMimeString mimeType、byte[]mimeData等方法创建NDEF记录时完成的。