2013-08-20 195 views
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; 
    } 
+0

您确定您有NFC标签可写吗? – Robert

+0

你是如何验证代码中的数据应该适合标签的?您定义了6条记录,根据您选择的记录类型和MIME类型,每条记录都有自己的标题。除了要存储的网络数据之外,这还需要空间。 你是否用NDEF规范中的头部定义进行了交叉检查?参见:[链接](http://www.nfc-forum.org/specs/),例如NFCForum-TS-RTD_1.0和NFCForum-TS-NDEF_1.0 – corvairjo

+0

@Robert Ya是可写的。我可以说,因为如果我插入的数据很少,那么这是反映在标签中,当我读取标签时,我得到的数据我已经插入 – Android

回答