Whymca nfc presentation

  • 876 views
Uploaded on

NFC Programming in Android

NFC Programming in Android

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
876
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
19
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. NFC Programming in Android Ishan Fernando Myti @ifdo @myti_news i.fernando@myti.it www.myti.it
  • 2. NFC• Comunicazione contactless• Nuova interazione utente• Sicurezza
  • 3. NFC (Near Field Communication)
  • 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. RFID to NFCE una evoluzione di RFID (Radio Frequency Identification)
  • 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. Storia
  • 8. NDEF (NFC Data Exchange Format)NDEF è un formato di incapsulamento dei messaggi (dati) perscambiare informazioni via NFC.
  • 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. NDEF (NFC Data Exchange Format) Message = n * Records Records =  Type + Size +  Payload (binary data)
  • 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. 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. 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. Android
  • 15. Android
  • 16. Android Application Android Application AndroidManifest.xml Intents Activities ServicesBroadcast receivers Content providers
  • 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. 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. 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. Intent Filters• Explicit vs Implicit• Per definire quali Intents (impiciti) deve accettare un componente.
  • 21. Communication
  • 22. Communication
  • 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. NFC e Android
  • 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. AndroidManifest• Dichiarazione Activities• Dichiarazione Intents• Dichiarazione Intent filters• Permessi• API level• Caratteristiche hardware
  • 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. ...<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. NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
  • 30. NFC e Android - dispatch system• Maggior parte delle APIs sono basate su NDEF• The tag dispatch system
  • 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. NDEF Tag - Reading
  • 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. NDEF Tag - Writing
  • 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. Foreground dispatchVuoi evitare la finestra di dialogopassando il tag direttamentealla tua applicazione?
  • 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. 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. Device to Device
  • 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. 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. 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. 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. Android vs J2ME Android J2ME Intent lancia activity PushRegistry lancia midlet P2P generic API P2P generic APIP2P attraverso messaggi P2P come bytes NDEF
  • 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. SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività• cosa ha fatto loperatore?• che procedure ha eseguito?
  • 47. SafeatworkDownload contenuti • Schede tecniche• Istruzioni operativeAccesso ai contenuti basatosu NFCUpload delle attività• cosa ha fatto loperatore?• che procedure ha eseguito?
  • 48. SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
  • 49. SafeatworkLinterazione prevede prevalentemente lutilizzo della lettura deitag per accedere ai contenuti.
  • 50. Safeatwork in action
  • 51. Safeatwork in action
  • 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