Come leggere dal tag NFC rilevato (messaggio NDEF). Android NFC

Domanda simile – Come leggere dettagliati tag NFC (contenuto NDEF) in android?

Voglio che la mia applicazione Android sia in grado di leggere e analizzare un messaggio NDEF rilevato.

  • Come applicare diversi filtri di colore su un'image in android?
  • C'è un buon motivo per che un'intestazione di ListView prenda una posizione?
  • Come avviare il servizio android per l'installazione
  • Come eseguire il debug di un eseguibile Dalvik su Android con GDB?
  • setSelezione su Spinner basata su rowId
  • Layout diversi per diverse size dello schermo su Android?
  • Ho già modificato l'AndroidManifest.xml per rilevare i tag nfc e ho aggiunto il filter di intenti che assomiglia a questo

    <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> 

    Credo che questo sia ottimo come quando utilizzo l'applicazione di esempio NFCDemo fornita con l'SDK per creare MockNDEFtags, quando l'elenco delle applicazioni che posso scegliere per gestire questi tag generati appare la mia applicazione. Faccio quindi clic sulla mia applicazione e si apre senza problemi, ho solo bisogno di un modo per leggere i dati che sono stati trasmessi al messaggio NDEF. Il codice:

      Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // get NDEF tag details Ndef ndefTag = Ndef.get(myTag); ... NdefMessage ndefMesg = ndefTag.getCachedNdefMessage(); 

    è stato suggerito in una domanda simile e in tutto il web trovo molte risposte simili. Il mio problema è con la linea di codice

     "Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG);" 

    Ottengo l'errore "il nfcintent non può essere risolto" Mi rendo conto che l'autore del codice probabilmente mette nfcintent come segnaposto per un intento specifico per la mia applicazione, tuttavia non sono sicuro di cosa avrebbe dovuto mettere al suo posto.

    La mia attività principale che inizia la mia applicazione sembra così

     public class TabsActivity extends TabActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost = getTabHost(); // Tab for Graph TabSpec graphspec = tabHost.newTabSpec("Graph"); // setting Title and Icon for the Tab graphspec.setIndicator("Graph"); Intent graphIntent = new Intent(this, GraphActivity.class); graphspec.setContent(graphIntent); // Tab for Intro TabSpec introspec = tabHost.newTabSpec("Intro"); introspec.setIndicator("Intro"); Intent introIntent = new Intent(this, IntroActivity.class); introspec.setContent(introIntent); // Adding all TabSpec to TabHost tabHost.addTab(introspec); // Adding intro tab tabHost.addTab(graphspec); // Adding graph tab } 

    }

    Suppongo che questo avvii l'applicazione è where deve essere affrontato il tag NFC. Se posso accedere al NDEFMessage dal tag, ho già la possibilità di analizzarla con NdefMessageParser dall'applicazione di esempio di android. Voglio analizzare le informazioni dal NDEFmessage e, infine, avere queste informazioni accessibili da ciascuna scheda dell'app.

  • Android ha impostato Volley da utilizzare dalla cache
  • Come gestire ActivityNotFoundException?
  • Esempio conciso di caricamento di file tramite Java lib Apache Commons
  • Controlla lo stato dell'abbonamento in-app in Android
  • Come rendere parte di each elemento in listview in android?
  • Problema di compatibilità con Samsung Galaxy Mini
  • 2 Solutions collect form web for “Come leggere dal tag NFC rilevato (messaggio NDEF). Android NFC”

    Per get l'intento che passa il tag NFC per avviare l'attività nel mio caso, utilizzare "nfcintent"

     Intent nfcintent = getIntent(); 

    Prova questo snippet per estrarre il messaggio da Tag:

     Parcelable[] rawMsgs = intent .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage msg = (NdefMessage) rawMsgs[0]; extractMessage(msg); private void extractMessage(NdefMessage msg) { byte[] arrays = null; arrays = msg.getRecords()[0].getPayload(); } 

    Controlla anche questo esempio per NFC Reader / Writer

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.