From what I have understood so far, an NFC phone will act as an NFC reader which will read data from an NFC tag. Now my question is, can we switch this around? Can we make an Android NFC phone behave as the tag which an NFC reader will get data from?
Thanks for your assistance.
At this time, I would answer “no” or “with difficulty”, but that could change over time as the android NFC API evolves.
There are three modes of NFC interaction:
Reader-Writer: The phone reads tags and writes to them. It’s not emulating a card instead an NFC reader/writer device. Hence, you can’t emulate a tag in this mode.
Peer-to-peer: the phone can read and pass back ndef messages. If the tag reader supports peer-to-peer mode, then the phone could possibly act as a tag. However, I’m not sure if android uses its own protocol on top of the LLCP protocol (NFC logical link protocol), which would then prevent most readers from treating the phone as an nfc tag.
Card-emulation mode: the phone uses a secure element to emulate a smart card or other contactless device. I am not sure if this is launched yet, but could provide promising. However, using the secure element might require the hardware vendor or some other person to verify your app / give it permissions to access the secure element. It’s not as simple as creating a regular NFC android app.
More details here:
A real question would be: why are you trying to emulate a simple old nfc tag? Is there some application I’m not thinking of? Usually, you’d want to emulate something like a transit card, access key, or credit card which would require a secure element (I think, but not sure).
Can we make an Android NFC as the tag which an NFC reader will get data from?
The Nexus S supports peer-to-peer mode, which as its name implies, causes one phone to act as a tag which another phone can read. There was a really good Google I/O session on NFC this year. I would recommended watching it if you’re at all interested in NFC.
Check the Host-based Card Emulation (HCE) NFC mode available in Android 4.4.
yes you can. Android kitkat boosts of this functionality here
I’ve not verified that myself but it looks like people managed to include the hidden code into Android again.
They seem to be able to emulate a Mifare Classic card (iso-14443).
I’ll soon test this myself, it looks very interesting.
If you want to do it for a commercial/free app you’ll have a hard time, your users won’t like to change their kernel to support your app.
There would be a simple trick to make your phone emulate a ticket:
You can get a NFC-sticker and put it in or on the phone. This way you are able to read and write it at all times and other devices can also read and write it.
It’s just an idea I had, never seen that used anywhere of course 😉
Yes, take a look at NDEF Push in NFCManager – with Android 4 you can now even create the NDEFMessage to push to the active device at the time the interaction takes place.
In the google io session about NFC, qa section. There was such a question:
No API support for card emulation
No consistent user experience when doing card emulation and no compelling story
If you mean getting a powered NFC device to pretend to be a passive one (eg a tag).. not sure how well it works but the android app NFCClassic purports to record tag contents and then allow the tag to be activated and appear to be the copied tag to NFC readers. Creates a library of recorded tags.
For NFC tech, it is easy. For Google, it will not support it as Google wallet.
No, not at the moment. Google pointed out at the Google IO 2011, that card emulation is not supported and won’t be supported for a while. Main (and easy to understand) problem: Which App should get the right on the phone to emulate a smartcard?
You can definitely make an Android phone write to a tag reader using the NDEFPush functionality in the peer-to-peer support – but you will need to write the code on the tag reader side to use peer-to-peer as well (llcp).
Yes you can which is Peer-To-Peer Mode
Bidirectional P2P connection to exchange data between devices
–Proximity triggered interactions
–Nexus S: Devices have to be placed back-to-back
Example of Applications
–Exchange of vCards
–Hand-over of Tickets & P2P Payment
–Web-page sharing, Youtube-video-sharing
Yes! you can
Just download this app!
And if you want to know how do you use this app have a look at this video
How To use NFC tools to emulate NFC as a tag app
Please mark my answer if it helps you!
Its possible to make Android device behave as an NFC Tag. Such a behaviour is called Card Emulation.
- Card emulation can be host-based(HCE) or secure-element based(CE).
- In HCE, an application running on the Android main processor responds to the reader. So, the phone needs to be ON.
- In CE, an applet residing in the Secure element responds to the reader. Here, its sufficient to have the NFC controller powered, with rest of the device suspended.
- One of these or both approaches can be active simultaneously.
A routing table instructs the NFC controller where route the Reader’s commands to.