2013-08-20 2 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? См .: [link] (http://www.nfc-forum.org/specs/), например. NFCForum-TS-RTD_1.0 и NFCForum-TS-NDEF_1.0 – corvairjo

+0

@Robert Ya, доступный для записи. Я могу сказать, что coz, если я вставляю несколько данных, то это отражается в теге, и когда я читаю тег, я получаю данные, которые я вставил – Android

ответ

0

Посмотрите на это. Write Tag

Это моя библиотека NFC. Вы можете использовать это, если вам нужно. :)

NFC Wrapper

Смежные вопросы