Whymca nfc presentation

1,050 views

Published on

NFC Programming in Android

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,050
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Whymca 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

×