I would like to get started with developing NFC apps for android. I have started with android recently and I'm finding it a very interesting platform to develop for. Before I go out and invest in an Android device that has a built in NFC reader and purchase tags, I would like to get a feel of how one actually writes code for them.
I found the Open NFC Android emulator and it appears to be what I'm looking for. I have downloaded : 1. The Open NFC for Android 2. The Open NFC core Edition
After creating an avd that for Open NFC, I followed the instructions.
Now the problem that I face is that in the emulator, when I go to the Wireless Settings and then I enable NFC, It says that there was an error. I have tried setting the IP to 10.0.2.2 and also the IP that I get from ipconfig but to no avail. There's no log that I can see. Also I have tried to disable the firewall completely while running it so that it doesn't get blocked accidentally.
As a side note, I would like to mention that I have the Connection Manager Started before I launch the emulator.
Does anybody have experience with Open NFC for Android, If somebody can point me to a better set of instructions I'd be most grateful alternatively If someone could suggest another simulator by which I can try out some sample code and get a better understanding about NFC.
The output of the adb logcat is
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
I get the same error when I change the IP to the one obtained with 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
Many Android-powered devices that offer NFC functionality already support NFC card emulation. In most cases, the card is emulated by a separate chip in the device, called a secure element.
If you have a Samsung Android phone, check under settings > connections > tap NFC and contactless payments > tap the switch to turn NFC on. Once this is turned on for your device, you can adjust your settings for contactless payments and select your preferred mobile payment service, such as Google Pay or Samsung Pay.
HCE is a technology built into the device operating system which allows a mobile device to emulate a payment (or other) card, enabling users to make cloud-based near field communication (NFC) mobile payments and other NFC 'transactions'.
@nikhil: Thanks for the link to TCP Echo Server. I got my OpenNFC stack to work after running the echo server. So that other users can benefit from this exercise, here's a summary of what to do to set up the OpenNFC stack with the NFC controller (NFCC) simulator.
--The stack (with NFCC simulator) is supported on Windows host only, since both the Connection Center and the NFCC simulator are Windows apps.
--Need to download all 3 packages:
--Install the SDK addon, and create an AVD using the SDK Addon.
--start Connection Center (run "Connection Center.exe") and config it to accept client connections from other machines.
--start NFCC simulator (run "NfcSimulator.exe").
--start echo server (on port 7), using the cmd: echotool /p tcp /s 7
--start Android emulator using the AVD just created.
--from the emulator, select Settings->Wireless & networks->NFC settings
--enter 10.0.2.2 in IP Connection Center
--select Simulator for NFC HAL implementation
--now click the NFC toggle (check box) to start the NFC stack!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With