Leer datos de la etiqueta NFC (IsoDep)

Soy novato en Android NFC API.

Actualmente, tengo una etiqueta NFC, estoy haciendo una aplicación de Android para leer los datos de ella. Mi sencilla aplicación se inicia cuando mi teléfono se acerca lo suficiente a la etiqueta NFC. Pero no tengo idea de cómo leer los datos dentro de la etiqueta NFC. La etiqueta utiliza la tecnología IsoDep .

Mi código actual:

@Override protected void onResume (){ super.onResume(); Intent intent = getIntent(); Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); IsoDep isoDep = IsoDep.get(tag); // How to read data from IsoDep instance? 

I googled en Internet, me doy cuenta de la gente está enviando comandos a IsoDep para obtener la respuesta de NFC Tag, supongo que a partir de la respuesta, podemos analizar los datos en la etiqueta, vi a la gente haciendo esto:

  //What is the 'command' ? How to define the command? //eg: byte command = (byte) 0x6A isoDep.transceive(command) 

Pero, el comando es sólo un byte , como un novato, es demasiado difícil de entender lo que está sucediendo. No tengo ni idea de cómo definir el comando para leer datos? ¿Alguien me puede explicar? O hay un documento que puedo aprender sobre el comando?

En general, necesito una guía sobre cómo definir comandos y cómo analizar los datos de la respuesta, me gustaría leer los datos almacenados en la etiqueta y mostrar los datos en formato de cadena en el elemento de interfaz de usuario (por ejemplo, TextView ).

*Y***

No tengo ningún problema con esas configuraciones (eg AnroidManifest.xml), por favor no me guíen en cómo configurar 🙂

IsoDep le permite comunicarse a través de una conexión ISO-14443-4 con la operación de transceive . Sobre este protocolo se intercambian unidades de datos de aplicación (APDU). El formato se especifica, usted encuentra una descripción en Wikipedia.

Para exaple, para seleccionar una aplicación en una tarjeta inteligente con un identificador de aplicación particular (AID), ejecuta el siguiente comando APDU. El resultado indica simplemente ok (9000) o un error.

  byte[] SELECT = { (byte) 0x00, // CLA Class (byte) 0xA4, // INS Instruction (byte) 0x04, // P1 Parameter 1 (byte) 0x00, // P2 Parameter 2 (byte) 0x0A, // Length 0x63,0x64,0x63,0x00,0x00,0x00,0x00,0x32,0x32,0x31 // AID }; Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); IsoDep tag = IsoDep.get(tagFromIntent); tag.connect(); byte[] result = tag.transceive(SELECT); if (!(result[0] == (byte) 0x90 && result[1] == (byte) 0x00)) throw new IOException("could not select applet"); 

Una vez seleccionada la aplicación, puede ejecutar comandos específicos de la aplicación. Los programas se escriben típicamente en JavaCard que sigue la especificación de GlobalPlatorm. El ejemplo siguiente ejecuta en la aplicación seleccionada anteriormente el método 4 (0x04) que devuelve una matriz de bytes de como máximo 11 bytes. Este resultado se convierte en una cadena.

  byte[] GET_STRING = { (byte) 0x80, // CLA Class 0x04, // INS Instruction 0x00, // P1 Parameter 1 0x00, // P2 Parameter 2 0x10 // LE maximal number of bytes expected in result }; result = tag.transceive(GET_STRING); int len = result.length; if (!(result[len-2]==(byte)0x90&&result[len-1]==(byte) 0x00)) throw new RuntimeException("could not retrieve msisdn"); byte[] data = new byte[len-2]; System.arraycopy(result, 0, data, 0, len-2); String str = new String(data).trim(); tag.close(); 
  • ¿Por qué Android HCE no admite Mifare Classic?
  • ¿Cuál es la diferencia entre TAG_DISCOVERED, NDEF_DISCOVERED y TECH_DISCOVERED con el descubrimiento de dispositivos NFC o etiqueta en android?
  • ¿Es posible bloquear una etiqueta NFC y más tarde desbloquear y escribir datos de nuevo?
  • Activar / desactivar NFC con comando ADB
  • Aplicación de Android para imitar una tarjeta RFID física
  • Las etiquetas NFC pueden ser leídas por lector RFID?
  • ¿Cómo instalar Open NFC Simulator para Android?
  • Habilitación de CardEmulation en Android ICS con NFC_EXTRAS
  • Mifare Ultralight C Autenticación en Android (2.3.6)
  • Actualizaciones de OTA para la aplicación Android del propietario del dispositivo (modo quiosco)
  • Detección de NFC en dispositivos Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.