Objective NFC which stands for “Near Field Communication” is the global standard for contactless and short-range communication available on every recent smartphone. Simply access information with a simple “touch,” buy and store your tickets or pay with your mobile, exchange data in peer-to-peer mode or fast pair a device to initiate another connectivity, trigger an event, etc. NFC allows unlimited features with the mobile at the centre of the use cases. In this course we will study NFC technology from two perspectives: the viewpoint of a system architect who wishes to understand why and how designing NFC-based system is relevant for value-added use cases, and the developer’s viewpoint where you will be initiated to the mobile implementation of NFC on the Android smartphone. At the end of the course, you will be able to design and implement on Android platform your own innovative use cases around NFC technology.
Audience This self-contained course is integral part of the MBDS Master Graduate Program in Computer Science at the university of Nice – Sophia-Antipolis, in France. Suitable for professionals and students already familiar with Java or Android programming, it is however open to everyone aiming to understand NFC ins and outs from a technical point of view. Equipment Android mobile implementation of NFC is addressed in this course and you may need at least one Android NFC-enabled mobile phone according the mode you choose to implement: for the read/write mode you will also need to get a NFC tag which may be any contactless smartcard you already own or you may acquire NFC tag(s) type 2 for instance, they can be found in many forms (NTAG stickers, bracelet, keyrings, etc.) at a very low price (less than 0.50€/unit) on the web (ShopNFC, AliExpress, Amazon, Cdiscount, etc.). For the peer-to-peer and the card emulation modes two Android mobile phones can be used, for instance one acting as the smartcard and the other acting as the smartcard reader.
Evaluation The knowledge is tested through the multiple-choice questions (MCQ) related to the weekly modules allowing three attempts proposed at the end of each week and a final MCQ summarizing all the topics covered allowing only one attempt is presented at the end of the course. Validating the course requires 50% success in your total rating.
NFC programming course is organized into 5 weekly modules:
C1: “Introduction to NFC standard” (Theoretical) – This module addresses NFC standard with definitions of key concepts around the 3 operating modes of NFC standard: the read/write mode enabling real world object “alive” in the digital word thanks to NFC passive tags without the need of energy source, the peer-to-peer mode enabling two active devices to exchange information and the card emulation mode enabling the smartphone to behave like a smartcard or as a smartcard reader that is implemented for secure transactions such as contactless payment. This later mode is covered in more detail in the next module dedicated to the subject.
C2: “NFC secure card emulation mode ecosystem and architecture” (Theoretical) – In this module the specificity of NFC card emulation mode using a secure element hosted by the mobile phone to store sensitive data and services is discussed. The industrial ecosystem of this mode which involves several stakeholders around a platform called “Trusted Service Managed” with a standard generic interface is addressed here.
C3: “DesigningNFC use cases” (Practical) – Design is at the centre of information systems engineering; in this module you will be introduced to the modelling of NFC operating modes use cases with the aim to enable you to understand how NFC can be implemented, this is a mandatory prerequisite before programming. The project organization for the practice work and deliverables you will be requested to provide are discussed in this module.
C4: “Programming NFC applications with Android” (Practical) – In this module you will be introduced to NFC programming on Android platform. In a first stage you will be initiated to Android studio integrated development environment and Android programming basics. Then NFC implementation is addressed with the 3 operating modes: reading and writing NFC passive tags with the mobile, exchanging data between two NFC-enabled mobiles or reading a contactless smartcard with the mobile or making your mobile behaving like a smartcard using Host-based Card Emulation (HCE)…
C5: “Conclusion and outlook” – Finally, we conclude by a retrospective of the topics covered in this course to underline the relevant concepts you need to remember in preparation for the final MCQ evaluation. To go further, implementing NFC on other development platforms or with other programming languages or other devices is also discussed in this section.