Lector de tarjetas NFC ACR 122 incompatible con Android 4.1 Jelly Beans?
Utilicé el ACR 122 antes y funcionó perfectamente con un teléfono Android <4.1. Lo usé para intercambiar mensajes de SNEP P2P … Pero como el teléfono tiene 4.1, el lector empieza a sonar y parpadea cuando coloca el teléfono encima. ¿Alguien más ha encontrado esta incompatibilidad? ¿Alguna solución?
- ¿Cómo podría comprobar si un dispositivo Android es compatible con SNEP o Android Ndef Push Protocol?
- Android Beam: inicia la aplicación con registro de tipo MIME
- Hacer NFC / Beam más automático
- ¿Cómo encuesta de Android para dispositivos NFC
- Escribir etiquetas NFC para que funcione con Android y Windows Phone8
- ACR122U - Leer los datos NFC enviados desde el teléfono Android
- El diálogo de progreso no se muestra en la pantalla
- ¿Cómo instalar Open NFC Simulator para Android?
- NFC: ¿Cuál es la diferencia entre S-beam y Android beam?
- Android NFC: protocolo SNEP y respuesta P2P
- ACS ACR122 SDK Android Peer-to-Peer apoyo?
- La detección de etiquetas NFC no llama aNewIntent y está iniciando desde la actividad principal
- Cómo recibir un archivo usando NFC (Android Beam) en Android
Desde Android 4.1 Jelly Bean, la comunicación NFC peer-to-peer está configurada para usar una tasa de bits más alta (212 kbps), mientras que antes estaba utilizando 106 kbps (en los dispositivos Android con Google Wallet instalado siempre estaba usando 212 kbps).
No sé si el ACR122U puede soportar la tasa de bits más alta a través de javax.smartcardio
. El chip NFC dentro (NXP PN532 ) puede hacerlo. El protocolo ISO18092 / ECMA-340 de bajo nivel para 212 y 424 kbps es diferente de 106 kbps. Con 106 kbps utiliza la misma modulación que ISO14443, mientras que los bitrates más altos usan la misma modulación que FeliCa (vea las páginas 7 y 8 de la norma ). Así que sospecho que esto no se puede manejar a través de javax.smartcardio
.
Genial ver a alguien más trabajando en esto. Puede conectarse al Reader a través de "Direct". Créditos van a Peter Kmet: javax.smartcardio transmitir a NFC lector USB sin tarjeta
Esta muestra sólo cambiará las luces
TerminalFactory factory; List<CardTerminal> terminals; factory = TerminalFactory.getDefault(); terminals = factory.terminals().list(); terminal = terminals.get(0); byte[] response = null; byte[] command = new byte[] { (byte) 0xff, (byte) 0x00, (byte) 0x40, (byte) 0xd0, (byte) 0x04, (byte) 0x05, (byte) 0x05, (byte) 0x02, (byte) 0x01 }; int controlCode = 0x310000 + 3500 * 4; Card card = null; card = terminal.connect("DIRECT"); response = card.transmitControlCommand(controlCode, command);
Por favor, actualizar si usted hace algún progreso con Jelly Bean, voy a salir su código también.
Esto puede ser útil para hacer una conexión al terminal sin una tarjeta en el rango:
terminal.connect("DIRECT");
Resolví el problema con un pequeño "hack". Estoy utilizando el ACR122U con un módulo SAM en él, no sé qué versiones tienen este es el lector TouchATag. Me enteré de que el lector tiene que pasar esta línea, también cuando el teléfono no está en el campo NFC:
cardTerminal.connect("*").getBasicChannel();
Esto es porque usted tiene que poner al lector en el modo del inializer antes de que el teléfono entre en el campo del nfc, y esto trabaja solamente si usted puede enviar APDUs!
Si alguien encuentra una solución para enviar APDUs sin llamar a connect()
en el cardTerminal
.
Este problema no está relacionado con los mayores débiles, logré obtener una comunicación con 424 kbps.
Usted puede encontrar una NFC API que he escrito con este conocimiento en el código googel, también voy a proporcionar una documentación allí:
http://code.google.com/p/java-android-beam-api/
¡Los comentarios son muy bienvenidos!
En lenguaje Java, puede utilizar:
1) nfctools: https://github.com/grundid/nfctools . Funciona en Android 4.0, 4.1, 4.2, 4.3, 4.4.
2) http://code.google.com/p/ismb-snep-java . Funciona en Android 4.0 y Android 4.4 (pero no en 4.1.4.2.4.3). Con el fin de soportar los dispositivos Samsung en 4.4 que requiere algunos cambios en el protocolo (que se puede tomar de los nfctools, pero es mejor utilizar los nfctools para aumentar la compatibilidad).