Introduzione ad NFC
                  Stefano Sanna


   Guest seminar del corso “Applicazioni per dispositivi mobili”
                   L’Aquila, 11 Giugno 2012
Agenda

• Presentazioni :-)

• Near Field Communication
• Breve panoramica sull’application model di Android
• NFC API di Android

• Bibliografia
• Contatti

                               Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Speaker

• Head of Android Lab @ Open Reply


• Mobile app developer (10+ years)
  - First app: 1999 on PSION 5MX!
• Technical Writer
  - Android Programmazione Avanzata (con E. Di Saverio; Ed. FAG)
  - Java Micro Edition (Hoepli)


• Pizza & Pasta lover :-)

                                       Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Near Field Communication

• È una tecnologia a radiofrequenza (13.56MHz) per la
  comunicazione a corto raggio tra oggetti di tipo

 - attivo: smartphone con chip ed API NFC o lettore USB connesso
   ad un computer
 - passivo: tag (superficiale o embedded) associato ad un oggetto
   fisico


• NFC Forum: http://www.nfc-forum.org


                                     Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
NFC vs Bluetooth
• Bluetooth
  - consente la comunicazione a corto raggio (pochi metri) ma ha una
    tempo di setup medio lungo (specie con pairing)
  - permette il trasferimento dati ad alta velocità in modalità streaming
• NFC
  - NFC non richiede setup o pairing: la comunicazione è pressoché
    istantanea
  - è orientato al trasferimento dati “one-shot”: in caso di necessità di
    stream continuo si può passare ad un altro trasporto (Bluetooth o
    WiFi)


• NFC può essere utilizzato per automatizzare il pairing
  di due dispositivi Bluetooth
                                          Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
NFC vs QR Code
• QR Code
 - sono praticamente “a costo zero” perché utilizzano tecnologie
   esistenti e diffusissime (stampa per la produzione e fotocamera dello
   smartphone per la lettura)
 - l’utente “deve prendere la mira” verso l’oggetto da inquadrare
 - non offrono alcuna protezione (crittografia asimmetrica) essendo
   totalmente passivi
 - sono read-only
• NFC
 -   richiede una tecnologia nuova (soprattutto sugli smartphone)
 -   la comunicazione non richiede setup particolare (touch&go)
 -   i tag possono avere funzionalità crittografiche
 -   i tag possono essere letti e scritti
                                        Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Principio di funzionamento


• Il componente attivo emette un campo
  elettromagnetico che induce una corrente sul circuito
  del componente passivo.
  Tale corrente è sufficiente ad
  alimentare il microcontrollore a
  bordo, ricevere il dato, effettuare
  l’elaborazione e trasmettere una
  risposta

                              http://www.scienceprog.com/how-does-rfid-tag-technology-works/




                                Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Qualche numero

• Comunicazione a corto raggio
  - Distanza teorica: 10 cm - Distanza “pratica”: < 4 cm


• Velocità di comunicazione
  - Min: 106 Kbit/s - Max: 424 Kbit/s


• Diffusione:
  - 3.5 miliardi di smartcard MIFARE
  - oltre 40 milioni di reader desktop
  - circa 50 modelli di telefono/smartphone più diffusi dotati di
    funzionalità NFC (hardware + software)

                                          Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Modalità operative
                                                                                                      Tag by TI


                                      r/w riter
                                  e
                           read



                               peer-to-peer

                                                                                                 Samsung Nexus S




                        card
                               emu
                                     latio
                                             n
Samsung Galaxy Nexus
                                                                                                    ACR122U
                                                                                                    USB Reader




                                         Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Modalità operative
• Reader/writer
 - lo smartphone legge e scrive un tag passivo, che può svolgere
   funzioni di semplice identificazione, memorizzazione di dati o
   protezione di contenuti attraverso crittografia
• Peer-to-peer
 - due smartphone comunicano tra loro scambiando piccole quantità di
   dati: una URL, un biglietto da visita, la configurazione Bluetooth
• Card emulation
 - lo smartphone è riconosciuto da un lettore esterno (collegato a PC
   o un altro smartphone in modalità reader/writer) come un tag
   dotato di identificativo, memoria e funzioni crittografiche. In modalità
   Card Emulation lo smartphone può svolgere funzioni di carta di
   credito o di “mobile wallet”

                                        Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Modalità operative


                  Java Micro                                                                                                Windows
                                   BlackBerry    Android      Symbian             bada                   iOS
                    Edition                                                                                                  Phone




reader writer      JSR 257            OS7          2.3.x                                               iOS 6?                 WP 8?




    P2P         API proprietarie      OS7          4.0.x                                               iOS 6?                 WP 8?




   card            JSR 257
                                      OS7       API privata                                            iOS 6?                 WP 8?
 emulation         JSR 177




                                                                   Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Scenari applicativi

                               • Pagamento
                               • Sicurezza e controllo
                                 accessi
                               • Ticketing
                               • Tracking di merci
                               • Gaming
                               • Social
                               • Medical
Google Wallet sample image




                                   Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Alcuni tipi di tag




  Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Si fa presto a dire tag...
Tecnologie




Tipi NFC




 Prodotti


                                                                      http://www.androidavanzato.it



                       Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
NDEF: NFC Data Exchange Format
• Formato di dati standard basato su dei NDEF
  Message contenenti uno o più NDEF Record

• Per consentire alle app di gestire automaticamente il
  contenuto dei record, sono definiti alcuni tipi standard
  attraverso gli NFC RTD (Record Data Type):
  - Text e URI
  - Smart Poster
  - vCard




                                Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Android API
Android application model
• Activity
  - rappresenta(va) una unità di interazione utente di un’app
• Fragment
  - introdotti in Android 3, rappresentano unità atomiche di interazione
    con l’utente. Più Fragment costituiscono la vista di una Activity
• Service
  - sono moduli applicativi indipendenti privi di UI. Sono eseguiti in
    background e possono servire più applicazioni
• Broadcast Receiver
  - Ricevono messaggi broadcast inviati dal sistema o da altre app
• Content Provider
  - Forniscono accesso condiviso a sorgenti di dati
                                           Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Intent

• Sono rappresentazioni astratte di:
  - azioni che l’utente vuole intraprendere (visualizzare una foto o
    inviare un’email)
  - funzionalità che una applicazione vuol avviare (una Activity, un
    Service...)
  - eventi propagati nel sistema operativo (è arrivato un SMS, lo stato
    della batteria è cambiato)


• Sono costituiti da ACTION da compiere su DATA
  inviati come attributi


                                          Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Intent
• In base alla Action e ai dati associati all’Intent, il sistema
  decide qual è il componente più adatto a svolgere
  l’azione richiesta
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://
www.repubblica.it"));

startActivity(intent);                                                                          Apre il browser




Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_TEXT, "http://www.repubblica.it");

startActivity(intent);
                                          Consente di scegliere con quale app “inviare” il testo



                                                Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
NFC su Android


• Prima API introdotta sulla API 2.3, Nexus S
  - Reader/writer                                           Chip NXP PN65N
                                                            all’interno di un Nexus S
  - “prototipo” di supporto P2P


• Consolidamento API in
  Ice Cream Sandwich
  - NFC Push




                                   Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Android NFC API


• L’API è organizzata in due package:

• android.nfc
  - contiene le classi di interfacciamento al chip NFC e di gestione di
    messaggi e record NDEF
• android.nfc.tech
  - contiene le classi che modellano i singoli tipi di tag e tecnologie
    supportate dalla piattaforma




                                           Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
android.nfc (reader/writer)
• NfcManager
 - servizio di sistema che fornisce un riferimento all'NfcAdapter
• NfcAdapter
 - modella il modulo NFC del terminale
• NdefMessage
 - rappresenta l'unità elementare di comunicazione tra dispositivi NFC
• NdefRecord
 - l'informazione atomica contenuta in un NdefMessage, costituita da
   payload e metadati
• Tag
 - rappresentazione generica del tag letto dal dispositivo

                                         Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
android.nfc (P2P)

• NfcAdapter.CreateNdefMessageCallback
 - callback invocata quando la piattaforma chiede all'app di predisporre
   un messaggio NDEF da inviare via NFC Push ad un altro terminale
   NFC
• NfcAdapter.OnNdefPushCompleteCallback
 - callback invocata quando l'invio di un messaggio NDEF è andato a
   buon fine
• NfcEvent
 - incapsula (per ora) solo un riferimento all’NfcAdapter che ha
   generato la richiesta di evento push


                                        Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Permission
• Per poter utilizzare l’API NFC è necessario dichiarare
  la permission e richiedere la feature hardware
  sull’AndroidManifest dell’applicazione:




<uses-permission android:name="android.permission.NFC" />

<uses-feature android:name="android.hardware.nfc" android:required="true" />




                                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
android.nfc.tech
• TagTechnology
 - È l'interfaccia comune a tutti i tipi di tag che espone i metodi per
   aprire e chiudere la connessione (necessaria per effettuare tutte le
   successive operazioni di lettura e di scrittura)
• Ndef, NdefFormatable (opzionale)
 - Forniscono accesso a tag (formattati e formattabili) conformi alla
   specifica NDEF, indipendente dal tipo di tag e SCOS sottostante
• IsoDep, MifareClassic (opzionale),
  MifareUltralight (opzionale), NfcA,
  NfcB, NfcF, NfcV
 - Forniscono accesso a specifiche tecnologie di tag ed esportano
   funzionalità di basso livello (ad esempio,
   authenticateSectorWithKeyA() su MifareClassic o getAtqa() su NfcA)
                                         Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Note sul dispatching degli eventi NFC

• Gli eventi di lettura di tag NFC sono propagati
  attraverso Intent


• Tali Intent sono inviati esclusivamente alle Activity
  (no Service, no BroadcastReceiver)


• La scelta del target avviene attraverso Intent Filter
• Gli eventi NFC sono generati e propagati
  solo se il device ha lo schermo sbloccato (no
  “silent NFC” con lo smartphone in standby)
                                  Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Tipi di eventi (ACTION) di lettura di tag


• NDEF_DISCOVERED
 - Il tag appena letto è conforme alla specifica NDEF e contiene dati al
   proprio interno opportunamente formattati
• TECH_DISCOVERED
 - Il tag appena letto espone una o più tecnologie supportate da una
   applicazione installata sul terminale
• TAG_DISCOVERED
 - Nessuna app è registrata su tag NDEF o su specifiche tecnologie: si
   cerca di propagare l’evento generico



                                        Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Logica di dispatching dell’Intent




                           http://developer.android.com/guide/topics/nfc/nfc.html




                  Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
IntentFilter sul manifest

• A seconda del tipo di evento a cui è interessata, una
  Activity dichiara nel manifest uno o più IntentFilter per
  una o più action tra NDEF_DISCOVERED,
  TECH_DISCOVERED e TAG_DISCOVERED.
• Alla lettura di un tag lo stack
  NFC legge tutti i manifest per
  individuare l'Activity più adatta
  a gestirlo; se più di di una è
  candidata, viene mostrata la
  finestra dell'Activity Chooser

                                  Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
IntentFilter per NDEF_DISCOVERED
 È necessario specificare il MIME Type del record
 desiderato (text/plain, application/vnd.myapp.feat, ...):


<activity android:name=".NFCReaderActivity">

    <intent-filter>
      <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
      <data android:mimeType="text/plain"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

</activity>




                                               Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
IntentFilter per TECH_DISCOVERED



<activity android:name=".NFCReaderActivity">

    <intent-filter>
      <action android:name="android.nfc.action.TECH_DISCOVERED"/>
    </intent-filter>

    <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
               android:resource="@xml/nfc_tech_filter" />


</activity>




                                                               Occorre indicare l’elenco
                                                               di tecnologie supportate




                                               Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Elenco tecnologie per TECH_DISCOVERED


     <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
         <tech-list>




                                                                                                             AND
             <tech>android.nfc.tech.NfcA</tech>
             <tech>android.nfc.tech.Ndef</tech>
         </tech-list>
     </resources>

     <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
         <tech-list>




                                                                                                             AND
OR




             <tech>android.nfc.tech.NfcA</tech>
             <tech>android.nfc.tech.NdefFormatable</tech>
         </tech-list>
     </resources>                                     32


     <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
         <tech-list>




                                                                                                             AND
             <tech>android.nfc.tech.MifareClassic</tech>
             <tech>android.nfc.tech.Ndef</tech>
         </tech-list>
     </resources>




                                           Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
IntentFilter per TAG_DISCOVERED




<activity android:name=".NFCReaderActivity">

    <intent-filter>
      <action android:name="android.nfc.action.TAG_DISCOVERED"/>
    </intent-filter>

</activity>




                                               Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Foreground Dispatching
 • Un’Activity in esecuzione può chiedere al sistema di
   avere prelazione sulle notifiche NFC:

//...
mNfcAdapter = NfcAdapter.getDefaultAdapter(mContext);
//...

@Override
public void onResume() {
    super.onResume();

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent
(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

    mNfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);

}




                      Con questi parametri è possibile specificare l’action da ricevere e il filtro per tecnologie e
                      metadati. Non specificare nulla equivale registrarsi per un’Action Guest seminar “Introduzione ad NFC”
                                                           Corso “Applicazioni per dispositivi mobili”- TAG_DISCOVERED
È ora di leggere un tag!

@Override
public void onNewIntent(Intent intent) {
    Bundle bundle = intent.getExtras();

    Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG);

    byte[] tagID = tag.getId(); // ID
    String id = byteToHex(tagID); // convertiamo l’ID in stringa...


    // tech
    String[] techList = tag.getTechList();
    for (String tech : techList) {
        addToUI(tech); // aggiungiamo la technology alla lista in UI
    }
}




                                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Lettura di un NDEF Message

// [...]
Bundle bundle = intent.getExtras();
Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG);

Ndef ndefTag = Ndef.get(tag);

ndefTag.connect();

NdefRecord[] records = ndefTag.getNdefMessage().getRecords();

ArrayList<String> strings = new ArrayList<String>();

for (NdefRecord record : records) {
    byte[] payload = record.getPayload();

    strings.add(decodeTextPayload(payload));
}

ndefTag.close();




                                               Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Decodifica del payload RTD_TEXT
• Il primo byte del payload contiene informazioni
  sull’encoding (UTF-8 o UTF-16) e sulla lunghezza del
  codice IANA della lingua del testo:
// [...]
private String decodeTextPayload(byte[] payload) throws Exception {
   byte status = payload[0];

   int languageCodeLenght = status & 0x3f;

   return new String(payload, 1 + languageCodeLenght, payload.length - 1 -
languageCodeLenght, "UTF-8");
}




                                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Scrittura di un tag con TNF_ABSOLUTE_URI



// [...]
Bundle bundle = intent.getExtras();
Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG);

Ndef ndefTag = Ndef.get(tag);

NdefRecord record = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI ,
    "http://www.repubblica.it".getBytes(Charset.forName("US-ASCII")),
    new byte[0], new byte[0]);

NdefMessage message = new NdefMessage(new NdefRecord[] { record });

ndefTag.connect();
ndefTag.writeNdefMessage(message);
ndefTag.close();




                                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Application Record e Android
• Android 4 introduce due interessanti novità in ambito
  NFC:

  - Android Application Record (AAR): consente di scrivere su un
    tag un record riconosciuto dal sistema operativo che consente di
    avviare automaticamente un’app (anche priva di funzionalità NFC) o
    scaricarla del Play Store (se non già installata)
    [DEMO: APPTAG]

  - Android Beam: implementa la modalità NFC Push che permette
    lo scambio di messaggi NDEF tra due terminali. È supportata
    nativamente da alcune app di sistema e da un numero crescente di
    app di terze parti
    [DEMO BROWSER]

                                       Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Dagli smartphone agli oggetti
Dagli smartphone agli oggetti: Arduino

• La disponibilità di chip NFC/RFID a basso costo
  compatibili con la specifica MIFARE consente di
  realizzare interessanti prototipi di “Internet of Things”
  in cui tag scritti da uno smartphone possono essere
  letti e riconosciuti da oggetti fisici

• Hardware “comodo” per
  sperimentare:
  - Arduino MEGA (1280 o 2560)
  - Elechouse SSRFID basato su MFRC522


                                    Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Arduino MEGA + MFRC522




          Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Lettura dell’ID di un tag MIFARE
int count = 0;                                                         Imposta il chip RFID in modalità
                                                                       lettura automatica dell’ID del tag
void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial1.write(0x02);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial1.available()) {
    Serial.print(Serial1.read(),HEX); //Display the Serial Number in HEX

        count++;

        if (count == 4) {
          Serial.println();
          count = 0;
        } else {
          Serial.print(":");
        }
    }

}


                                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Risorse
X
La tecnologia si diffonde...



                         Questa slide è già
                        obsoleta! Tre nuovi
                        importanti terminali
                        sono ora disponibili
                       sul mercato italiano!!!




             Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Alcuni dei terminali NFC venduti in Italia


  Nokia 603
  (Symbian)




                                                                                      Sony
                                                      Samsung Galaxy                Xperia S                 Nokia N9 (MeeGo)
                                      Samsung          S III (Android)              (Android)
                                     Galaxy Nexus
Nokia 6131           Samsung          (Android)
NFC (JME)         Galaxy S II NFC




                                                                                                               Samsung S5230N
                                                                                                                   (JME)

                                                                                   Samsung Galaxy
BlackBerry 9380    BlackBerry 9900
                                                       HTC One X                   Mini 2 (Android)
                                          Samsung
                                           Nexus S
                                          (Android)    Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Dove acquistare tag e lettori



• SmartCardFocus
  - http://www.smartcardfocus.com


• ebay!




                                    Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Bibliografia


• Near Field Communication: from theory to practice
 - Vedat Coskun, Kerem Ok, Busra Ozdenizci - Wiley Publishing 2011


• Android Developers
 - http://developer.android.com


• Android Programmazione Avanzata
 - E. Di Saverio, S. Sanna - Edizioni FAG Milano, 2012


                                         Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Contatti



• gerdavax AT gmail DOT com
• @gerdavax
• http://www.gerdavax.it




                              Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Licenza

• Questo seminario è un adattamento del talk “NFC:
  tecnologia e applicazioni” di Emanuele Di Saverio e
  Stefano Sanna presentato al Codemotion 2012 a Roma
• Alcune immagini sono tratte dal libro “Android
  Programmazione Avanzata”; altre immagini sono di
  proprietà dei rispettivi titolari
• I contenuti originali di questa presentazione sono
  distribuiti su licenza Creative Commons - Attribution -
  NonCommercial - ShareAlike
  - http://creativecommons.org/licenses/by-nc-sa/3.0/

                                        Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
Grazie

More Related Content

PDF
NFC: tecnologia e applicazioni
PDF
NFC: tecnologia e applicazioni, by Emanuele Di Saverio, Stefano Sanna
PDF
HCIM08 - Mobile Applications
PDF
Smau milano 2012 arena expo comm maurizio-palermo
PDF
Digital signage
PPTX
Alessandro Bellotti - NFC: non solo pagamenti
PPTX
Smau milano 2013 gennaro persano
PPTX
Smau Milano 2014 RFID Global by Softwork 2
NFC: tecnologia e applicazioni
NFC: tecnologia e applicazioni, by Emanuele Di Saverio, Stefano Sanna
HCIM08 - Mobile Applications
Smau milano 2012 arena expo comm maurizio-palermo
Digital signage
Alessandro Bellotti - NFC: non solo pagamenti
Smau milano 2013 gennaro persano
Smau Milano 2014 RFID Global by Softwork 2

Viewers also liked (12)

PDF
Bassilichi @ Smart City Exhibition 2013
PDF
Smau Roma 2011 Carlo Maria Medaglia
PDF
Mobile payments definizioni sicurezza e contesto normativo dic2010
PPTX
Le radici artistiche della visualizzazione dei big data. Big data visualizati...
PDF
How much is the m pos worth
PDF
La sicurezza delle applicazioni di Mobile Payment_Antonella Marino
PPT
Cmplx school spoleto_ve_reti1su3_22ago2016
PDF
La Tecnologia RFID NFC per la tracciabilità e l'anticontraffazione nell'abbig...
PDF
4° CMWL - Complexity Management Winter Lab 2017 - Systems and Design Thinking
PDF
La singolarità è vicina - Al Complexity Literacy Meeting il libro presentato ...
PDF
Corso la gestione del tempo (time management)
PPT
Nuovi scenari sociali, reti digitali e accumulo di big data. Un approccio sis...
Bassilichi @ Smart City Exhibition 2013
Smau Roma 2011 Carlo Maria Medaglia
Mobile payments definizioni sicurezza e contesto normativo dic2010
Le radici artistiche della visualizzazione dei big data. Big data visualizati...
How much is the m pos worth
La sicurezza delle applicazioni di Mobile Payment_Antonella Marino
Cmplx school spoleto_ve_reti1su3_22ago2016
La Tecnologia RFID NFC per la tracciabilità e l'anticontraffazione nell'abbig...
4° CMWL - Complexity Management Winter Lab 2017 - Systems and Design Thinking
La singolarità è vicina - Al Complexity Literacy Meeting il libro presentato ...
Corso la gestione del tempo (time management)
Nuovi scenari sociali, reti digitali e accumulo di big data. Un approccio sis...
Ad

Similar to Introduzione ad NFC (20)

PPTX
NFC (Near Field Communication - Comunicazione di prossimità)
PDF
Whymca nfc presentation
PDF
Android - ishan fernando - android nfc presentation
KEY
Whymca nfc presentation
PDF
Mobile payments monetica febbraio2012
PDF
WEBdeBS NFC Presentation
PDF
Bussola sui mobile payment_1_Seminario Trasformazione Sistemi di Pagamento
PDF
Riccardo Bosio e Andrea Piovani: Mobile, le opportunità di una tecnologia vicina
PDF
Mobile, le opportunità di una tecnologia vicina
PDF
2009 10 05 Mobility Tech Cap Progetti Nfc
PPTX
Sviluppo di applicazione per smartphone con NFC per la ricarica di veicoli el...
PPT
GTUG NFC Presentation
PDF
Studio e sviluppo di una libreria java per la lettura di smart card su decode...
PDF
NFC: Tecnologia e Sicurezza
PDF
Studio e sviluppo di un’applicazione dtt-cliente/server per l’autenticazione ...
PDF
NFC, Bluetooth e comunicazione tra app
PDF
Soluzioni nfc pe la gdo
PDF
Android - Programmazione Avanzata
PDF
SIMarket_Massimo La Morgia
PDF
Mobile+network intervento polimi
NFC (Near Field Communication - Comunicazione di prossimità)
Whymca nfc presentation
Android - ishan fernando - android nfc presentation
Whymca nfc presentation
Mobile payments monetica febbraio2012
WEBdeBS NFC Presentation
Bussola sui mobile payment_1_Seminario Trasformazione Sistemi di Pagamento
Riccardo Bosio e Andrea Piovani: Mobile, le opportunità di una tecnologia vicina
Mobile, le opportunità di una tecnologia vicina
2009 10 05 Mobility Tech Cap Progetti Nfc
Sviluppo di applicazione per smartphone con NFC per la ricarica di veicoli el...
GTUG NFC Presentation
Studio e sviluppo di una libreria java per la lettura di smart card su decode...
NFC: Tecnologia e Sicurezza
Studio e sviluppo di un’applicazione dtt-cliente/server per l’autenticazione ...
NFC, Bluetooth e comunicazione tra app
Soluzioni nfc pe la gdo
Android - Programmazione Avanzata
SIMarket_Massimo La Morgia
Mobile+network intervento polimi
Ad

More from Stefano Sanna (20)

PDF
Mobile Security su Android - LinuxDay 2018
PDF
Android Things, from mobile apps to physical world
PDF
Android Things Linux Day 2017
PDF
Android Things in action
PDF
Introduzione alla tecnologia iBeacon
PDF
Augmented Smartphone
PDF
Bluetooth Low Energy
PDF
Google TV: la nuova frontiera Android
PDF
Enlarge your screen: introducing the Google TV
PDF
Android & Bluetooth: hacking e applicazioni
PDF
Application Store: opportunita' e trappole
PDF
Android Bluetooth Hacking
PDF
Android
PDF
Free Software e Open Hardware
PDF
Playing with Mobile 2.0
PDF
Sun SPOT
PDF
Comunicazione Pervasiva
PDF
Introduzione alla tecnologia Sun SPOT
PDF
Sensoristica Avanzata per Dispositivi Mobili
PDF
Introducing the Sun SPOTs
Mobile Security su Android - LinuxDay 2018
Android Things, from mobile apps to physical world
Android Things Linux Day 2017
Android Things in action
Introduzione alla tecnologia iBeacon
Augmented Smartphone
Bluetooth Low Energy
Google TV: la nuova frontiera Android
Enlarge your screen: introducing the Google TV
Android & Bluetooth: hacking e applicazioni
Application Store: opportunita' e trappole
Android Bluetooth Hacking
Android
Free Software e Open Hardware
Playing with Mobile 2.0
Sun SPOT
Comunicazione Pervasiva
Introduzione alla tecnologia Sun SPOT
Sensoristica Avanzata per Dispositivi Mobili
Introducing the Sun SPOTs

Introduzione ad NFC

  • 1. Introduzione ad NFC Stefano Sanna Guest seminar del corso “Applicazioni per dispositivi mobili” L’Aquila, 11 Giugno 2012
  • 2. Agenda • Presentazioni :-) • Near Field Communication • Breve panoramica sull’application model di Android • NFC API di Android • Bibliografia • Contatti Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 3. Speaker • Head of Android Lab @ Open Reply • Mobile app developer (10+ years) - First app: 1999 on PSION 5MX! • Technical Writer - Android Programmazione Avanzata (con E. Di Saverio; Ed. FAG) - Java Micro Edition (Hoepli) • Pizza & Pasta lover :-) Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 4. Near Field Communication • È una tecnologia a radiofrequenza (13.56MHz) per la comunicazione a corto raggio tra oggetti di tipo - attivo: smartphone con chip ed API NFC o lettore USB connesso ad un computer - passivo: tag (superficiale o embedded) associato ad un oggetto fisico • NFC Forum: http://www.nfc-forum.org Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 5. NFC vs Bluetooth • Bluetooth - consente la comunicazione a corto raggio (pochi metri) ma ha una tempo di setup medio lungo (specie con pairing) - permette il trasferimento dati ad alta velocità in modalità streaming • NFC - NFC non richiede setup o pairing: la comunicazione è pressoché istantanea - è orientato al trasferimento dati “one-shot”: in caso di necessità di stream continuo si può passare ad un altro trasporto (Bluetooth o WiFi) • NFC può essere utilizzato per automatizzare il pairing di due dispositivi Bluetooth Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 6. NFC vs QR Code • QR Code - sono praticamente “a costo zero” perché utilizzano tecnologie esistenti e diffusissime (stampa per la produzione e fotocamera dello smartphone per la lettura) - l’utente “deve prendere la mira” verso l’oggetto da inquadrare - non offrono alcuna protezione (crittografia asimmetrica) essendo totalmente passivi - sono read-only • NFC - richiede una tecnologia nuova (soprattutto sugli smartphone) - la comunicazione non richiede setup particolare (touch&go) - i tag possono avere funzionalità crittografiche - i tag possono essere letti e scritti Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 7. Principio di funzionamento • Il componente attivo emette un campo elettromagnetico che induce una corrente sul circuito del componente passivo. Tale corrente è sufficiente ad alimentare il microcontrollore a bordo, ricevere il dato, effettuare l’elaborazione e trasmettere una risposta http://www.scienceprog.com/how-does-rfid-tag-technology-works/ Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 8. Qualche numero • Comunicazione a corto raggio - Distanza teorica: 10 cm - Distanza “pratica”: < 4 cm • Velocità di comunicazione - Min: 106 Kbit/s - Max: 424 Kbit/s • Diffusione: - 3.5 miliardi di smartcard MIFARE - oltre 40 milioni di reader desktop - circa 50 modelli di telefono/smartphone più diffusi dotati di funzionalità NFC (hardware + software) Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 9. Modalità operative Tag by TI r/w riter e read peer-to-peer Samsung Nexus S card emu latio n Samsung Galaxy Nexus ACR122U USB Reader Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 10. Modalità operative • Reader/writer - lo smartphone legge e scrive un tag passivo, che può svolgere funzioni di semplice identificazione, memorizzazione di dati o protezione di contenuti attraverso crittografia • Peer-to-peer - due smartphone comunicano tra loro scambiando piccole quantità di dati: una URL, un biglietto da visita, la configurazione Bluetooth • Card emulation - lo smartphone è riconosciuto da un lettore esterno (collegato a PC o un altro smartphone in modalità reader/writer) come un tag dotato di identificativo, memoria e funzioni crittografiche. In modalità Card Emulation lo smartphone può svolgere funzioni di carta di credito o di “mobile wallet” Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 11. Modalità operative Java Micro Windows BlackBerry Android Symbian bada iOS Edition Phone reader writer JSR 257 OS7 2.3.x iOS 6? WP 8? P2P API proprietarie OS7 4.0.x iOS 6? WP 8? card JSR 257 OS7 API privata iOS 6? WP 8? emulation JSR 177 Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 12. Scenari applicativi • Pagamento • Sicurezza e controllo accessi • Ticketing • Tracking di merci • Gaming • Social • Medical Google Wallet sample image Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 13. Alcuni tipi di tag Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 14. Si fa presto a dire tag... Tecnologie Tipi NFC Prodotti http://www.androidavanzato.it Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 15. NDEF: NFC Data Exchange Format • Formato di dati standard basato su dei NDEF Message contenenti uno o più NDEF Record • Per consentire alle app di gestire automaticamente il contenuto dei record, sono definiti alcuni tipi standard attraverso gli NFC RTD (Record Data Type): - Text e URI - Smart Poster - vCard Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 17. Android application model • Activity - rappresenta(va) una unità di interazione utente di un’app • Fragment - introdotti in Android 3, rappresentano unità atomiche di interazione con l’utente. Più Fragment costituiscono la vista di una Activity • Service - sono moduli applicativi indipendenti privi di UI. Sono eseguiti in background e possono servire più applicazioni • Broadcast Receiver - Ricevono messaggi broadcast inviati dal sistema o da altre app • Content Provider - Forniscono accesso condiviso a sorgenti di dati Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 18. Intent • Sono rappresentazioni astratte di: - azioni che l’utente vuole intraprendere (visualizzare una foto o inviare un’email) - funzionalità che una applicazione vuol avviare (una Activity, un Service...) - eventi propagati nel sistema operativo (è arrivato un SMS, lo stato della batteria è cambiato) • Sono costituiti da ACTION da compiere su DATA inviati come attributi Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 19. Intent • In base alla Action e ai dati associati all’Intent, il sistema decide qual è il componente più adatto a svolgere l’azione richiesta Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http:// www.repubblica.it")); startActivity(intent); Apre il browser Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "http://www.repubblica.it"); startActivity(intent); Consente di scegliere con quale app “inviare” il testo Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 20. NFC su Android • Prima API introdotta sulla API 2.3, Nexus S - Reader/writer Chip NXP PN65N all’interno di un Nexus S - “prototipo” di supporto P2P • Consolidamento API in Ice Cream Sandwich - NFC Push Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 21. Android NFC API • L’API è organizzata in due package: • android.nfc - contiene le classi di interfacciamento al chip NFC e di gestione di messaggi e record NDEF • android.nfc.tech - contiene le classi che modellano i singoli tipi di tag e tecnologie supportate dalla piattaforma Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 22. android.nfc (reader/writer) • NfcManager - servizio di sistema che fornisce un riferimento all'NfcAdapter • NfcAdapter - modella il modulo NFC del terminale • NdefMessage - rappresenta l'unità elementare di comunicazione tra dispositivi NFC • NdefRecord - l'informazione atomica contenuta in un NdefMessage, costituita da payload e metadati • Tag - rappresentazione generica del tag letto dal dispositivo Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 23. android.nfc (P2P) • NfcAdapter.CreateNdefMessageCallback - callback invocata quando la piattaforma chiede all'app di predisporre un messaggio NDEF da inviare via NFC Push ad un altro terminale NFC • NfcAdapter.OnNdefPushCompleteCallback - callback invocata quando l'invio di un messaggio NDEF è andato a buon fine • NfcEvent - incapsula (per ora) solo un riferimento all’NfcAdapter che ha generato la richiesta di evento push Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 24. Permission • Per poter utilizzare l’API NFC è necessario dichiarare la permission e richiedere la feature hardware sull’AndroidManifest dell’applicazione: <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 25. android.nfc.tech • TagTechnology - È l'interfaccia comune a tutti i tipi di tag che espone i metodi per aprire e chiudere la connessione (necessaria per effettuare tutte le successive operazioni di lettura e di scrittura) • Ndef, NdefFormatable (opzionale) - Forniscono accesso a tag (formattati e formattabili) conformi alla specifica NDEF, indipendente dal tipo di tag e SCOS sottostante • IsoDep, MifareClassic (opzionale), MifareUltralight (opzionale), NfcA, NfcB, NfcF, NfcV - Forniscono accesso a specifiche tecnologie di tag ed esportano funzionalità di basso livello (ad esempio, authenticateSectorWithKeyA() su MifareClassic o getAtqa() su NfcA) Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 26. Note sul dispatching degli eventi NFC • Gli eventi di lettura di tag NFC sono propagati attraverso Intent • Tali Intent sono inviati esclusivamente alle Activity (no Service, no BroadcastReceiver) • La scelta del target avviene attraverso Intent Filter • Gli eventi NFC sono generati e propagati solo se il device ha lo schermo sbloccato (no “silent NFC” con lo smartphone in standby) Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 27. Tipi di eventi (ACTION) di lettura di tag • NDEF_DISCOVERED - Il tag appena letto è conforme alla specifica NDEF e contiene dati al proprio interno opportunamente formattati • TECH_DISCOVERED - Il tag appena letto espone una o più tecnologie supportate da una applicazione installata sul terminale • TAG_DISCOVERED - Nessuna app è registrata su tag NDEF o su specifiche tecnologie: si cerca di propagare l’evento generico Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 28. Logica di dispatching dell’Intent http://developer.android.com/guide/topics/nfc/nfc.html Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 29. IntentFilter sul manifest • A seconda del tipo di evento a cui è interessata, una Activity dichiara nel manifest uno o più IntentFilter per una o più action tra NDEF_DISCOVERED, TECH_DISCOVERED e TAG_DISCOVERED. • Alla lettura di un tag lo stack NFC legge tutti i manifest per individuare l'Activity più adatta a gestirlo; se più di di una è candidata, viene mostrata la finestra dell'Activity Chooser Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 30. IntentFilter per NDEF_DISCOVERED È necessario specificare il MIME Type del record desiderato (text/plain, application/vnd.myapp.feat, ...): <activity android:name=".NFCReaderActivity"> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <data android:mimeType="text/plain"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 31. IntentFilter per TECH_DISCOVERED <activity android:name=".NFCReaderActivity"> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED"/> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> </activity> Occorre indicare l’elenco di tecnologie supportate Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 32. Elenco tecnologie per TECH_DISCOVERED <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> AND <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> </resources> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> AND OR <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.NdefFormatable</tech> </tech-list> </resources> 32 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> AND <tech>android.nfc.tech.MifareClassic</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> </resources> Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 33. IntentFilter per TAG_DISCOVERED <activity android:name=".NFCReaderActivity"> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> </intent-filter> </activity> Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 34. Foreground Dispatching • Un’Activity in esecuzione può chiedere al sistema di avere prelazione sulle notifiche NFC: //... mNfcAdapter = NfcAdapter.getDefaultAdapter(mContext); //... @Override public void onResume() { super.onResume(); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent (this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); mNfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null); } Con questi parametri è possibile specificare l’action da ricevere e il filtro per tecnologie e metadati. Non specificare nulla equivale registrarsi per un’Action Guest seminar “Introduzione ad NFC” Corso “Applicazioni per dispositivi mobili”- TAG_DISCOVERED
  • 35. È ora di leggere un tag! @Override public void onNewIntent(Intent intent) { Bundle bundle = intent.getExtras(); Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG); byte[] tagID = tag.getId(); // ID String id = byteToHex(tagID); // convertiamo l’ID in stringa... // tech String[] techList = tag.getTechList(); for (String tech : techList) { addToUI(tech); // aggiungiamo la technology alla lista in UI } } Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 36. Lettura di un NDEF Message // [...] Bundle bundle = intent.getExtras(); Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG); Ndef ndefTag = Ndef.get(tag); ndefTag.connect(); NdefRecord[] records = ndefTag.getNdefMessage().getRecords(); ArrayList<String> strings = new ArrayList<String>(); for (NdefRecord record : records) { byte[] payload = record.getPayload(); strings.add(decodeTextPayload(payload)); } ndefTag.close(); Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 37. Decodifica del payload RTD_TEXT • Il primo byte del payload contiene informazioni sull’encoding (UTF-8 o UTF-16) e sulla lunghezza del codice IANA della lingua del testo: // [...] private String decodeTextPayload(byte[] payload) throws Exception { byte status = payload[0]; int languageCodeLenght = status & 0x3f; return new String(payload, 1 + languageCodeLenght, payload.length - 1 - languageCodeLenght, "UTF-8"); } Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 38. Scrittura di un tag con TNF_ABSOLUTE_URI // [...] Bundle bundle = intent.getExtras(); Tag tag = bundle.getParcelable(NfcAdapter.EXTRA_TAG); Ndef ndefTag = Ndef.get(tag); NdefRecord record = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI , "http://www.repubblica.it".getBytes(Charset.forName("US-ASCII")), new byte[0], new byte[0]); NdefMessage message = new NdefMessage(new NdefRecord[] { record }); ndefTag.connect(); ndefTag.writeNdefMessage(message); ndefTag.close(); Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 39. Application Record e Android • Android 4 introduce due interessanti novità in ambito NFC: - Android Application Record (AAR): consente di scrivere su un tag un record riconosciuto dal sistema operativo che consente di avviare automaticamente un’app (anche priva di funzionalità NFC) o scaricarla del Play Store (se non già installata) [DEMO: APPTAG] - Android Beam: implementa la modalità NFC Push che permette lo scambio di messaggi NDEF tra due terminali. È supportata nativamente da alcune app di sistema e da un numero crescente di app di terze parti [DEMO BROWSER] Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 41. Dagli smartphone agli oggetti: Arduino • La disponibilità di chip NFC/RFID a basso costo compatibili con la specifica MIFARE consente di realizzare interessanti prototipi di “Internet of Things” in cui tag scritti da uno smartphone possono essere letti e riconosciuti da oggetti fisici • Hardware “comodo” per sperimentare: - Arduino MEGA (1280 o 2560) - Elechouse SSRFID basato su MFRC522 Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 42. Arduino MEGA + MFRC522 Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 43. Lettura dell’ID di un tag MIFARE int count = 0; Imposta il chip RFID in modalità lettura automatica dell’ID del tag void setup() { Serial.begin(9600); Serial1.begin(9600); Serial1.write(0x02); pinMode(13, OUTPUT); } void loop() { if (Serial1.available()) { Serial.print(Serial1.read(),HEX); //Display the Serial Number in HEX count++; if (count == 4) { Serial.println(); count = 0; } else { Serial.print(":"); } } } Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 45. X La tecnologia si diffonde... Questa slide è già obsoleta! Tre nuovi importanti terminali sono ora disponibili sul mercato italiano!!! Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 46. Alcuni dei terminali NFC venduti in Italia Nokia 603 (Symbian) Sony Samsung Galaxy Xperia S Nokia N9 (MeeGo) Samsung S III (Android) (Android) Galaxy Nexus Nokia 6131 Samsung (Android) NFC (JME) Galaxy S II NFC Samsung S5230N (JME) Samsung Galaxy BlackBerry 9380 BlackBerry 9900 HTC One X Mini 2 (Android) Samsung Nexus S (Android) Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 47. Dove acquistare tag e lettori • SmartCardFocus - http://www.smartcardfocus.com • ebay! Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 48. Bibliografia • Near Field Communication: from theory to practice - Vedat Coskun, Kerem Ok, Busra Ozdenizci - Wiley Publishing 2011 • Android Developers - http://developer.android.com • Android Programmazione Avanzata - E. Di Saverio, S. Sanna - Edizioni FAG Milano, 2012 Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 49. Contatti • gerdavax AT gmail DOT com • @gerdavax • http://www.gerdavax.it Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”
  • 50. Licenza • Questo seminario è un adattamento del talk “NFC: tecnologia e applicazioni” di Emanuele Di Saverio e Stefano Sanna presentato al Codemotion 2012 a Roma • Alcune immagini sono tratte dal libro “Android Programmazione Avanzata”; altre immagini sono di proprietà dei rispettivi titolari • I contenuti originali di questa presentazione sono distribuiti su licenza Creative Commons - Attribution - NonCommercial - ShareAlike - http://creativecommons.org/licenses/by-nc-sa/3.0/ Corso “Applicazioni per dispositivi mobili”- Guest seminar “Introduzione ad NFC”