NFC

                    Devoxx Paris
                      27 mars 2013



                                     1
samedi 30 mars 13
Bio
                    Romain MENETRIER

                    Web puis JVM dev depuis 14 ans

                    CTO pendant 5 ans de Connecthings, devenu leader
                    européen du NFC

                    Consultant NFC et fondateur de Makala, backend pour
                    applications mobiles (http://makalahq.com)

                    Organisateur @PAUG & Droidcon Paris


                                                                          2
samedi 30 mars 13
SOMMAIRE

                    Usage

                    Norme NFC

                    Implémentation avec Android



                                                  3
samedi 30 mars 13
Usage du NFC



                                   4
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                    NFC Qu’est-ce que c’est ?
        Near Field Communication : communication en champ proche (<10cm)


                Sécurité présence
               Contexte localisation
                Intention toucher




                                                                           5
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                    Comment ca marche ?




                                          6
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                             Pourquoi le NFC ?


                    Geste
                    Pas de logiciel
                    Tag = 0,1 à 1€



                                                 7
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                                               Mais...
                                          (parce qu’il y a toujours un «mais»)




                    Le NFC n’est pas adapté pour :

                    ‣ le transfert de fichier
                      (débit 106Kbps)

                    ‣ la mise en réseau
                      (portée 10 cm)




                                                                                 8
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                        Pourquoi le NFC ?

             Obtenir une localisation précise < 10 cm

             Sécuriser une transaction (indépendant de l’OS)

             Déclencher une action

             Echanger des données entre différents terminaux



                                                               9
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                          Cas d’usages typiques

                    Déclenchement d’action

                    Service d’information

                    Partage de données

                    Authentification

                    Paiement sans contact


                                                  10
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                    Où trouver du NFC ?




                                          11
samedi 30 mars 13
‣USAGE
 NORME
 ANDROID
                                   Diffusion
                    Téléphones et tablettes NFC

                    2011                          2013
                    50 millions                   300 millions


                    Google Play Store

                    2011                          2013
                    2 app. NFC                    + de 1000

                                                                 12
samedi 30 mars 13
Norme NFC



                                13
samedi 30 mars 13
Origines
 USAGE

 ‣NORME
 ANDROID




                    RFID Radio Frequency IDentification
                    SmartCard carte à puce




                                                         14
samedi 30 mars 13
NFC Forum
 USAGE

 ‣NORME
 ANDROID




           Création en 2004 du NFC Forum

           NFC = RFID (13,56Mhz) + SmartCard




                                               15
samedi 30 mars 13
Modes de fonctionnement
 USAGE

 ‣NORME
 ANDROID




               Reader/Writer

               Card emulation

               P2P




                                               16
samedi 30 mars 13
Tag NFC
 USAGE

 ‣NORME
 ANDROID




           Le NFC Forum prévoit 4 types de tags
           (gestion des données dans la mémoire et interface de commande)


               Type     Taille mémoire        Type communication                 Exemple tag

               Type 1    96 à 512 octets            ISO 14443 A            Topaz (Innovision/Broadcom)


               Type 2    48 à 192 octets            ISO 14443 A            tags Mifare Ultra Light de NXP


              Type 3    256 octets à 9 Ko   Non ISO 14443 mais semblable        tags FeliCa de Sony


              Type 4       1 à 8 Ko              ISO 14443 A ou B              tags DesFire de NXP




                                                                                                            17
samedi 30 mars 13
Tag NFC
 USAGE

 ‣NORME
 ANDROID




                                                                        Octet 1     Octet 2     Octet 3   Octet 4


                                          block 0     Serial number      UID0        UID1        UID2     Internal0


                                          block 1     Serial number      UID3        UID4        UID5      UID6



                    Exemple de
                                          block 2    Interne /blocage   Internal1   Internal2   Lock0      Lock1

                                                      Capacités du
                                          block 3                         CC0         CC1        CC2        CC3
                    structure mémoire     block 4
                                                       Contenant

                                                        Données          Data0       Data1      Data2      Data3


                                          block 5       Données          Data4       Data5      Data6      Data7


                    (tag type 2)          block 6       Données          Data8       Data9      Data10    Data11


                                             ...        Données            ...         ...        ...        ...


                                          block 15      Données            ...         ...        ...        ...



                                           Identifiant du tag

                                           Blocage en écriture

                                           Données



                                                                                                                      18
samedi 30 mars 13
‣NORME
 USAGE
 ANDROID
                    Format d’échange : NDEF

                                       Bytes                   Explication

                                                    Entête NDEF : TNF = 0x01 (type NFC
                                       0xD1
                                                   Forum), MB=1, ME=1 (1 seul message)

                                        0x02            Longueur du type (2 octets)

                                        0x0E         Longueur des données (14 octets)

                                        «Sp»                type SmartPoster
                                                                                         NDEF
    NFC Data Exchange Format           0xD1         Entête NDEF : TNF = 0x01 (type NFC   Message
                                                   Forum), MB=1, ME=1 (1 seul message)

                                        0x01            Longueur du type (1 octets)
                            NDEF
                                        0x09         Longueur des données (9 octets)
                            Record
                                        «U»                      type Url

                                        0x01              Préfixe «http://www.»

                                     «google.fr»              contenu URL




                                                                                               19
samedi 30 mars 13
Android



                              20
samedi 30 mars 13
USAGE



                                       Lecture de tag
 NORME

 ‣ANDROID




              Ajout de la permission NFC dans le manifest.xml

              Déclaration dans le manifest des types NDEF gérés
              ex: les urls commencant par «http://www.devoxx.com/FR13/»


              Lecture du tag
              Extraction des informations dans la méthode onResume (extras de l’intent)




                                                                                          21
samedi 30 mars 13
USAGE



                                Ecriture de tag
 NORME

 ‣ANDROID




              Préparation des données à écrire

              Enregistrement de la détection de tags NFC

              Détection du tag NFC

              Ecriture du tag




                                                           22
samedi 30 mars 13
USAGE



                              Echange P2P
 NORME

 ‣ANDROID




              Enregistrement du message à envoyer en cas de
              détection de périphérique P2P à proximité




                                                              23
samedi 30 mars 13
Pour aller plus loin
                    NORME & DEVELOPPEMENT
                    NFC Forum http://www.nfc-forum.org/specs
                    Slides @PAUG http://fr.slideshare.net/romemore/near-field-communication-android
                    Thomas de Lazzari http://fr.slideshare.net/tdelazzari/architecture-and-development-of-nfc-applications

                    MOBILE
                    Android NFC http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
                    Windows Phone 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207060(v=vs.105).aspx

                    PROJETS
                    https://code.google.com/p/seek-for-android/

                    https://code.google.com/p/readnfccc/

                    APPLICATIONS
                    https://play.google.com/store/apps/details?id=com.nxp.taginfolite
                    https://play.google.com/store/apps/details?id=com.connecthings.tagwriter




                                                                                                                             24
samedi 30 mars 13
Merci !
                                    Questions ?
                                          Save the date !

                                          Droidcon Paris
                                          17/18 juin
                                          CFP sur fr.droidcon.com

                    Contact
                    romain@makalahq.com
                    @romemore
                    +Romain Menetrier


                                                                    25
samedi 30 mars 13

Devoxx 2013 - NFC Tools in Action

  • 1.
    NFC Devoxx Paris 27 mars 2013 1 samedi 30 mars 13
  • 2.
    Bio Romain MENETRIER Web puis JVM dev depuis 14 ans CTO pendant 5 ans de Connecthings, devenu leader européen du NFC Consultant NFC et fondateur de Makala, backend pour applications mobiles (http://makalahq.com) Organisateur @PAUG & Droidcon Paris 2 samedi 30 mars 13
  • 3.
    SOMMAIRE Usage Norme NFC Implémentation avec Android 3 samedi 30 mars 13
  • 4.
    Usage du NFC 4 samedi 30 mars 13
  • 5.
    ‣USAGE NORME ANDROID NFC Qu’est-ce que c’est ? Near Field Communication : communication en champ proche (<10cm) Sécurité présence Contexte localisation Intention toucher 5 samedi 30 mars 13
  • 6.
    ‣USAGE NORME ANDROID Comment ca marche ? 6 samedi 30 mars 13
  • 7.
    ‣USAGE NORME ANDROID Pourquoi le NFC ? Geste Pas de logiciel Tag = 0,1 à 1€ 7 samedi 30 mars 13
  • 8.
    ‣USAGE NORME ANDROID Mais... (parce qu’il y a toujours un «mais») Le NFC n’est pas adapté pour : ‣ le transfert de fichier (débit 106Kbps) ‣ la mise en réseau (portée 10 cm) 8 samedi 30 mars 13
  • 9.
    ‣USAGE NORME ANDROID Pourquoi le NFC ? Obtenir une localisation précise < 10 cm Sécuriser une transaction (indépendant de l’OS) Déclencher une action Echanger des données entre différents terminaux 9 samedi 30 mars 13
  • 10.
    ‣USAGE NORME ANDROID Cas d’usages typiques Déclenchement d’action Service d’information Partage de données Authentification Paiement sans contact 10 samedi 30 mars 13
  • 11.
    ‣USAGE NORME ANDROID Où trouver du NFC ? 11 samedi 30 mars 13
  • 12.
    ‣USAGE NORME ANDROID Diffusion Téléphones et tablettes NFC 2011 2013 50 millions 300 millions Google Play Store 2011 2013 2 app. NFC + de 1000 12 samedi 30 mars 13
  • 13.
    Norme NFC 13 samedi 30 mars 13
  • 14.
    Origines USAGE ‣NORME ANDROID RFID Radio Frequency IDentification SmartCard carte à puce 14 samedi 30 mars 13
  • 15.
    NFC Forum USAGE ‣NORME ANDROID Création en 2004 du NFC Forum NFC = RFID (13,56Mhz) + SmartCard 15 samedi 30 mars 13
  • 16.
    Modes de fonctionnement USAGE ‣NORME ANDROID Reader/Writer Card emulation P2P 16 samedi 30 mars 13
  • 17.
    Tag NFC USAGE ‣NORME ANDROID Le NFC Forum prévoit 4 types de tags (gestion des données dans la mémoire et interface de commande) Type Taille mémoire Type communication Exemple tag Type 1 96 à 512 octets ISO 14443 A Topaz (Innovision/Broadcom) Type 2 48 à 192 octets ISO 14443 A tags Mifare Ultra Light de NXP Type 3 256 octets à 9 Ko Non ISO 14443 mais semblable tags FeliCa de Sony Type 4 1 à 8 Ko ISO 14443 A ou B tags DesFire de NXP 17 samedi 30 mars 13
  • 18.
    Tag NFC USAGE ‣NORME ANDROID Octet 1 Octet 2 Octet 3 Octet 4 block 0 Serial number UID0 UID1 UID2 Internal0 block 1 Serial number UID3 UID4 UID5 UID6 Exemple de block 2 Interne /blocage Internal1 Internal2 Lock0 Lock1 Capacités du block 3 CC0 CC1 CC2 CC3 structure mémoire block 4 Contenant Données Data0 Data1 Data2 Data3 block 5 Données Data4 Data5 Data6 Data7 (tag type 2) block 6 Données Data8 Data9 Data10 Data11 ... Données ... ... ... ... block 15 Données ... ... ... ... Identifiant du tag Blocage en écriture Données 18 samedi 30 mars 13
  • 19.
    ‣NORME USAGE ANDROID Format d’échange : NDEF Bytes Explication Entête NDEF : TNF = 0x01 (type NFC 0xD1 Forum), MB=1, ME=1 (1 seul message) 0x02 Longueur du type (2 octets) 0x0E Longueur des données (14 octets) «Sp» type SmartPoster NDEF NFC Data Exchange Format 0xD1 Entête NDEF : TNF = 0x01 (type NFC Message Forum), MB=1, ME=1 (1 seul message) 0x01 Longueur du type (1 octets) NDEF 0x09 Longueur des données (9 octets) Record «U» type Url 0x01 Préfixe «http://www.» «google.fr» contenu URL 19 samedi 30 mars 13
  • 20.
    Android 20 samedi 30 mars 13
  • 21.
    USAGE Lecture de tag NORME ‣ANDROID Ajout de la permission NFC dans le manifest.xml Déclaration dans le manifest des types NDEF gérés ex: les urls commencant par «http://www.devoxx.com/FR13/» Lecture du tag Extraction des informations dans la méthode onResume (extras de l’intent) 21 samedi 30 mars 13
  • 22.
    USAGE Ecriture de tag NORME ‣ANDROID Préparation des données à écrire Enregistrement de la détection de tags NFC Détection du tag NFC Ecriture du tag 22 samedi 30 mars 13
  • 23.
    USAGE Echange P2P NORME ‣ANDROID Enregistrement du message à envoyer en cas de détection de périphérique P2P à proximité 23 samedi 30 mars 13
  • 24.
    Pour aller plusloin NORME & DEVELOPPEMENT NFC Forum http://www.nfc-forum.org/specs Slides @PAUG http://fr.slideshare.net/romemore/near-field-communication-android Thomas de Lazzari http://fr.slideshare.net/tdelazzari/architecture-and-development-of-nfc-applications MOBILE Android NFC http://developer.android.com/guide/topics/connectivity/nfc/nfc.html Windows Phone 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207060(v=vs.105).aspx PROJETS https://code.google.com/p/seek-for-android/ https://code.google.com/p/readnfccc/ APPLICATIONS https://play.google.com/store/apps/details?id=com.nxp.taginfolite https://play.google.com/store/apps/details?id=com.connecthings.tagwriter 24 samedi 30 mars 13
  • 25.
    Merci ! Questions ? Save the date ! Droidcon Paris 17/18 juin CFP sur fr.droidcon.com Contact romain@makalahq.com @romemore +Romain Menetrier 25 samedi 30 mars 13