I am implementing an Android application for NFC devices. I am using a Ndef, NfcV and NdefFormatable tag with two different Android devices: a Samsung Galaxy SII plus and a Samsung Galaxy SII each running android version 4.1.2. the SII plus can see the tag, read it and write it without problem, but the SIII can't see the Ndef technology, it only sees the NfcV technology. Any idea why? The problem occurs on any marketed application as on mine and regardless of the tag having an actual NDEF message or not.
The NfcV Tags aren't official NFC Forum tags. Therefore there is no standardized way how an NDEF message has to be stored on the tag. Also not all NfcV tags work in similar ways. Depending on the specific tag you have to send different commands to the tag if you want to low-level read or write the tag. The memory architecture between different tags differs as well.
In practice NFC communication libraries deal with the problem by having a list of some common NfcV tags along with instructions how to read/write to them. This list differs between different phones and android version.
This incompatibility will not go away in the short term. NfcV may become part of the NFC Forum standard, but that does not help you out now. There are two ways how to deal with this problem:
Don't use NfcV if you need a tag type that can reliable exchange data between all NFC devices. NFC Forum Type1 to Type4 are made for this. NfcV reading/writing capabilites are not even guaranteed to be supported.
If you are tied to this specific NFC tag due to project reasons, you can ignore the built-in NDEF reading code and do it on your own. For this you need the tag datasheet and send raw commands using tag.transceive. It's a bit more work, but it is not that hard.
Related
I have two kinds of tags, one is NXP and the other is mine. The two tags write the same nDef data, which can be correctly detected by the IOS mobile phone and realize the NFC function of the tag. However, the Android mobile phone can only detect the nDef data on the NXP tag, but cannot detect the nDef data on my tag. Why? My tag has also passed NFC Forum Certification.
Hmm, the only thing I can think of is the Ndef Docs say
It is mandatory for all Android devices with NFC to correctly enumerate Ndef on NFC Forum Tag Types 1-4, and implement all NDEF operations as defined in this class.
Some vendors have their own well defined specifications for storing NDEF data on tags that do not fall into the above categories.
For guaranteed compatibility across all Android devices with NFC, it is recommended to use NFC Forum Types 1-4 in new deployments of NFC tags with NDEF payload.
So type 5 does not have guaranteed support as Android has a number of different NFC hardware suppliers.
If you also look at the Android Source for NDEF it seems that possibly it has some extra support of NXP iCode Sli Ndef support which seem to be Type5 and
https://stackoverflow.com/a/10277787/2373819 seems to suggest similar experience to you.
I'm trying to interact with an NFC tag which is not detected by my android phone (Nexus 5). No intent is received when the tag gets closer to the phone.
The tag is a SRIX4K EEPROM, according to the datasheet this chip works at 13.56 MHz and follows the ISO 14443-2 Type B standard, so in my application code I used the NfcB tech object but since the tag isn't detected by the system the app doesn't even reach the point in which NfcB object is used.
I can talk to the tag with no problem using libnfc and a PN532 reader from a linux application, so I know the tag is working and the ISO 14443-2 Type B is the right standard to use.
The app detects other tags just fine and can distinguish between NfcB tags and other tags.
I think the way android detects new tags is not supported by or not working correctly with this chip. Is there any way to do one of the following things?
force the android system to talk to the tag without any intent
trick the android system to think a tag is present and then see what
happens with the NfcB transceive method
I'm open to others ideas too. The phone is rooted and since this is for personal use I can modify the system if needed.
You could try with this application if tag is detected:
https://play.google.com/store/apps/details?id=at.mroland.android.apps.nfctaginfo
If yes, have a look to "Tag information" to known how Android see this tag.
If no, it seems NFC Chip embedded in this phone not support this kind of tag.
I have an ACR122 NFC reader that I'm connecting to an Android device via USB. The Android device is running ICS and doesn't have native NFC functionality.
The SDK that comes with the ACR122 comes with a sample app that is fairly dense and very sparsely documented, however, I can see that they are sending messages as APDU hex arrays. I'm new to this, so am somewhat unclear on how these commands actually work and in what circumstances.
Meanwhile, it would appear that there's now something called NDEF, which abstracts the APDU and allows for a much less confusing message exchange (at least as per this tutorial) however, that's only available on NFC enabled devices (or so it would appear)... I'm hoping there's some way to leverage it with the ACR122.
So, my question is:
Does anyone know if I can utilize NDEF with the ACR122's SDK? I'm not trying to do anything complicated, I just want to read and write to the tags.
If I am not mistaken, NFC classes are part of the ICS SDK, but will always return that no NFC is available.
For the ACR 122, my experience is purely through NFC Tools for Java, it might very well contain some interesting parts which can be ported to Android. It also has its own NDEF parse/serialize part.
For an alternative NDEF parse/serialize library, see here
I'm working on a NFC application which would be using NFC-V tags with ISO 15693 specification. Unfortunately, I do not have a NFC enabled phone at the moment. I wanted to know if I can simulate the behavior of the NFC-V tags in some way.
I know the Android developer website has a NFC Demo, which has a class called FakeTagsActivity. But, that uses NDEF messages. This will not be compatible with NFC-V and I'm not sure how to "create" a Tag object so that it can be simulated.
In my experience, the only reasonable way to develop and test your app would be to use a real NFC-enabled device. Sending and receiving data using NfcV.transceive() is not extremely easy and it is simply to easy to make mistakes. So simulating an NfcV tag is probably much more work than it is worth, IMO.
I have nexus s mobile with me. I am working with the smartcard apps on android. As i surffing over net, I came to know that nexus s mobile is able to read the smartcard tags. When i tried to connect the smartcards which i have , I am unable to get the tag information and i have no Response. why is that not connected with nexus s . All i need to know is, Is there any specific needs the smartcards should satisfy to connect with nexus s ?? Or what kind of tags we can connect with nexus s mobile.
Can anyone pls give me your valuable suggestion.
You can read all the tag types specified by TagTechnology with the Nexus S. If you can not read the Tag it could be a matter of malformed content, invalid authentication Keys (in case you are reading protected Tag such as a Mifare Classic or a Mifare Desfire), etc.
Instead of using default Tag read application, I recommend you the NFC Tag Info from NXP application. It gives you much more information about the underlying specification of the read tag.