Leer varias etiquetas NFC simultáneamente en Android

El nuevo SDK 2.3.3 incluye soporte NFC mejorado, y me gustaría escribir una aplicación que dependa de esto. En última instancia, me gustaría ser capaz de leer los datos de varias etiquetas que entran en el campo al mismo tiempo, pero Android sólo parece activar en el primero que entra en el campo – los siguientes son ignorados.

De la lectura de la especificación NFC (ISO / IEC 14443-3) para las etiquetas que estoy usando (Mifare Classic), debería ser capaz de enviar un comando 'stop' a la etiqueta, lo que hará que deje de responder y permitir Para leer la siguiente etiqueta en el campo. Android no admite el comando de detención directamente en cualquiera de las subclases de TagTechnology , así que intenté enviarlo directamente usando transceive(new byte[] {0x50, 0x00}) . Esto lanza una IOException , con el mensaje 'transceive failed'.

Es cierto que estoy haciendo todo esto desde el hilo principal, que entiendo es una mala idea, pero sólo quiero probar el concepto tan fácilmente como sea posible.

¿Es posible comunicarse con múltiples etiquetas en el campo al mismo tiempo? ¿Qué estoy haciendo mal?

Lo que quieres no es posible, por desgracia, en este momento, a menos que hagas algo bastante avanzado hackery, que casi nunca es una buena idea 🙂

Probablemente usted podría detener la tarjeta si envía los bytes correctos en el transceive() , como usted está tratando de hacer ahora. Pero desde la parada (o mejor dicho, el HLTA que está intentando enviar) es un comando ISO14443-3A, esto no funcionará a través de la interfaz MifareClassic, que utiliza un canal "encriptado". Transmitir directamente a través de la interfaz NfcA desgraciadamente no funciona con la pila actual.

Incluso si pudiera detener la tarjeta, esto no causará automáticamente que el chip NFC del teléfono reanude el sondeo de nuevas etiquetas, ya que está "dando vueltas" a la pila.

Dependiendo de mi corta experiencia, no puedes trabajar con varias etiquetas. Si dos etiquetas están en el campo no recibe un ID de la etiqueta, es cero binario. Así que mi conjetura es que, en este momento, sólo se puede acceder a una etiqueta y no más de uno puede estar en el campo.

¿Ha tenido éxito el envío de otros comandos utilizando transceptor como el bloque de lectura (0x30, 0x (bloque)) o autenticar los comandos del sector? Sólo pensando que es posible que desee estar seguro de que está utilizando transceive correctamente en el primer lugar.

  • ¿Cómo lees el ID único de una etiqueta NFC en android?
  • Personaje extraño en la carga útil del registro NDEF de Android
  • Archivo json de Android Beam
  • Enrutamiento de NFC Offhost al UICC en el Nexus 5X y el Nexus 6P
  • Tarjeta Emulate Mifare con Android 4.4
  • Android: Autenticación con NXP MiFare Ultralight C
  • Escribir etiquetas NFC usando un Nexus S
  • ¿Cuál es la diferencia entre TAG_DISCOVERED, NDEF_DISCOVERED y TECH_DISCOVERED con el descubrimiento de dispositivos NFC o etiqueta en android?
  • Detección de NFC en dispositivos Android
  • Android nfcA.connect (), nfcA.transceive (), nfcA.setTimeout () y nfcA.getMaxTransceiveLength ()
  • Cómo escribir etiquetas RFID para Nexus S NFC para leer?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.