How to read Nfc tags in Android?

How can I read and display NDEF messages from NFC tags? Please help me. Can someone provide sample source code for reading the Nfc tag?

+4
source share
2 answers

1) General description of NFC on android here
2) NFCDemo is here
3) Very good information also here.
4) Also in the book "Android Programming" from "Zigurd Mednieks" there is a chapter on NFC

BR
Sten

+10
source

We have two options for reading the nfc card.

  • Read from cache

    Ndef ndef = Ndef.get(tag); if (ndef == null) { // NDEF is not supported by this Tag. return null; } NdefMessage ndefMessage = ndef.getCachedNdefMessage(); if (ndefMessage == null) { mTextView.setText("The tag is empty !"); return null; } NdefRecord[] records = ndefMessage.getRecords(); for (NdefRecord ndefRecord : records) { if (ndefRecord.getTnf() == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT)) { try { return readText(ndefRecord); } catch (UnsupportedEncodingException e) { Log.e(TAG, "Unsupported Encoding", e); } } } 
  • Read directly using

    public void readFromTag (intent intent) {

     Ndef ndef = Ndef.get(detectedTag); try{ ndef.connect(); txtType.setText(ndef.getType().toString()); txtSize.setText(String.valueOf(ndef.getMaxSize())); txtWrite.setText(ndef.isWritable() ? "True" : "False"); Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (messages != null) { NdefMessage[] ndefMessages = new NdefMessage[messages.length]; for (int i = 0; i < messages.length; i++) { ndefMessages[i] = (NdefMessage) messages[i]; } NdefRecord record = ndefMessages[0].getRecords()[0]; byte[] payload = record.getPayload(); String text = new String(payload); txtRead.setText(text); ndef.close(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), "Cannot Read From Tag.", Toast.LENGTH_LONG).show(); } 

    }

+5
source

All Articles