studio descargar actualizar java android android-sdk-2.3 nfc

java - actualizar - android studio 2.3.3 descargar



Leyendo múltiples etiquetas NFC simultáneamente en Android (3)

El nuevo SDK 2.3.3 incluye soporte NFC mejorado, y me gustaría escribir una aplicación que se base en esto. En última instancia, me gustaría poder leer los datos de varias etiquetas que ingresan al campo de manera simultánea, pero parece que Android solo se dispara en la primera que ingresa al campo; las siguientes se ignoran.

Desde la lectura de la especificación NFC (ISO / IEC 14443-3) para las etiquetas que estoy usando (Mifare Classic), debería poder enviar un comando ''detener'' a la etiqueta, lo que hará que deje de responder, y permitiré A leer la siguiente etiqueta en el campo. Android no admite el comando de detención directamente en ninguna de las subclases de TagTechnology , así que intenté enviarlo yo mismo directamente usando transceive(new byte[] {0x50, 0x00}) . Esto arroja una IOException , con el mensaje ''Transceive Failed''.

Admito que estoy haciendo todo esto desde el hilo principal, lo que entiendo es una mala idea, pero solo quiero probar el concepto lo más fácilmente posible.

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


¿Ha tenido éxito en el envío de otros comandos utilizando transceive, como el bloque de lectura (0x30, 0x (bloque)) o la autenticación de comandos de sector? Solo pensando que es posible que desee estar seguro de que está usando Transceive correctamente en primer lugar.


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


Lo que quieres es desafortunadamente no es posible en este momento, a menos que hagas una piratería bastante avanzada, que casi nunca es una buena idea

Probablemente podría detener la tarjeta si envía los bytes correctos en el transceive() , como está tratando de hacer ahora. Pero dado que la detención (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 una canalización "cifrada". La transmisión directa a través de la interfaz NfcA desafortunadamente tampoco funciona con la pila actual.

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