NFC

reading NFC

About

Mnohé zariadenia bývajú v súčasnosti vybavené NFC senzorom, ktorý umožňuje čítať údaje z rozličných kariet alebo NFC značiek. Základ práce s NFC senzorom v systéme Android si ukážeme na tomto cvičení.

Objectives

  • naučiť sa základy práce s NFC senzorom

Content

The Environment

V prvom kroku si pripravíme projekt.

Úloha 1.1

Vytvorte nový projekt s názvom Watchman a v ňom prázdnu aktivitu s názvom MainActivity.

Úloha 1.2

Pre potreby projektu pripravte manifest.

Začneme tým, že pridáme povolenie pre prácu s NFC senzorom:

Hneď za povolením pridáme aj tento riadok:

Pridajte riadok s verziou minimálneho SDK aplikácie (10):

Následne pre aktivitu MainActivity pridáme tento intent filter:

Úloha 1.3

Upravte vlastnosti textového pohľadu v aktivite.

V aktivite sa po vytvorení nachádza práve jeden textový pohľad. Budeme ho používať na zobrazenie ID načítanej karty. Tento pohľad:

  • premenujte na card_id
  • nastavte tak, aby predvoleným textom bol reťazec No Card
  • nastavte tak, aby veľkosť textu bola 40sp

Úloha 1.4

Overte dostupnosť senzoru NFC na vašom zariadení a v prípade, že sa na ňom NFC nenachádza, ukončite aplikáciu.

Overiť dostupnosť NFC je možné opäť viacerými spôsobmi. Je možné ju overiť napr. pomocou package managera:

Rovnako tak je možné vyžiadať predvolený NFC adaptér volaním NfcAdapter.getDefaultAdapter(this) a kontrolu vykonať na základe jeho návratovej hodnoty:

Úloha 1.5

Po overení, či zariadenie obsahuje NFC tiež overte, či je zapnuté.

Ak aj zariadenie NFC obsahuje, nemusí byť ešte zapnuté. V prípade, že je to tak, vyzvite používateľa, aby ho zapol.

Poznámka

Používateľa môžete rovno navigovať do príslušných nastavení. To zabezpečíte spustením aktivity s nastaveným Intet objektom.

Tu však pozor! Toto nastavenie sa líši v závislosti od použitej verzie SDK:

  • ak sa jedná o verziu SDK >= 16, Intent vytvorte s android.provider.Settings.ACTION_NFC_SETTINGS
  • ak sa jedná o staršiu verziu, Intent vytvorte s android.provider.Settings.ACTION_WIRELESS_SETTINGS

Úloha 1.6

Overte svoju aplikáciu.

Po spustení aplikácie sa zobrazí aktivita. Ak ju však minimalizujete alebo vypnete a priložíte k zariadeniu napríklad váš ISIC, aktivita sa znova zobrazí, pretože v okolí zariadenia bol prečítaný NFC Tag.

Poznámka

Pozor, kde kartu prikladáte, pretože ju zariadenie nemusí identifikovať vždy. Snažte sa ju preto prikladať čo najbližšie k senzoru, ktorý býva umiestnený bližšie ku spodnej strane zariadenia.

Search Activity

V tomto kroku prečítame NFC TAG z niektorej vašej karty.

Úloha 2.1

Vytvorte metódu onResume(), ktorá sa zavolá každým, keď dôjde k načítaniu NFC Tag-u zariadením.

Android samotný zabezpečí, aby sa naša aktivita spustila vtedy, keď dôjde k načítaniu NFC Tag-u. To znamená, že zavolá metódu onResume(). To, aký Intent objekt a s akou akciou prišiel si môžeme overiť jednoducho týmto fragmentom kódu:

Úloha 2.2

Získajte a prečítajte obsah NFC tagu.

Tag z intent-u získate volaním

Zavolaním metódy .toString() nad objektom Tag-u sa o ňom dozviete viac.

Id tag-u je uložené v poli bytov, ku ktorému sa dostaneme volaním metódy getId(). V našom prípade teda zobrazíme jeho hodnotu v hexadecimálnej podobe, ktorú následne vypíšeme do textového pohľadu card_id:

Úloha 2.3

Overte svoje riešenie.

Ak ste postupovali správne, po spustení aplikácie a priložení karty k telefónu sa vám zobrazí jej id v podobe hexadecimálneho výpisu. Overiť hodnotu si môžete napríklad použitím aplikácie NFC Tools.