NFC Programming in Android   Ishan Fernando           Myti           @ifdo         @myti_news    i.fernando@myti.it   www....
NFC• Comunicazione contactless• Nuova interazione utente• Sicurezza
NFC (Near Field Communication)
NFC (Near Field Communication)• E una tecnologia wireless a corto raggio (< 10cm)• Si opera alla frequenza di 13,56MHz• Pu...
RFID to NFCE una evoluzione di RFID (Radio Frequency Identification)
RFID vs NFC          RFID                          NFC                                 estenzione di RFIDdistanze lunghe (...
Storia
NDEF (NFC Data Exchange Format)NDEF è un formato di incapsulamento dei messaggi (dati) perscambiare informazioni via NFC.
NDEF (NFC Data Exchange Format)      passive mode                         active modeQuesto formato consente di scambiare ...
NDEF (NFC Data Exchange Format) Message = n * Records       Records =         Type +         Size +   Payload (binary data)
NDEF (NFC Data Exchange Format)I messaggi NDEF possono essere di tre tipi : URI il contenuto è un linkMIME il contenuto è ...
NFC e NDEF summary    NFC è una tecnologia        NDEF è un formato di wireless a corto raggio che   encapsulamento dei da...
NFC Technology summary• NFC  o Wireless a corto raggio (< 10cm)  o Frequenza : 13,56MHz   o Velocità di trasmissione massi...
Android
Android
Android Application          Android Application         AndroidManifest.xml                 Intents    Activities        ...
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest ... >    <application android:icon="@drawable/app_icon....
Activities• Ogni Activity rappresenta un unico schermo con una  interfaccia utente.• Ognuna è indipendente dalle altre.• U...
Intents                  Intent                           Component name                               Action             ...
Intent Filters• Explicit vs Implicit• Per definire quali Intents (impiciti) deve accettare un  componente.
Communication
Communication
Summary• AndroidManifest.xml definice tutti i componenti  dell’applicazione.• Ogni schermata dell’applicazione è un’Activit...
NFC e Android
NFC e Android Summary• Dichiarazione permessi, Intents e Intent filters in Manifest• Dispatch systems  o Intent Dispatch Sy...
AndroidManifest• Dichiarazione Activities• Dichiarazione Intents• Dichiarazione Intent filters• Permessi• API level• Caratt...
...<activity>  ...  <intent-filter>    <action         android:name="android.nfc.action.NDEF_DISCOVERED"/>    <category   ...
...<uses-permission        android:name="android.permission.NFC" /><uses-sdk         android:minSdkVersion="10"/><uses-fea...
NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
Intent e Foreground Dispatch SystemsIntent Dispatch System  • dichiara i filtri nel Manifest  • fa partire lapplicazione an...
NDEF Tag - Reading
public class MyNFCActivity extends Activity {   @Override   public void onNewIntent(Intent intent) {     // 1. prendiamo i...
NDEF Tag - Writing
public class MyNFCActivity extends Activity {  @Override  public void onNewIntent(Intent intent) {    // 1. Creiamo una is...
Foreground dispatchVuoi evitare la finestra di dialogopassando il tag direttamentealla tua applicazione?
public void onCreate(Bundle savedInstanceState){      // 1. Creiamo un PendingIntent per dare al sistema per eseguire oper...
public class MyNFCActivity extends Activity {       @Override       public void onResume() {          super.onResume();   ...
Device to Device
Device to Device• Scambiare dati tra due device Android.• Entrambi i dispositivi deve avere l’Activity in foreground e  sc...
public class MyNFCActivity extends Activity {     @Override     public void onCreate(Bundle savedInstanceState) {         ...
public class MyNFCActivity extends Activity implements     CreateNdefMessageCallback {       @Override       public void o...
NFC e Android summary• Dichiarazione permessi, Intents e Intent filters in Manifest• Dispatch systems  o Intent Dispatch Sy...
Android vs J2ME        Android                      J2ME  Intent lancia activity   PushRegistry lancia midlet    P2P gener...
SafeatworkSicurezza sul lavoro esupporto alla certificazioneUsato dai manutentori eoperai specializzatiBackend web per la g...
SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività...
SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività...
SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
Safeatwork in action
Safeatwork in action
GrazieAndroid NFC developer documentationhttp://developer.android.com/guide/topics/nfc/Nfc Forumhttp://www.nfc-forum.org/h...
Android - ishan fernando - android nfc presentation
Upcoming SlideShare
Loading in …5
×

Android - ishan fernando - android nfc presentation

1,137 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,137
On SlideShare
0
From Embeds
0
Number of Embeds
199
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android - ishan fernando - android nfc presentation

  1. 1. NFC Programming in Android Ishan Fernando Myti @ifdo @myti_news i.fernando@myti.it www.myti.it
  2. 2. NFC• Comunicazione contactless• Nuova interazione utente• Sicurezza
  3. 3. NFC (Near Field Communication)
  4. 4. NFC (Near Field Communication)• E una tecnologia wireless a corto raggio (< 10cm)• Si opera alla frequenza di 13,56MHz• Può raggiungere una velocità di trasmissione massima di 424 kbit/s
  5. 5. RFID to NFCE una evoluzione di RFID (Radio Frequency Identification)
  6. 6. RFID vs NFC RFID NFC estenzione di RFIDdistanze lunghe (3 ~ 100m) distanze corte (< 10cm) qualsiasi frequenza 13.56 MHz usa nei vari ambiti usa nell’ambito di sicurezza nei celluari
  7. 7. Storia
  8. 8. NDEF (NFC Data Exchange Format)NDEF è un formato di incapsulamento dei messaggi (dati) perscambiare informazioni via NFC.
  9. 9. NDEF (NFC Data Exchange Format) passive mode active modeQuesto formato consente di scambiare informazioni • tra due NFC Forum Devices • tra un NFC Forum Device e un NFC Forum Tag.
  10. 10. NDEF (NFC Data Exchange Format) Message = n * Records Records =  Type + Size +  Payload (binary data)
  11. 11. NDEF (NFC Data Exchange Format)I messaggi NDEF possono essere di tre tipi : URI il contenuto è un linkMIME il contenuto è specificato da un mime typeNFC-specific types utilizzi specifici per diverse tecnologiehttp://www.nfc-forum.org/specs/spec_list/
  12. 12. NFC e NDEF summary NFC è una tecnologia NDEF è un formato di wireless a corto raggio che encapsulamento dei dati consente di creare unacomunicazione bidirezionale
  13. 13. NFC Technology summary• NFC o Wireless a corto raggio (< 10cm) o Frequenza : 13,56MHz  o Velocità di trasmissione massima : 424 Kbit/s. o  E una evoluzione di RFID• NDEF o Incapsulamento dei messaggi o NFC Forum Device <=> NFC Forum Device  o NFC Forum Device <=> NFC Forum Tag o Message = n * Records o Records = Type + Size + Payload (binary data) o Types: URI, MIME o NFC-specific types
  14. 14. Android
  15. 15. Android
  16. 16. Android Application Android Application AndroidManifest.xml Intents Activities ServicesBroadcast receivers Content providers
  17. 17. AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest ... >    <application android:icon="@drawable/app_icon.png" ... >        <activity android:name="com.example.project.ExampleActivity"                  android:label="@string/example_label" ... >        </activity>        ...    </application></manifest> • L’applicazione deve dichiarare tutti i suoi componenti in questo file. • Permessi, API level, caratteristiche hardware o software usate, altre libererie API.
  18. 18. Activities• Ogni Activity rappresenta un unico schermo con una interfaccia utente.• Ognuna è indipendente dalle altre.• Un’Activity deve definire come main.• Ogni Activity puo far partire un’altra Activity.• Quando parte una nuova Activity quella precedente si ferma e si conserva dentro uno Stack.• Per creare un Activity dobbiamo estendere classe astratto Activity e suoi metodi.
  19. 19. Intents Intent Component name Action Data Category Extra Flags• Componenti di una applicazione (Activities, Services e Broadcast receivers) vengono attivati attraverso messaggi, chiamate Intents.
  20. 20. Intent Filters• Explicit vs Implicit• Per definire quali Intents (impiciti) deve accettare un componente.
  21. 21. Communication
  22. 22. Communication
  23. 23. Summary• AndroidManifest.xml definice tutti i componenti dell’applicazione.• Ogni schermata dell’applicazione è un’Activity.• Intents sono i messaggi che avviano i componenti.• Usando Intents Filters si possono filtrare Intents non desiderati.• Se ci sono operazioni lunghe che non richiedono interfaccia utente si possono usare i Services.
  24. 24. NFC e Android
  25. 25. NFC e Android Summary• Dichiarazione permessi, Intents e Intent filters in Manifest• Dispatch systems o Intent Dispatch System o Foreground Dispatch System• Codice: lettura di un tag NDEF• Codice: scrittura di un tag NDEF• Codice: Foreground dispatch system• Codice: Device to Device (Beam)
  26. 26. AndroidManifest• Dichiarazione Activities• Dichiarazione Intents• Dichiarazione Intent filters• Permessi• API level• Caratteristiche hardware
  27. 27. ...<activity>  ...  <intent-filter>    <action         android:name="android.nfc.action.NDEF_DISCOVERED"/>    <category         android:name="android.intent.category.DEFAULT"/>    <data         android:mimeType="text/plain" />  </intent-filter>  ...</activity>...Discover NDEF Tag - Intent filter
  28. 28. ...<uses-permission        android:name="android.permission.NFC" /><uses-sdk         android:minSdkVersion="10"/><uses-feature         android:name="android.hardware.nfc"         android:required="true" />...Discover NDEF Tag - Permessi
  29. 29. NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
  30. 30. NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
  31. 31. Intent e Foreground Dispatch SystemsIntent Dispatch System • dichiara i filtri nel Manifest • fa partire lapplicazione anche se è spentaForeground Dispatch System • dichiara i filtri mentre in esecuzione • gestione esclusiva per i tag richiesti
  32. 32. NDEF Tag - Reading
  33. 33. public class MyNFCActivity extends Activity {   @Override   public void onNewIntent(Intent intent) {  // 1. prendiamo il tag toccato dall’intent ricevuto    Parcelable[] raw = intent.getParcelableArrayExtra( NfcAdapter.EXTRA_NDEF_MESSAGES); // 2. prendiamo il primo record del primo messaggio    NdefMessage message = (NdefMessage) raw[0];     NdefRecord record = message.getRecords()[0];  // 3. leggiamo il payload del record    byte[] payload = record.getPayload();     ...  }}NDEF Tag - Reading
  34. 34. NDEF Tag - Writing
  35. 35. public class MyNFCActivity extends Activity {  @Override  public void onNewIntent(Intent intent) { // 1. Creiamo una istanza di Ndef usando il tag ricevuto    Tag t = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);    Ndef ndef = Ndef.get( t );    ndef.connect(); // 2. Creiamo un record Ndef inserendo i nostri dati    final byte[] data = …;    NdefRecord record = new NdefRecord(            NdefRecord.TNF_MIME_MEDIA,            "text/plain".getBytes(),            new byte[0],            data); // 3. Incapsuliamo il record dentro un messaggio Ndef    NdefRecord[] records = new NdefRecord[]{record};    NdefMessage message = new NdefMessage( records );        ndef.writeNdefMessage(message);  }}NDEF Tag - Writing
  36. 36. Foreground dispatchVuoi evitare la finestra di dialogopassando il tag direttamentealla tua applicazione?
  37. 37. public void onCreate(Bundle savedInstanceState){ // 1. Creiamo un PendingIntent per dare al sistema per eseguire operazioni Intent i = new Intent(this, getClass()); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); pendingIntent = PendingIntent.getActivity(this, 0, i, 0); // 2. Creiamo un filtro che accetta tutti i MIME types IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); ndef.addDataType("*/*"); // 3. Teniamo salvati i filtri e le technologie tag che l’applicazione vuole gestire intentFiltersArray = new IntentFilter[] {ndef}; techListsArray = new String[][] { new String[] { NfcF.class.getName() } }; }Foreground dispatch - create
  38. 38. public class MyNFCActivity extends Activity { @Override public void onResume() { super.onResume(); // 1. Abilitiamo quando l’Activity prende il controllo nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } @Override public void onPause() { super.onPause(); // 2. Disabilitiamo quando l’Activity perde il controllo nfcAdapter.disableForegroundDispatch(this); } @Override public void onNewIntent(Intent intent) { // 3. Usiamo l’Intent ricevuto allo stesso modo di Intent Dispatch System } }Foreground dispatch - enable/disable
  39. 39. Device to Device
  40. 40. Device to Device• Scambiare dati tra due device Android.• Entrambi i dispositivi deve avere l’Activity in foreground e schermo sbloccato.• Un messaggio NDEF alla volta.• Basta utilizzare uno dei metodi – setNdefPushMessage() – setNdefPushMessageCallback()
  41. 41. public class MyNFCActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { // 1. Creiamo un messaggio da spedire NdefMessage msg = new NdefMessage(...); nfcAdapter = NfcAdapter.getDefaultAdapter(this); // 2. Inseriamo il messaggio creato per spedire quando avvicina un device nfcAdapter.setNdefPushMessage(msg, this); } }Device to Device - setNdefPushMessage()
  42. 42. public class MyNFCActivity extends Activity implements CreateNdefMessageCallback { @Override public void onCreate(Bundle savedInstanceState) { nfcAdapter = NfcAdapter.getDefaultAdapter(this); // 1. Abilitiamo Beam passando un Activity (this) // ed una imeplementazione di CreateNdefMessageCallback (this) nfcAdapter.setNdefPushMessageCallback(this, this); } @Override public NdefMessage createNdefMessage(NfcEvent event) { // 2. Creiamo un messaggio da spedire quando parte la cominucazione NdefMessage msg = new NdefMessage(...); return msg; } }Device to Device - setNdefPushMessageCallback()
  43. 43. NFC e Android summary• Dichiarazione permessi, Intents e Intent filters in Manifest• Dispatch systems o Intent Dispatch System o Foreground Dispatch System• Codice: lettura di un tag NDEF• Codice: scrittura di un tag NDEF• Codice: Foreground dispatch system• Codice: Device to Device (Beam)
  44. 44. Android vs J2ME Android J2ME Intent lancia activity PushRegistry lancia midlet P2P generic API P2P generic APIP2P attraverso messaggi P2P come bytes NDEF
  45. 45. SafeatworkSicurezza sul lavoro esupporto alla certificazioneUsato dai manutentori eoperai specializzatiBackend web per la gestionedei datiNata su j2me nel 2008( Nokia 6212 )www.safeatwork.it
  46. 46. SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività• cosa ha fatto loperatore?• che procedure ha eseguito?
  47. 47. SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività• cosa ha fatto loperatore?• che procedure ha eseguito?
  48. 48. SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
  49. 49. SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
  50. 50. Safeatwork in action
  51. 51. Safeatwork in action
  52. 52. GrazieAndroid NFC developer documentationhttp://developer.android.com/guide/topics/nfc/Nfc Forumhttp://www.nfc-forum.org/home/Myti s.r.l.@myti_newswww.myti.itIshan Fernando@ifdoi.fernando@myti.it

×