2012-11-12 7 views
0

Я в настоящее время разрабатываю приложение, которое будет читать NFC tags. В настоящее время я написал код, чтобы получить TAG id Что мне делать дальше? Как я могу прочитать все данные, если intent дополнительный адрес EXTRA_NDEF_MESSAGES пуст.Android читать данные тега NFC

код для чтения RFID я имею на данный момент является

public void onNewIntent(Intent intent) { 
     Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 

     String zin = tag.getTechList()[0]; 
     info.setText("TagID: " + bytesToHex(tag.getId())+" Saturs: "+zin);  

} 

Я хотел бы знать, как читать все данные в этой NFC tag.

Спасибо вам уже!

+0

Я смущен, вы читаете метки RFID или NFC? – ThomasRS

+0

@ Темус сожалеет об этом, я хочу прочитать RFID. – J1and1

+0

Итак, почему вы используете NfcAdapter? (Как в NFC! = RFID) – ThomasRS

ответ

0

В зависимости от типа вашего TAG. Примером для сверхлегкого Mifare

Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
MifareUltralight uTag = MifareUltralight.get(tagFromIntent); 
uTag.connect(); //You should enclose this into a try-catch because of probably IOException 
byte[] data = uTag.readPages(INDEX_OF_PAGES_YOU_WANT); //This returns 4 consecutive pages from the offset you declared. Each page weights 4 bytes 
uTag.close(); 
+0

Спасибо! что просто сделал то, что мне нужно: D – J1and1

0

Существуют различные типы НФК тегов (например, Mifare Ultralight, Mifare Ultralight C, Mifare Classic, Felica ...). Каждый тег имеет различный размер памяти и процедуру чтения. Пример: Mifare Ultralight имеет 64 байта, но mifare Classic 1k содержит 1 килобайт памяти. Для считывания данных из сверхмассивной сетки mifare не требуется дополнительной проверки подлинности, но Mifare classic требует аутентификации. Когда вы получите новое Намерение Вы можете разобрать его, чтобы получить информацию тегов:

@Override 
    protected void onNewIntent(Intent intent){  
     getTagInfo(intent) 
     } 
    private void getTagInfo(Intent intent) { 
    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
    String[] techList = tag.getTechList(); 
    for (int i = 0; i < techList.length; i++) { 
    if (techList[i].equals(MifareClassic.class.getName())) { 

     MifareClassic mifareClassicTag = MifareClassic.get(tag); 
     switch (mifareClassicTag.getType()) { 
     case MifareClassic.TYPE_CLASSIC: 
      //Type Clssic 
      break; 
     case MifareClassic.TYPE_PLUS: 
      //Type Plus 
      break; 
     case MifareClassic.TYPE_PRO: 
      //Type Pro 
      break; 
     } 
    } else if (techList[i].equals(MifareUltralight.class.getName())) { 
    //For Mifare Ultralight 
     MifareUltralight mifareUlTag = MifareUltralight.get(tag); 
     switch (mifareUlTag.getType()) { 
     case MifareUltralight.TYPE_ULTRALIGHT: 
      break; 
     case MifareUltralight.TYPE_ULTRALIGHT_C: 

      break; 
     } 
    } else if (techList[i].equals(IsoDep.class.getName())) { 
     // info[1] = "IsoDep"; 
     IsoDep isoDepTag = IsoDep.get(tag); 

    } else if (techList[i].equals(Ndef.class.getName())) { 
     Ndef.get(tag); 

    } else if (techList[i].equals(NdefFormatable.class.getName())) { 

     NdefFormatable ndefFormatableTag = NdefFormatable.get(tag); 

    } 
    } 
    } 
    } 

Когда вы получаете точные метки, тогда вы должны начать читать процедуру для этого тегов. Читать теги Полный проект находится здесь, в My GitHub Repo

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