Cómo obtener el ID de hardware de NFC en Android

Quiero hacer algo bastante sencillo, pero no puedo resolver si el método en el Gingerbread API es para el ID del token que se está escaneando o el hardware a bordo del Nexus S. Lo que quiero ser capaz de hacer es obtener el identificador único del chip NFC del dispositivo, por lo que puedo registrarlo (por ejemplo, cuando el dispositivo se renuncia a un lector RFID, puedo asociar el dispositivo que se renuncia a una cuenta). ¿Es esto posible con los métodos API actuales disponibles?

El pedazo de código que parece más prometedor (pero no puedo probar porque no tengo un dispositivo) es

byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); 

tagId se establece en una matriz de bytes. Necesita analizar esa matriz en una cadena hexadecimal. Hay muchas formas de hacerlo, pero este código lo hará sin recurrir a bibliotecas externas y es fácil ver lo que está pasando:

 String ByteArrayToHexString(byte [] inarray) { int i, j, in; String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; String out= ""; for(j = 0 ; j < inarray.length ; ++j) { in = (int) inarray[j] & 0xff; i = (in >> 4) & 0x0f; out += hex[i]; i = in & 0x0f; out += hex[i]; } return out; } 

En la versión 2.3.3 usted tiene Tag de la clase y si usted consigue ese objeto con la intención usted puede utilizar el método getId (),

 Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 

y si necesitas id de etiqueta de byte [] como "String" tienes que analizarlo de byte a hexadecimal;).

La intención NfcAdapter.ACTION_TAG_DISCOVERED será despachada automáticamente por el controlador NFC cuando se descubre una etiqueta.

  1. Para manejar tal intención, debe agregar un filtro de intenciones para esta acción android.nfc.action.TAG_DISCOVERED :

     < action android:name="android.nfc.action.TAG_DISCOVERED"/> < category android:name="android.intent.category.DEFAULT"/> 
  2. Agregue el permiso apropiado:

     < uses-permission android:name="android.permission.NFC" /> 
  3. Restringir la aplicación sólo a los dispositivos compatibles:

     < uses-sdk android:minSdkVersion="9" /> < uses-feature android:name="android.hardware.nfc" /> 
  4. Cuando maneja la intención, puede llamar al código que sugirió:

     byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); NdefMessage[] msgs = (NdefMessage[]) intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 

Para más información visite:

  1. OpenIntents

  2. Libro en línea de O'Reilly – Capítulo 18

  • Tutorial NFC para Android que no sea API demo
  • Android: Leyendo la etiqueta NFC en la clase de servicio
  • ¿Cómo puedo asegurarme de que Android Beam no inicie una nueva instancia de mi actividad "singleTop"?
  • Emulación de etiquetas RFID en el emulador de Android
  • Cómo habilitar la configuración NFC
  • Maneje NFC mientras el teléfono está durmiendo en Android
  • Cómo permitir sólo la interacción NFC con dispositivos que tienen la misma aplicación / actividad en ejecución
  • Usar dispositivo NFC como etiqueta NFC
  • Cómo almacenar datos en Secure Element en android
  • Escribir en una tarjeta emulada Android HCE (emulación de la tarjeta Host)
  • Comando APDU para leer los datos de la tarjeta de crédito de Visa Paywave tarjeta NFC habilitado con Samsung Galaxy S4
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.