Le NFC ("Near Field Communication") (En français "Communication en champ proche" ou CCP) est une technologie de communication sans fil à courte portée permettant d’échanger des informations et plus généralement, d’effectuer des transactions rapides.

On retrouve la technologie NFC dans nos smartphones principalement, ainsi que dans certaines cartes (Cartes Bancaires, cartes de fidélité…) sur lesquelles on retrouve ce symbole :

 

Tutoriel :

Ce tutoriel permettra de lire les informations d’une puce NFC à l’aide d’un smartphone et d’une application Android. Le smartphone doit disposer de la technologie NFC. (La plupart des appareils récents possèdent cette technologie)

Outils utilisés :

  • Android Studio
  • Smartphone Samsung Galaxy S7
  • Carte bancaire possédant la technologie NFC

 

Rendu utilisateur :

Nous allons commencer par développer une petite application Android simple. Ci-dessous une capture d’écran de l’interface utilisateur :

L’application permet uniquement de lire les informations présentes sur la carte mais pas d’envoyer des informations via le Tag NFC, bien que cela soit possible avec les librairies NFC android. (L’envoi est appelé « Beam »)

Le NFC doit être activé sur le smartphone pour permettre l’utilisation de la technologie.

 

Ensuite, et une fois la carte contenant la puce NFC appliquée derrière le smartphone, les informations lues s’afficheront sur l’application:

Côté Code :

Il faut tout d’abord créer une application Android simple depuis votre IDE.

Une fois le template d’application généré, la première chose à faire est d’autoriser l’application à utiliser la technologie NFC, en ajoutant dans le fichier « AndroidManifest.xml » les lignes suivantes :

 

Le reste du code se trouve principalement dans la MainActivity :

La librairie android.nfc fournit des méthodes permettant de manipuler la technologie. La carte scannée sera ici représentée par la classe « Tag ».

 

Le « nfcAdapter » est tout simplement le composant du smartphone en charge de l’utilisation du NFC. On contrôle donc avant toute chose que le smartphone dispose de la technologie, et que le NFC est activé avant de poursuivre. Les sharedPreferences peuvent être utilisées pour stocker les informations récupérées sur les cartes, dans l’application.

 

Une fois la carte scannée (ACTION_TAG_DISCOVERED), on fait vibrer l’appareil et on affiche un petit message d’information sous la forme d’un Toast, pour indiquer la détection à l’utilisateur. Les différentes informations stockées sur la carte vont dépendre du type de carte utilisée. Dans notre exemple, on récupère les différentes informations à la fois avec un tableau de byte[] traduit en chaine de caractère hexadécimale pour l’Id du tag, et dans un tableau de String[] classique pour la liste des différentes technologies référencées sur la carte.

On affiche ensuite le tout à l’écran dans une textView android. Ci-dessous un aperçu de la méthode vibrate() qui permet de faire vibrer l’appareil lors de la détection.

 

Tout ceci permet donc de lire simplement un Tag sur une carte équipée d’une puce NFC. Certaines cartes utilisant des technologies propriétaires ou restreintes pour des questions de sécurités peuvent cependant, ne pas être lues aussi facilement.