对NFC标签尺寸感到困惑

时间:2013-08-20 12:23:13

标签: android nfc

我刚开始使用NFC应用程序,并尝试根据用户操作写入读取和删除内容。我有一些我无法理解的事情。

关于SIZE

我有标签,我写了一些数据。但是当我试图在同一个标​​签上再次写入相同数量的数据时,我无法编写它。它给出的尺寸大于最大容量。是否有一些方法因为它的尺寸更大或者还有其他方法可以减小尺寸。

关于清理数据

我还想删除我在标签上写的数据。有没有办法擦除数据,或者我需要像写数据一样写空字符串。

任何身体都可以帮助我。下面是我编写数据的代码

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;
    }

1 个答案:

答案 0 :(得分:0)

看看这个。 Write Tag

这是我的NFC库。如果需要,您可以使用它。 :)

NFC Wrapper