Mobil Informatikai Rendszerek Near Field Communication
2016. november 7.
Sicz-Mesziár János sicz- m e sziar.janos @ nik. u ni - ob u d a.h u
NFC – Near Field Communication Jellemzői:
Rövid hatótávú vezetéknélküli technológia (< 4cm)
Kifejlesztői: Philips és Sony
Az ISO 18092 szabványon alapszik, visszafelé kompatibilis az IS0 14443 szabvánnyal
13,56 Mhz (HF - High Frequency, rövidhullám)
Mint az RFID, de célirányosan kidolgozott szabvány
Adatátviteli sebesség: 100-850 kbit/s
Rádiófrekvenciás tárgy-, és személyazonosításban használatos
Tipikus működési távolság: 10 cm
Adatátviteli sebesség: elérheti a 424 kbit/sec-ot (1 Mbit)
Sicz-Mesziár János
11/7/2016
2
NFC tag Két féle NFC tag:
Aktív NFC tag: saját áramforrással bír (akkumulátor, gombelem, …), hosszú élettartam, költségesebb
Passzív NFC tag: nincs saját áramforrás, az olvasó jelerősségét használja fel válaszadásra, olcsó, könnyű tömeggyártás Felhasználási területek: • Tárgyazonosítás • Törzsvásárlói rendszerek • Beléptetési rendszerek • Jegy érvényesítés • Fizetési megoldások • …még pár
Sicz-Mesziár János
11/7/2016
3
NDEF Message NFC Data Exchange Format Az NFC címkéken lévő adatok standardizált tárolása, mely az NFC Forum által karbantartott szabvány. Bináris üzenetformátum, alkalmazás specifikus tartalmakkal. (típus, hossz, azonosító)
Sicz-Mesziár János
11/7/2016
4
NFC Androidon 3 féle működés támogatott:
Olvasó / író mód Passzív NFC címkék és matricák olvasása/írása.
Peer to peer mód Kommunikáció és adatcsere másik NFC képes eszközzel. Ezt használja az Android Beam is.
Card emulation mód Az adott NFC képes eszköz (telefon) NFC kártyaként képes működni. Ez használatos ahhoz, hogy bankkártyás fizetési eszköz lehessen.
Sicz-Mesziár János
11/7/2016
5
Android tag dispatch rendszer Egy címke felolvasása során a rendszer megpróbálja a megfelelő alkalmazást indítani. (Intent kiküldésével)
Sicz-Mesziár János
11/7/2016
6
Android tag olvasás a gyakorlatban Be kell állítani az AndroidManifest.xml fájlban, hogy értesüljünk az NFC olvasó eseményeiről. AndroidManifest.xml <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10"/> <uses-feature android:name="android.hardware.nfc" android:required="true" />
+ IntentFilter az Activity-hez:
Sicz-Mesziár János
11/7/2016
7
Android tag olvasás a gyakorlatban (2) Információ megszerzése az olvasóból. @Override protected void onNewIntent(Intent i) { super.onNewIntent(i); ... if (i != null && NfcAdapter.ACTION_NDEF_DISCOVERED.equals(i.getAction())) { Parcelable[] rawMessages = i.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMessages != null) { NdefMessage[] messages = new NdefMessage[rawMessages.length]; for (int i = 0; i < rawMessages.length; i++) { messages[i] = (NdefMessage) rawMessages[i]; } // Process the messages array. ... } Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); }
}
Bővebben: https://developer.android.com/guide/topics/connectivity /nfc/nfc.html#obtain-info Sicz-Mesziár János
11/7/2016
8
Android Beam üzenetküldés NfcAdapter mNfcAdapter; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNfcAdapter = NfcAdapter.getDefaultAdapter(this); mNfcAdapter.setNdefPushMessageCallback(this, this); } public NdefMessage createNdefMessage(NfcEvent event) { String text = ("Beam me up, Android!\n\n" + "Beam Time: " + System.currentTimeMillis()); NdefMessage msg = new NdefMessage( new NdefRecord[] { createMime( "application/vnd.com.example.android.beam", text.getBytes() )}); return msg; } Sicz-Mesziár János
11/7/2016
9
Android Beam üzenet fogadása AndoridManifest.xml
Activity public void onResume() { super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) processIntent(getIntent()); } public void onNewIntent(Intent intent) { setIntent(intent); } void processIntent(Intent intent) { textView = (TextView) findViewById(R.id.textView); Parcelable[] rawMsgs = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage msg = (NdefMessage) rawMsgs[0]; // new String(msg.getRecords()[0].getPayload()) } Sicz-Mesziár János
11/7/2016
10
NFC Tag (tech level)
Lehetőség van a címéken lévő tartalmat nem NDEF message formátumban is feldolgozni. Azaz egyéni tartalmak is kiolvashatóak belőlve.
Android alatt számos jól ismert szabvány támogatott:
NfcA: Provides access to NFC-A (ISO 14443-3A) properties and I/O operations.
NfcB: Provides access to NFC-B (ISO 14443-3B) properties and I/O operations.
NfcF: Provides access to NFC-F (JIS 6319-4) properties and I/O operations.
NfcV: Provides access to NFC-V (ISO 15693) properties and I/O operations.
IsoDep: Provides access to ISO-DEP (ISO 14443-4) properties and I/O operations.
Bővebben itt: https://developer.android.com/guide/topics/connectivity/nfc /advanced-nfc.html
Sicz-Mesziár János
11/7/2016
11
Card emulation With Secure Element
Host-based
Bővebben: https://developer.android.com/guide/topics /connectivity/nfc/hce.html Sicz-Mesziár János
11/7/2016
12