SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
NFC Programming in Android

   Ishan Fernando           Myti
           @ifdo         @myti_news
    i.fernando@myti.it   www.myti.it
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ò raggiungere una velocità di trasmissione massima di
  424 kbit/s
RFID to NFC




E' una evoluzione di RFID (Radio Frequency Identification)
RFID vs NFC

          RFID                          NFC
                                 estenzione di RFID
distanze lunghe (3 ~ 100m)    distanze corte (< 10cm)
   qualsiasi frequenza               13.56 MHz
    usa nei vari ambiti      usa nell’ambito di sicurezza
                                     nei celluari
Storia
NDEF (NFC Data Exchange Format)




NDEF è un formato di incapsulamento dei messaggi (dati) per
scambiare informazioni via NFC.
NDEF (NFC Data Exchange Format)




      passive mode                         active mode




Questo formato consente di scambiare informazioni 
• tra due NFC Forum Devices 
• tra un NFC Forum Device e un NFC Forum Tag.
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 link

MIME 
il contenuto è specificato da un mime type

NFC-specific types 
utilizzi specifici per diverse tecnologie



http://www.nfc-forum.org/specs/spec_list/
NFC e NDEF summary




    NFC è una tecnologia        NDEF è un formato di
 wireless a corto raggio che   encapsulamento dei dati
   consente di creare una
comunicazione bidirezionale
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
Android
Android
Android Application

          Android Application

         AndroidManifest.xml

                 Intents

    Activities             Services

Broadcast receivers   Content providers
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.
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.
Intents
                  Intent
                           Component name

                               Action

                                Data

                              Category

                               Extra

                               Flags


• Componenti di una applicazione (Activities, Services e
  Broadcast receivers) vengono attivati attraverso
  messaggi, chiamate Intents.
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’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.
NFC e Android
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)
AndroidManifest


• Dichiarazione Activities
• Dichiarazione Intents
• Dichiarazione Intent filters
• Permessi
• API level
• Caratteristiche hardware
...
<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
...
<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
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 Systems


Intent Dispatch System
  • dichiara i filtri nel Manifest
  • fa partire l'applicazione anche se è spenta
Foreground Dispatch System
  • dichiara i filtri mentre in esecuzione
  • gestione esclusiva per i tag richiesti
NDEF Tag - Reading
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
NDEF Tag - Writing
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
Foreground dispatch




Vuoi evitare la finestra di dialogo
passando il tag direttamente
alla tua applicazione?
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
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
Device to Device
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()
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()
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()
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)
Android vs J2ME



        Android                      J2ME

  Intent lancia activity   PushRegistry lancia midlet
    P2P generic API             P2P generic API
P2P attraverso messaggi         P2P come bytes
         NDEF
Safeatwork
Sicurezza sul lavoro e
supporto alla certificazione

Usato dai manutentori e
operai specializzati
Backend web per la gestione
dei dati

Nata su j2me nel 2008
( Nokia 6212 )

www.safeatwork.it
Safeatwork

Download contenuti 
• Schede tecniche
• Istruzioni operative

Accesso ai contenuti basato
su NFC

Upload delle attività
• cosa ha fatto l'operatore?
• che procedure ha eseguito?
Safeatwork

Download contenuti 
• Schede tecniche
• Istruzioni operative

Accesso ai contenuti basato
su NFC

Upload delle attività
• cosa ha fatto l'operatore?
• che procedure ha eseguito?
Safeatwork
L'interazione prevede prevalentemente l'utilizzo della lettura dei
tag per accedere ai contenuti.
Safeatwork
L'interazione prevede prevalentemente l'utilizzo della lettura dei
tag per accedere ai contenuti.
Safeatwork in action
Safeatwork in action
Grazie
Android NFC developer documentation
http://developer.android.com/guide/topics/nfc/

Nfc Forum
http://www.nfc-forum.org/home/


Myti s.r.l.
@myti_news
www.myti.it

Ishan Fernando
@ifdo
i.fernando@myti.it

Weitere ähnliche Inhalte

Ähnlich wie Android - ishan fernando - android nfc presentation

Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Simple Network Management Protocol
Simple Network Management ProtocolSimple Network Management Protocol
Simple Network Management Protocolmichelemanzotti
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Sviluppare per Microsoft Band
Sviluppare per Microsoft BandSviluppare per Microsoft Band
Sviluppare per Microsoft BandMassimo Bonanni
 
Sviluppare per microsoft band
Sviluppare per microsoft bandSviluppare per microsoft band
Sviluppare per microsoft bandDotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoMavigex srl
 
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1Massimo Bonanni
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Riccardo Mancinelli
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Filippo Matteo Riggio
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 

Ähnlich wie Android - ishan fernando - android nfc presentation (20)

Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Simple Network Management Protocol
Simple Network Management ProtocolSimple Network Management Protocol
Simple Network Management Protocol
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
Sviluppare per Microsoft Band
Sviluppare per Microsoft BandSviluppare per Microsoft Band
Sviluppare per Microsoft Band
 
NFC, Bluetooth e comunicazione tra app
NFC, Bluetooth e comunicazione tra appNFC, Bluetooth e comunicazione tra app
NFC, Bluetooth e comunicazione tra app
 
Sviluppare per microsoft band
Sviluppare per microsoft bandSviluppare per microsoft band
Sviluppare per microsoft band
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1
Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Fmdp Total System Monitor
Fmdp Total System MonitorFmdp Total System Monitor
Fmdp Total System Monitor
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 

Mehr von Whymca

Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacce
Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacceDalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacce
Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacceWhymca
 
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!Whymca
 
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiWhymca
 
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012Whymca
 
Wanna go mobile game 3.0 - Andrea trento - WhyMCA
Wanna go mobile game 3.0 - Andrea trento - WhyMCAWanna go mobile game 3.0 - Andrea trento - WhyMCA
Wanna go mobile game 3.0 - Andrea trento - WhyMCAWhymca
 
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCADal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCAWhymca
 
Physical computing: tutto intorno a te - Andrea Maietta, Paolo Aliverti
Physical computing: tutto intorno a te - Andrea Maietta, Paolo AlivertiPhysical computing: tutto intorno a te - Andrea Maietta, Paolo Aliverti
Physical computing: tutto intorno a te - Andrea Maietta, Paolo AlivertiWhymca
 
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7Whymca
 
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCA
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCAGestire i pdf con IOS - Maurizio Moriconi - WhyMCA
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCAWhymca
 
Beginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCABeginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCAWhymca
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...Whymca
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioWhymca
 
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentata
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentatawhymca Andrea Piovani Layar: la nuova frontiera della realtà aumentata
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentataWhymca
 
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto Whymca
 
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?Whymca
 
Whymca Peoplesound
Whymca PeoplesoundWhymca Peoplesound
Whymca PeoplesoundWhymca
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca
 
Whymca Dpixel
Whymca DpixelWhymca Dpixel
Whymca DpixelWhymca
 

Mehr von Whymca (19)

Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacce
Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacceDalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacce
Dalla natura morta allo spime. Riflessioni sparse su futuring, cose e interfacce
 
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!
Tutto quello che volete sapere sullo sviluppo per Windows 8 e Windows Phone!
 
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
 
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012
Windows phone 7 deep dive again and more - roberto freato WhyMCA 2012
 
Wanna go mobile game 3.0 - Andrea trento - WhyMCA
Wanna go mobile game 3.0 - Andrea trento - WhyMCAWanna go mobile game 3.0 - Andrea trento - WhyMCA
Wanna go mobile game 3.0 - Andrea trento - WhyMCA
 
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCADal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
Dal web a Windows 8: costruire app Metro immersiv - Daniele Bochiccio - whyMCA
 
Physical computing: tutto intorno a te - Andrea Maietta, Paolo Aliverti
Physical computing: tutto intorno a te - Andrea Maietta, Paolo AlivertiPhysical computing: tutto intorno a te - Andrea Maietta, Paolo Aliverti
Physical computing: tutto intorno a te - Andrea Maietta, Paolo Aliverti
 
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7
SCONTRO TRA UI -AKA- COSA DOVREMMO IMPARARE DA IOS, ANDROID E WP7
 
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCA
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCAGestire i pdf con IOS - Maurizio Moriconi - WhyMCA
Gestire i pdf con IOS - Maurizio Moriconi - WhyMCA
 
Beginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCABeginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCA
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano Colosio
 
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentata
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentatawhymca Andrea Piovani Layar: la nuova frontiera della realtà aumentata
whymca Andrea Piovani Layar: la nuova frontiera della realtà aumentata
 
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto
Whymca Riccardo Bosio Servizi Mobile e Applicazioni: la rivoluzione in atto
 
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?
Whymca Filippo Renga Mobile Revolution Quali opportunità dalle applicazioni?
 
Whymca Peoplesound
Whymca PeoplesoundWhymca Peoplesound
Whymca Peoplesound
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
 
Whymca Dpixel
Whymca DpixelWhymca Dpixel
Whymca Dpixel
 

Kürzlich hochgeladen

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 

Kürzlich hochgeladen (6)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 

Android - ishan fernando - android nfc presentation

  • 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
  • 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 NFC E' una evoluzione di RFID (Radio Frequency Identification)
  • 6. RFID vs NFC RFID NFC estenzione di RFID distanze lunghe (3 ~ 100m) distanze corte (< 10cm) qualsiasi frequenza 13.56 MHz usa nei vari ambiti usa nell’ambito di sicurezza nei celluari
  • 8. NDEF (NFC Data Exchange Format) NDEF è un formato di incapsulamento dei messaggi (dati) per scambiare informazioni via NFC.
  • 9. NDEF (NFC Data Exchange Format) passive mode active mode Questo 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 link MIME  il contenuto è specificato da un mime type NFC-specific types  utilizzi specifici per diverse tecnologie http://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 una comunicazione 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
  • 16. Android Application Android Application AndroidManifest.xml Intents Activities Services Broadcast 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.
  • 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.
  • 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 Systems Intent Dispatch System • dichiara i filtri nel Manifest • fa partire l'applicazione anche se è spenta Foreground Dispatch System • dichiara i filtri mentre in esecuzione • gestione esclusiva per i tag richiesti
  • 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
  • 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 dispatch Vuoi evitare la finestra di dialogo passando il tag direttamente alla 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
  • 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 API P2P attraverso messaggi P2P come bytes NDEF
  • 45.
  • 46. Safeatwork Sicurezza sul lavoro e supporto alla certificazione Usato dai manutentori e operai specializzati Backend web per la gestione dei dati Nata su j2me nel 2008 ( Nokia 6212 ) www.safeatwork.it
  • 47. Safeatwork Download contenuti  • Schede tecniche • Istruzioni operative Accesso ai contenuti basato su NFC Upload delle attività • cosa ha fatto l'operatore? • che procedure ha eseguito?
  • 48. Safeatwork Download contenuti  • Schede tecniche • Istruzioni operative Accesso ai contenuti basato su NFC Upload delle attività • cosa ha fatto l'operatore? • che procedure ha eseguito?
  • 49. Safeatwork L'interazione prevede prevalentemente l'utilizzo della lettura dei tag per accedere ai contenuti.
  • 50. Safeatwork L'interazione prevede prevalentemente l'utilizzo della lettura dei tag per accedere ai contenuti.
  • 53. Grazie Android NFC developer documentation http://developer.android.com/guide/topics/nfc/ Nfc Forum http://www.nfc-forum.org/home/ Myti s.r.l. @myti_news www.myti.it Ishan Fernando @ifdo i.fernando@myti.it