GTUG NFC Presentation


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • corto raggio per i pagamenti e la sicurezza
  • lento rispetto a bluetooth
  • differenza principale tra NFC e RFID è NFC permette di fare una comunicazione bidirezionale.
  • tag nfc è diverso da rfid
  • The intent dispatch system is to launch a program from scratch. For instance, you turn your phone on and hover it over a tag. The phone launches an intent, identifying it as a Mifare card. Your app has an intent dispatch for Mifare cards, so it is one of the apps that can be selected. If your intent dispatch is specific enough(compared to other apps), it will be the only app to select, and will run at that point. Foreground dispatch is used by your app while it is running. This way, your app won't be turned off if another app has a similar intent dispatch setup. Now with your app running, it can discover a tag and handle the intent over other apps on the phone, and the phone will not prompt you to select from a bunch of apps that have a similar intent dispatch.
  • API level 9 only supports limited tag dispatch via  ACTION_TAG_DISCOVERED , and only gives access to NDEF messages via the  EXTRA_NDEF_MESSAGES  extra. No other tag properties or I/O operations are accessible. API level 10 includes comprehensive reader/writer support as well as foreground NDEF pushing, and API level 14 provides an easier way to push NDEF messages to other devices with Android Beam and extra convenience methods to create NDEF records.
  • 3-bit TNF (Type Name Format) field: Indicates how to interpret the type field EXTRA_TAG   (required): A   Tag   object representing the scanned tag. EXTRA_NDEF_MESSAGES   (optional): An array of NDEF messages parsed from the tag. This extra is mandatory on   intents.
  • GTUG NFC Presentation

    1. 1. NFC Programming in Android Ishan Fernando @ifdo [email_address] Myti s.r.l.
    2. 2. NFC (Near Field Communication) <ul><li>E' una tecnologia wireless a corto raggio (< 10cm) </li></ul>
    3. 3. NFC (Near Field Communication) <ul><li>Si opera alla frequenza di 13,56MHz </li></ul><ul><li>Può raggiungere una velocità di trasmissione  </li></ul><ul><li>massima di 424 kbit/s. </li></ul>
    4. 4. NFC (Near Field Communication) <ul><li>E' una evoluzione di RFID (Radio Frequency Identification) </li></ul>
    5. 5. Storia
    6. 6. NDEF (NFC Data Exchange Format) <ul><li>NDEF è un formato di incapsulamento dei messaggi (dati) per scambiare informazioni via NFC. </li></ul>
    7. 7. NDEF (NFC Data Exchange Format) <ul><li>Questo formato consente di scambiare informazioni  </li></ul><ul><ul><li>tra due NFC Forum Devices  </li></ul></ul><ul><ul><li>tra un NFC Forum Device e un NFC Forum Tag. </li></ul></ul>
    8. 8. NDEF (NFC Data Exchange Format) <ul><li>Message = n * Records </li></ul><ul><li>Records  =  </li></ul><ul><li>Type + </li></ul><ul><li>Size +  </li></ul><ul><li>Payload (binary data) </li></ul>
    9. 9. NDEF (NFC Data Exchange Format) <ul><li>I messaggi NDEF possono essere di tre tipi :  </li></ul><ul><li>URI   </li></ul><ul><li>il contenuto è un link </li></ul><ul><li>MIME   </li></ul><ul><li>il contenuto è specificato da un mime type </li></ul><ul><li>NFC-specific types  </li></ul><ul><li>utilizzi specifici per diverse tecnologie </li></ul><ul><li> </li></ul>
    10. 10. NFC e NDEF summary <ul><li>NDEF è un formato di encapsulamento dei dati </li></ul>NFC è una tecnologia wireless a corto raggio che consente di creare una comunicazione bidirezionale
    11. 11. NFC Technology summary <ul><ul><li>NFC </li></ul></ul><ul><ul><ul><li>Wireless a corto raggio (< 10cm) </li></ul></ul></ul><ul><ul><ul><li>Frequenza : 13,56MHz  </li></ul></ul></ul><ul><ul><ul><li>Velocità di trasmissione massima : 424 Kbit/s. </li></ul></ul></ul><ul><ul><ul><li>  E' una evoluzione di RFID </li></ul></ul></ul><ul><ul><li>NDEF </li></ul></ul><ul><ul><ul><li>Incapsulamento dei messaggi </li></ul></ul></ul><ul><ul><ul><li>NFC Forum Device <=> NFC Forum Device  </li></ul></ul></ul><ul><ul><ul><li>NFC Forum Device <=> NFC Forum Tag </li></ul></ul></ul><ul><ul><ul><li>Message = n * Records </li></ul></ul></ul><ul><ul><ul><li>Records = Type + Size + Payload (binary data) </li></ul></ul></ul><ul><ul><ul><li>Types: URI, MIME o NFC-specific types </li></ul></ul></ul>
    12. 12. NFC e Android
    13. 13. NFC e Android - dispatch system <ul><ul><li>Maggior parte delle APIs sono basate su NDEF </li></ul></ul><ul><ul><li>The tag dispatch system </li></ul></ul>
    14. 14. Intent e Foreground Dispatch Systems <ul><li>Intent Dispatch System </li></ul><ul><li>dichiara i filtri nel Manifest, fa partire l'applicazione anche se è spenta. </li></ul><ul><li>Foreground Dispatch System </li></ul><ul><li>dichiara i filtri mentre in esecuzione, gestione esclusiva per i tag richiesti. </li></ul>
    15. 15. Discover NDEF Tag - Permessi <uses-permission          android:name = &quot;android.permission.NFC&quot; /> <uses-sdk            android:minSdkVersion = &quot;10&quot; /> <uses-feature            android:name = &quot;android.hardware.nfc&quot;          android:required = &quot;true&quot;   />
    16. 16. Discover NDEF Tag - Intent filter <activity>   ...   <intent-filter>      <action            android:name = &quot;android.nfc.action.NDEF_DISCOVERED&quot; />      <category            android:name = &quot;android.intent.category.DEFAULT&quot; />      <data            android:mimeType = &quot;text/plain&quot; />   </intent-filter>   ... </activity>
    17. 17. NDEF Tag - Reading public class MyNFCActivity extends Activity {     @ Override    public void onNewIntent ( Intent intent ) {        Parcelable [] raw = intent . getParcelableArrayExtra (                  NfcAdapter . EXTRA_NDEF_MESSAGES ) ;      NdefMessage message = ( NdefMessage ) raw [ 0 ] ;        NdefRecord record = message . getRecords ()[ 0 ] ;        byte [] payload = record . getPayload () ;       ...   } }
    18. 18. NDEF Tag - Writing public class MyNFCActivity extends Activity {   @ Override   public void onNewIntent ( Intent intent ) {      Tag t  =  intent . getParcelableExtra ( NfcAdapter . EXTRA_TAG ) ;      Ndef ndef = Ndef . get (  t  ) ;      ndef . connect () ;      final byte [] data = … ;      NdefRecord record = new NdefRecord (              NdefRecord . TNF_MIME_MEDIA ,              &quot;text/plain&quot; . getBytes (),              new byte [ 0 ],              data ) ;     NdefRecord []  records =  new  NdefRecord [] { record };      NdefMessage message = new NdefMessage (  records  ) ;          ndef . writeNdefMessage ( message ) ;   } }
    19. 19. NFC e Android summary <ul><ul><li>Dispatch systems </li></ul></ul><ul><ul><ul><li>Intent Dispatch System </li></ul></ul></ul><ul><ul><ul><li>Foreground Dispatch System </li></ul></ul></ul><ul><ul><li>Permessi </li></ul></ul><ul><ul><li>Intent Filter </li></ul></ul><ul><ul><li>Lettura di un tag NDEF </li></ul></ul><ul><ul><li>Scrittura di un tag NDEF </li></ul></ul>
    20. 20. Safeatwork <ul><li>Sicurezza sul lavoro e supporto alla certificazione </li></ul><ul><li>Usato dai manutentori e operai specializzati </li></ul><ul><li>Backend web per la gestione dei dati </li></ul><ul><li>Nata su j2me nel 2008 </li></ul><ul><li>( Nokia 6212 ) </li></ul><ul><li> </li></ul>
    21. 21. Safeatwork <ul><li>Download contenuti  </li></ul><ul><ul><li>Schede tecniche </li></ul></ul><ul><ul><li>Istruzioni operative </li></ul></ul><ul><li>Accesso ai contenuti basato su NFC </li></ul><ul><li>Upload delle attività </li></ul><ul><ul><li>cosa ha fatto l'operatore? </li></ul></ul><ul><ul><li>che procedure ha eseguito? </li></ul></ul>
    22. 22. Safeatwork <ul><li>L'interazione prevede prevalentemente l'utilizzo della lettura dei tag per accedere ai contenuti. </li></ul>
    23. 23. Grazie <ul><li>Android NFC developer documentation </li></ul><ul><li> </li></ul><ul><li>Nfc Forum </li></ul><ul><li> </li></ul><ul><li>Myti </li></ul><ul><li> </li></ul><ul><li>Ishan Fernando </li></ul><ul><li>@ifdo </li></ul><ul><li>[email_address] </li></ul>