I'm thinking of starting a project for a local University where we would use NFC to read tags along all the campus with specific information. For example: if a user owns a NFC enabled phone, he could use it to grab additional information when walking through important parts of the library, or auditorium, etc. So he could get contact numbers, attention schedules, and even we would like to show him some 3D models using AR when reading the correct information tag.
Which technologies would be required to create a program for doing this? Android would be our first option since the Google Nexus S is the only cellphone that has NFC. But also what about the tags? Are there any places where I could buy them, and then how could we load information inside the tag?
Also for the Augmented reality in iPhone there are libraries like ARToolkit, so here again guess we would need to use the Android NDK to use it. However if there are any libraries for AR written in Java that would be better.
Anyway if I'm missing some point or ignoring an important technology I should consider when planning the project, would be great to hear about it.
Thanks a lot.
NFC technology is an application of RFID so provided the phone could be set to reader mode then all you'd need is passive RFID tags placed at various points. You could easily use Phidgets for the RFID tags.
http://www.phidgets.com/products.php?category=14
As for AR toolkits there are several ones used for Android. Some using NDK and others in Java.
http://www.arvertising.com/news/2009/11/nyartoolkit-for-android-en/
http://developer.qualcomm.com/dev/augmented-reality
http://www.slashgear.com/qualcomm-augmented-reality-sdk-for-android-released-04105775/
The NXP TagWriter application makes it possible to write NFC tags with one's Android phone. The standard tag reader application makes it possible to read NFC tags and launch URLs stored on them. If you want to roll your own app, the android.nfc package has the various bits you need for reading tags.
There is already a StackOverflow question for where to buy NFC tags, although there aren't very many answers there. A Google search for "create NFC tag" or "buy NFC tag" will give a handful of sources.
Related
I have the source code an NFC reader for Android which supports a few different NFC cards. And I happen to have a NFC card which isn't supported by it.
What do I need to know to add support for it? Should I get the information of the format or something of that card from the manufacturer of the card on their website?
Or is there any more general, universal way which doesn't require contacting me the manufacturer or going to their website?
In general, your application should declare a subset of technologies, which are supported by NFC tag, you want to read. Android dispatches NFC tags in this order (read this to learn more):
ACTION_NDEF_DISCOVERED
ACTION_TECH_DISCOVERED
ACTION_TAG_DISCOVERED
You can register your application for ACTION_TECH_DISCOVERED and declare every technology in separated resource (you can learn more about technologies here). Your app should declare a subset of technologies returned by NFC tag when calling getTechList.
After all, follow specified technology to read its data.
I am fairly new in Android programming and am planning to work on a coupon system using NFC. I have read about reading and writing NFC tags through Android programming and have learnt about the intent filters.
My question is, is it possible to only program a tag so that it will only run my application, not any others. With that said, is it possible to make it not readable by any other applications? I'm quite blur about the types of tags and hope someone could clarify on this matter.
You can mark the tag with a specific mime type, or even tag type, and write the intent filter in such a way that your application will get those tags. But other apps can just copy your intent filter and get notified of the tags too.
You can try encrypting the data on the tag so only your app can read that, but even that is far from flawless. Someone can easily decode the key from your APK. You can encrypt your APK too, but seems to be only supported on Jelly Bean and above.
It all depends on how much time and effort you're willing to put into hiding the contents of your tags, in comparison to how much time and effort your target audience will be willing to invest to crack it.
When you put an NDEF message on the tag (see Ndef), you can add an Android Application Record at the end of the NdefMessage. This will ensure that only your app will be started. If the app is not installed on the device, the user will be redirected to the Play Store app to install it (if it is available there).
I suggest you use
An Android Application record (+Mime record if you want to support older phones)
An Unknown record which only you understand, encrypted using private-public keys.
You might also be interested to see there is such a thing as a Signature record.
I just want to scan details from my bussiness card through NFC into my native app(like address,name,company name) programmatically. I dont have much idea on this.What are the necessary steps i need to set up?How could i begin to do this app in android?
And one more,QR scanner is something different from NFC?
Thanks.
Broadly speaking NFC is a radio communication technology while QR is a image communication technology, so although they have some things like channel coding in common, they are available in mobile phones through quite different APIs.
In terms of functionally, NFC has more features than QR, but QR can be made to work on more devices (at this point in time).
I've actually made an app which supports both NFC and QR. You can get yourself started using the NFC Eclipse plugin (by yours truly) and XZing.
NFC Android Guide: http://developer.android.com/guide/topics/connectivity/nfc/index.html
QRCode is a 2-dimensional barcode. ZXing is an open-source, multi-format 1D/2D barcode image processing library.
Barcodes are different from NFC Tags.
If you're working on NFC, the basic things you'll need is an NFC enabled phone and a tag.. I hope you're aware of this.. Secondly, you should go through this link here. It gives you a basic idea of what NFC is and you can build on that.. Everything you want to know about Android NFC has been described there.
As far as QR is concerned, it's not the same as NFC.. But one thing I'd like to say here is that using QR for a project over NFC would bring down the cost since QR doesn't need extra hardware support like NFC does. But if you want to do something new, then NFC could be "the thing" you're searching for.
Hope this answers your question. If you're looking for something more, then please mention that too so that I can edit my answer later on..
I have been looking into nfc on the android platform, I have a few RFID tags laying around but they dont want to interact with the nexus s. i believe that the tags arent supported by the andriod nfc module (I can for example read my old card of college, which is mifare classic). for reference I have linked to a webstore selling these things.
Is it possible to use these tags with android? Will it be a lot of coding/hacks?
here is a link to the rfid tags:
http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/tag/List/0/SortField/4/ProductID/693/Default.aspx
any guidance is appreciated
The tags you link to operate on 125kHz. NFC operates on 13.56MHz, so it is incompatible with your tags. There is now way a software hack can overcome this.
I don't know is this the right place to ask. Because I need to know the concept about NFC. From the Android 2.3 Platform reference. And i googled it. But i didn't get the correct concept. Can anyone please provide me good links and tutorials for that. And how to implement it in android.
NFC = Near Field Communication
By using NFC tags you are able to scan these tags and retrieve information from the tag. This enables you to enhance physical objects with digital data. F.ex. posters can have a NFC tag and when you scan this tag with your NFC enabled mobile phone you can get some relevant information from the poster
There is a longer and better explanation on http://en.wikipedia.org/wiki/Near_field_communication and there are also examples of use..
Additionally the Android SDK contains a NFC demo project.. take a look at it to see how it is implemented
You can imagine it as bluetooth with a very close field.
NFC is a radio communications technology which works on an effective range of 4 cm. It is used to exchange small amounts or data (or settings up longer session) between devices in the implicit context of close proximity (and thus trusted parties). Passive tags can also be used.
After investigating NFC for about one month, my current impression is that NFC should be supported by most mobile applications, if only to share data with other devices. For example, a mobile web browser would share the link of the currently viewed page if an NFC session is initiated.
I have created an NFC Eclipse plugin if you would like to get started with some passive tags experimentation, it comes with a corresponding (free) Android app which does the actual NFC interfacing. I also recommend reading this guide from Android.
Edit: Plugin now also supports some card readers :-)