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
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)
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
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?