Comenzar con el emulador Open NFC

Me gustaría comenzar a desarrollar aplicaciones NFC para Android. Empecé recientemente con Android y creo que es una plataforma muy interesante para desarrollar. Antes de salir e invertir en un dispositivo Android que tenga incorporado un lector de NFC y tags de compra, me gustaría tener una idea de cómo uno realmente escribe el código para ellos.

Encontré el emulador Open NFC Android y parece ser lo que estoy buscando. He descargado: 1. The Open NFC para Android 2. The Open NFC core Edition

Después de crear un avd que para Open NFC, seguí las instrucciones.

Ahora el problema al que me enfrento es que en el emulador, cuando voy a la configuración inalámbrica y luego habilito NFC, dice que hubo un error. He intentado configurar la dirección IP a 10.0.2.2 y también la dirección IP que obtengo de ipconfig, pero sin resultado. No hay ningún registro que pueda ver. También intenté desactivar completamente el firewall mientras lo ejecutaba para que no se bloquee accidentalmente.

Como nota al margen, me gustaría mencionar que tengo Connection Manager iniciado antes de iniciar el emulador.

¿Alguien tiene experiencia con Open NFC para Android? Si alguien puede indicarme un mejor conjunto de instrucciones, estaría muy agradecido. Si alguien podría sugerir otro simulador con el que pueda probar algunos ejemplos de código y obtener una mejor comprensión sobre NFC. .

La salida del adb logcat es

W/KeyCharacterMap( 165): No keyboard for id 0 W/KeyCharacterMap( 165): Using default keymap: /system/usr/keychars/qwerty.kcm.bin D/NfcSettings( 165): onPreferenceChange: Setting NFC key: nfc_cc_ip D/NfcSettings( 165): onPreferenceChange: Setting NFC value: 10.0.2.2 D/NfcSettings( 165): onPreferenceChange: Setting System NFC NFC_CC_IP: 10.0.2.2 D/NfcSettings( 165): onPreferenceChange: Setting NFC key: nfc_hal_mode_list D/NfcSettings( 165): onPreferenceChange: Setting NFC value: 1 D/NfcSettings( 165): onPreferenceChange: Setting NFC mPreferenceNfcHalMode: SIMULATOR:1 D/NfcSettings( 165): onPreferenceChange: Setting System NFC NFC_HAL_MODE: 1 W/InputManagerService( 68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@406df430 D/NfcEnabler( 165): Setting NFC enabled state to: true D/OpenNFCService( 250): Enabling NFC. previous =false D/OpenNFCService( 250): mIsNfcEnabled NFC =false D/OpenNFCService( 250): _enable =true D/OpenNFCService( 250): IOpenNFCService:setNFCEnabled(true) D/OpenNFCService( 250): Invalid IP address D/OpenNFCService( 250): can't create configuration ! D/OpenNFCService( 250): updateNfcOnSetting: false D/OpenNFCService( 250): NFC success of _enabletrue) is false D/OpenNFCService( 250): $$$NFC$$$ Will connect ! $$$NFC$$$ W/NfcEnabler( 165): Error setting NFC enabled state to true 

Obtengo el mismo error cuando cambio el IP al que obtuve con ipconfig.

 D/NfcSettings( 165): onPreferenceChange: Setting NFC key: nfc_cc_ip D/NfcSettings( 165): onPreferenceChange: Setting NFC value: 114.31.179.86 D/NfcSettings( 165): onPreferenceChange: Setting System NFC NFC_CC_IP: 114.31.179.86 D/NfcEnabler( 165): Setting NFC enabled state to: true D/OpenNFCService( 250): Enabling NFC. previous =false D/OpenNFCService( 250): mIsNfcEnabled NFC =false D/OpenNFCService( 250): _enable =true D/OpenNFCService( 250): IOpenNFCService:setNFCEnabled(true) D/OpenNFCService( 250): Invalid IP address D/OpenNFCService( 250): can't create configuration ! D/OpenNFCService( 250): updateNfcOnSetting: false D/OpenNFCService( 250): NFC success of _enabletrue) is false D/OpenNFCService( 250): $$$NFC$$$ Will connect ! $$$NFC$$$ W/NfcEnabler( 165): Error setting NFC enabled state to true 

@nikhil: Gracias por el enlace a TCP Echo Server. Tengo mi stack OpenNFC para trabajar después de ejecutar el servidor de eco. Para que otros usuarios puedan beneficiarse de este ejercicio, aquí hay un resumen de lo que se debe hacer para configurar la stack OpenNFC con el simulador de controlador NFC (NFCC).

– La stack (con el simulador NFCC) solo es compatible con host de Windows , ya que tanto el Centro de conexión como el simulador NFCC son aplicaciones de Windows.

–Necesidad de descargar los 3 paquetes :

  1. Complemento OpenNFC para Android SDK
  2. OpenNFC core Edition , que tiene las aplicaciones del Centro de conexión y del simulador NFCC.
  3. El servidor de eco: EchoTool

– Instalar el complemento SDK y crear un AVD utilizando el complemento SDK.

– Inicie Connection Center (ejecute “Connection Center.exe”) y configúrelo para aceptar conexiones de clientes desde otras máquinas.

–comience el simulador NFCC (ejecute “NfcSimulator.exe”).

–start echo server (en el puerto 7), usando el cmd: echotool / p tcp / s 7

–comience el emulador de Android usando el AVD recién creado.

–Desde el emulador, seleccione Configuración-> Conexiones inalámbricas y redes-> Configuración de NFC

–enter 10.0.2.2 en IP Connection Center

–seleccione el simulador para la implementación NFC HAL

¡Ahora haz clic en la palanca de NFC (checkbox) para iniciar la stack de NFC!

He experimentado problemas similares. Resulta que el Centro de conexión mencionado en el documento es una aplicación de Windows. Esto es del desarrollador de Inside: “The Connection Center es una herramienta lanzada en formato binario para Windows. Puede encontrarlo, así como el simulador de NFC, en la Edición Core de Open NFC”. Tengo mi entorno de comstackción (Eclipse) ejecutándose en un host Ubuntu. Así que no tengo suerte con este. ¿También estás en un host Linux?

El Centro de conexión debe estar ejecutándose para que el simulador de controlador NFC funcione, como se indica en el documento: “Antes de iniciar AVD, el centro de conexión debe iniciarse y configurarse para aceptar conexiones de clientes desde otras máquinas”.

De todos modos, después de desconectar Logcat y de los mensajes de depuración, queda claro que el simulador no se puede conectar al centro de conexión. La siguiente salida de logcat se recostack después de hacer clic en el botón de alternancia NFC:

 root@android:/ # logcat D/NfcEnabler( 170): Setting NFC enabled state to: true D/OpenNFCService( 273): Enabling NFC. previous =false D/OpenNFCService( 273): mIsNfcEnabled NFC =false D/OpenNFCService( 273): _enable =true D/OpenNFCService( 273): IOpenNFCService:setNFCEnabled(true) D/NFCService( 273): Java_org_opennfc_service_Interface_OpenNFCServerStart D/NFCService( 273): Java_org_opennfc_service_Interface_OpenNFCServerStart : Simulator has been selected D/Microread( 273): static_nfcc_device_open D/Microread( 273): static_nfcc_device_get_binding E/SIMULATOR( 273): 00071 ERROR HAL : GetNALBinding E/CCCLIENT( 273): static_CCClientCreateSocket / connect() failed 111 E/SIMULATOR( 273): 00072 WARN HAL : =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ E/SIMULATOR( 273): E/SIMULATOR( 273): 00073 WARN HAL : CANNOT CONNECT TO THE CONNECTION CENTER. E/SIMULATOR( 273): E/SIMULATOR( 273): 00074 WARN HAL : SYMPTOM: Impossible to connect to the Connection Center E/SIMULATOR( 273): E/SIMULATOR( 273): 00075 WARN HAL : DIAGNOSTIC: Connection Center not started, firewall, ... E/SIMULATOR( 273): Check Connection Center and your network configuration. E/SIMULATOR( 273): D/SIMULATOR( 273): 00076 TRACE HAL : =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ D/SIMULATOR( 273): E/SIMULATOR( 273): 00077 ERROR SIM : static_NALBindingCreateFunction: Cannot create the com port E/OPENNFC_SERVER( 273): 00031 ERROR NFC_HAL PNALServiceCreate: Error returned by the initialization of the NFC HAL E/OPENNFC_SERVER( 273): 00032 ERROR EVENT : static_PContextCreate: Cannot create the NFC HAL Service E/OPENNFC_SERVER( 273): 00033 ERROR STARTUP BootNFCC : PDriverCreate() failed E/NFCService( 273): Java_org_opennfc_service_Interface_OpenNFCServerStart: StartNFCC failed E/OpenNFCService( 273): OpenNFCServerStart failed D/OpenNFCService( 273): updateNfcOnSetting: false D/OpenNFCService( 273): NFC success of _enabletrue) is false D/OpenNFCService( 273): $$$NFC$$$ Will connect ! $$$NFC$$$ W/NfcEnabler( 170): Error setting NFC enabled state to true 

El desarrollador dijo que para que esto funcione en un host Linux “es posible que deba configurar un servidor de eco TCP en paralelo al Connection Center en la máquina para responder en el puerto 7”. No estoy seguro de cómo se hace y qué se requiere.

Sugiero que pruebe la misma configuración en un host de Windows, que es lo que voy a hacer.

con las nuevas versiones de NFC Core, SDK, Connection Center, NFC Emulator y una nueva imagen de Android Add-on es posible. Lo he probado y funciona … Solo revise la página del Proyecto Open NFC y descargue las nuevas versiones de estas cosas.