Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NFC on Android - Near Field Communication

27,126 views

Published on

Introduces Near Field Communication, NFC Modes, Android APIs and mysterious NDEF Format (NDEFMessages, NDEFRecord, RTC, TNF, etc.)

Published in: Technology, Business
  • These are one of the best companies for review articles. High quality with cheap rates. ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐ I highly recommend it :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! I can recommend a site that has helped me. It's called ⇒ www.HelpWriting.net ⇐ So make sure to check it out!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/39sFWPG ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

NFC on Android - Near Field Communication

  1. 1. NFC
  2. 2. aboutSven Haiges, hybris GmbH Twitter @hansamann Android, HTML5, Groovy & Grails sven.haiges@hybris.de
  3. 3. aboutSven Haiges, hybris GmbH Twitter @hansamann Android, HTML5, Groovy & Grails sven.haiges@hybris.de NFC
  4. 4. Basics Card Emulation Reader/Writer P2P NFC TagTechnologiesTag NDEFDispatch APIs Android
  5. 5. Basics
  6. 6. NFC roots: RFID• RFID - Radio Frequency Identification• 1983: First RFID patent granted• Typical, well-known use-cases for RFID animal identification, road taxes, libraries• 2004: Nokia, Philips and Sony established the NFC Forum
  7. 7. NFC• “transfer data at low speed, without security, over short distances”• ~10 centimeters, in reality less• 424 kBit/s• 13.56 MHz
  8. 8. NFC Devices• First mainstream Android smartphone: Nexus S• Common in new top Android phones• New RIM / Nokia devices• Apple iPhone?
  9. 9. Nokia 6131 • released 2006 • early 2007: iPhone! • J2ME Spec: JSR 257 Contactless Communication API • NFC is not new!
  10. 10. Forecast NFC handsets (k units)600000450000300000150000 0 2010 2011(e) 2012(e) 2013(e) 2014(e) 2015(e) Source:IHS iSuppli,compiled by Digitimes,May 2011
  11. 11. Payment
  12. 12. Tickets Coupons Smart PosterPayment
  13. 13. Tickets Coupons Smart PosterPayment Identity Keycard Personal ID
  14. 14. NFC Checkin Tickets Social CouponsGaming vCard Smart Poster Payment Identity Keycard Personal ID
  15. 15. NFC Checkin Tickets Social Coupons Gaming vCard Smart Poster Payment WiFiConnections Bluetooth Identity Keycard Personal ID
  16. 16. Transponder Format Technology/Capacity 13.56 Mhz Wristbands 125 Khz Cards LabelsSticker Keyfobs NFC Forum Tags Type 1-4
  17. 17. can be made read only!NFC Forum Type 2 Tag Mifare Ultralight - 64 bytes Mifare Ultralight C - 192 bytes
  18. 18. Mifare UltralightAll Surface Tag
  19. 19. Mifare UltralightAll Surface Tag Mifare Ultralight Paper Ticket
  20. 20. Mifare UltralightAll Surface Tag Mifare Ultralight Paper Ticket Mifare Ultralight Square Label
  21. 21. Mifare Ultralight All Surface Tag Mifare Ultralight Paper TicketMifare Classic Mifare UltralightKeyfob Square Label
  22. 22. Shops• tagage.net• rfidshop.com• smartcardfocus.com• and many more...
  23. 23. Comparing NFC Source:NFC Forum
  24. 24. NFC Modes
  25. 25. NFC Modes• Peer-to-Peer Mode• Reader/Writer Mode• Card Emulation Mode
  26. 26. Android NFC Support• Peer-to-Peer Mode: limited• Reader/Writer Mode: excellent support• Card Emulation Mode: no support
  27. 27. NFC & Android
  28. 28. NFC & Android• Tag-Reading ab Android 2.3, API Level 9• Tag-Writing ab Android 2.3.3, API Level 10• Core classes: NFCAdapter, NFCManager, Tag Technology Classes
  29. 29. Android Manifest• NFC Permission <uses-permission android:name="android.permission.NFC" />• API Level <uses-sdk android:minSdkVersion="10" />• NFC Feature <uses-feature android:name="android.hardware.nfc" android:required="true" />
  30. 30. Android Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.flavor.android.nfc" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MimeActivity" android:label="MIME"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="application/json" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /></manifest>
  31. 31. Android Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.flavor.android.nfc" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MimeActivity" android:label="MIME"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="application/json" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /></manifest>
  32. 32. Android Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.flavor.android.nfc" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MimeActivity" android:label="MIME"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="application/json" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /></manifest>
  33. 33. Android Manifest<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.flavor.android.nfc" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MimeActivity" android:label="MIME"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="application/json" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /></manifest>
  34. 34. NFCManager• NFCManager used to get the NFCAdapter• Boring• Shortcut for getSystemService(NFC_SERVICE)
  35. 35. NFCAdapter• the real thing• Control Foreground Dispatch and P2P NDEF Push• check if NFC is turned on
  36. 36. Checking for NFCif (!getNFCAdapter().isEnabled()){ Toast.makeText(getApplicationContext(), "Please activate NFC and press back to return to the application!", Toast.LENGTH_LONG).show(); startActivity( new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS) );}
  37. 37. Reading a Tag• Unlock phone, touch tag :-)• Most likely, the intent chooser will open
  38. 38. Foreground Dispatch• Foreground Activity may redirect all intents related to tag, technology or NDEF discovery to itself• Getting all tags while activity is visible: enable in onResume(), disable in onPause()
  39. 39. Foreground DispatchnfcAdapter.enableForegroundDispatch( techListsArray does not matter activity, here, as ACTION_TECH_DISCOVERED is not in intentFilters array. It can pendingIntent, be null :-) intentFiltersArray, Most basic TAG-catch-all: techListsArray); use ACTION_TAG_DISCOVERED in filterList, no techsintent = PendingIntent.getActivity(activity, 0, new Intent(activity, activity.getClass()) .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);ndef.addDataType("*/*");intentFiltersArray = new IntentFilter[] { ndef };techListsArray = new String[][] { new String[] { NfcA.class.getName() } };
  40. 40. Receiving a Tagpublic void onNewIntent(Intent intent) { Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);}...tag.getId() //returns id as byte[]String techs[] = tag.getTechList();for (String tech : techs) { if (tech.equals("android.nfc.tech.Ndef")) { Ndef ndef = Ndef.get(tag); ndef.getType() ndef.getMaxSize() ndef.canMakeReadOnly() ndef.isWritable() NFCUtil.printNdefMessageDetails(ndef.getCachedNdefMessage())); }}
  41. 41. Tag TechnologiesTag Technologies map totech specifications or topseudo-technologie orcapabilities like NDEF orNDEFFormatable TagTechnologyMifareClassic MifareUltralight NdefFormatable Ndef NfcA NfcB NfcF NfcV IsoDep
  42. 42. Tag TechnologiesTag Technologies map totech specifications or topseudo-technologie orcapabilities like NDEF orNDEFFormatable TagTechnologyMifareClassic MifareUltralight NdefFormatable Ndef NfcA NfcB NfcF NfcV IsoDep
  43. 43. NDEF• NFC Data Exchange Format• NFC Forum• Records can be MIME-type media, URIs or RTDs (Record Type Definitions) 1 *Ndef-Tag NdefMessage NdefRecord
  44. 44. NdefRecordTNF Type ID Payload
  45. 45. NdefRecord TNF Type ID Payload URI URI :-)NdefRecord WELL_KNOWN SMART_POSTER MIME TEXT
  46. 46. Reading Tag Content//r = NdefRecordif (r.getTnf() == NdefRecord.TNF_ABSOLUTE_URI) { b.append(String .format("TNF_ABSOLUTE_URI: type(%1$s), id(%2$s), payload(%3$s)n", new String(r.getType()), idBytes.toString(), new String(r.getPayload())));}else if (r.getTnf() == NdefRecord.TNF_MIME_MEDIA){ b.append(String .format("TNF_MIME_MEDIA: type(%1$s), id(%2$s), payload(%3$s)n", new String(r.getType()), idBytes.toString(), new String(r.getPayload())));}
  47. 47. Tag Dispatch
  48. 48. Tag Dispatch Foreground Activity Dispatch NDEF Data Dispatch: ACTION_NDEF_DISCOVEREDTag Technology Dispatch: ACTION_TECH_DISCOVERED Fall-back Dispatch: ACTION_TAG_DISCOVERED
  49. 49. Direct Start• Write custom NDEF MIME-type media messages• Use custom IntentFilter to bind to your messages
  50. 50. Writing NDEF MIMENdefMessage msg = NFCUtil.getNdefMimeMessage("application/json", "{"key":"value"}");Intent i = new Intent(this, WriteActivity.class);i.putExtra(WriteActivity.NDEF_MESSAGE, msg);startActivity(i);
  51. 51. Writing NDEF MIMENdefMessage msg = NFCUtil.getNdefMimeMessage("application/json", "{"key":"value"}");Intent i = new Intent(this, WriteActivity.class);i.putExtra(WriteActivity.NDEF_MESSAGE, msg);startActivity(i);
  52. 52. Writing NDEF MIMEprivate static NdefRecord getMimeRecord(String mimeType, String content) { NdefRecord record = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeType.getBytes(), getRandomIdBytes(), content.getBytes()); return record;}
  53. 53. Writing NDEF MIMENdef ndef = Ndef.get(tag);if (ndef.isWritable() && ndef.getMaxSize() > this.msg.toByteArray().length){ ndef.connect(); ndef.writeNdefMessage(this.msg); ndef.close();}else //show toast?
  54. 54. P2P: NDEF Push• Create NDEF Message which is pushed to another active device once the other device is close NfcAdapter.enableForegroundNdefPush(activity, ndefmessage) NfcAdapter.disableForegroundNdefPush(activity)
  55. 55. aboutSven Haiges, hybris GmbH Twitter @hansamann Android, HTML5, Groovy & Grails sven.haiges@hybris.de
  56. 56. aboutSven Haiges, hybris GmbH Twitter @hansamann Android, HTML5, Groovy & Grails sven.haiges@hybris.de NFC

×