Programación de aplicaciones NFC en             android             Jornada III
Índice – día 3  Android NFC Tech  Protocolos P2P   – LLCP (Logical Link Control Protocol)   – NPP (NDEF Push Protocol)   –...
ANDROID NFC TECH : NFC Forum Tag Types
ANDROID NFC TECH  ¿Y SI NO HAY UN MENSAJE NDEF?  android.nfc.tech.IsoDep  android.nfc.tech.NfcA  android.nfc.tech.NfcB  an...
ANDROID NFC TECH: ISODEP Permite el acceso a propiedades y operaciones I/O a tags 14443-4. Algunos métodos:  –   close()  ...
ANDROID NFC TECH: MifareUltraligth  Métodos comunes:  – close(), connect(), get(Tag tag),    getMaxTransceiveLength(), get...
ANDROID NFC TECH: NDEF Métodos Específicos  – boolean canMakeReadOnly()      • Devuelve true si el tag puede bloquearse  –...
ANDROID NFC TECH: NDEF FORMATEABLE Métodos Específicos  – void format(NdefMessage firstMessage)     • Da formato NDEF al t...
ANDROID NFC TECH: FILTROS  Una aplicación puede necesitar capturar tecnologías específicas: surgen  los filtros  Son fiche...
ANDROID NFC TECH: FILTROS   Ejemplo de filtro (nfc_tech_filter):<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:...
LLCP  LLCP (Logical Link Control Protocol)  Transferencia de datos CO  – Fiable  – Al menos 128 bytes  Transferencia de da...
LLCP       MAC Mapping:       – integra el/los protocolo/s RF en la         arquitectura LLCP.       Link Management:     ...
LLCP (II)            Connection-oriented            Transport :            – Mantener los intercambios              orient...
NPP Protocolo por encima de LLCP:  – PUSH de mensajes NDEF de un dispositivo a otro.  – one way (cliente - servidor).  – s...
NPP PDUPDUNDEF Entry
NPP Action code => 0x01 (Passive Tag) Servidor:  – Service name: com.android.npp  – ¿Transacción completada?      • último...
SNEP Protocolo por encima de LLCP CO Nombre del servicio por defecto urn:nfc:sn:snep Servidor espera peticiones en un punt...
SNEP Request
SNEP Response
SNEP & NPP over LLCP
ANDROID NFC P2P Requiere NPP desde API level 9 (Android 2.3) a API level 13 (Android 3.2) A partir de API level 14 permite...
ANDROID NFC P2P: NfcAdapter  Métodos P2P  – void setNdefPushMessage(NdefMessage message, Activity activity, Activity...   ...
ANDROID NFC P2P: NfcAdapter (II)  Métodos P2P (API level 16)  – isNdefPushEnabled()      • Devuelve true si Beam está acti...
ANDROID NFC P2P: Ejemplohttp://developer.android.com/resources/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.h...
Práctica II  Incluir en la app:   – Escritura de NDEF en tags   – Transmisión de NDEF por Beam
CursoProgamacionNFC-Dia3
CursoProgamacionNFC-Dia3
CursoProgamacionNFC-Dia3
CursoProgamacionNFC-Dia3
Upcoming SlideShare
Loading in …5
×

CursoProgamacionNFC-Dia3

2,656 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
2,656
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

CursoProgamacionNFC-Dia3

  1. 1. Programación de aplicaciones NFC en android Jornada III
  2. 2. Índice – día 3 Android NFC Tech Protocolos P2P – LLCP (Logical Link Control Protocol) – NPP (NDEF Push Protocol) – SNEP (Simple NDEF Exchange Protocol) – Android NFC P2P Practica 2
  3. 3. ANDROID NFC TECH : NFC Forum Tag Types
  4. 4. ANDROID NFC TECH ¿Y SI NO HAY UN MENSAJE NDEF? android.nfc.tech.IsoDep android.nfc.tech.NfcA android.nfc.tech.NfcB android.nfc.tech.NfcF android.nfc.tech.NfcV android.nfc.tech.Ndef android.nfc.tech.NdefFormatable android.nfc.tech.MifareClassic android.nfc.tech.MifareUltralight
  5. 5. ANDROID NFC TECH: ISODEP Permite el acceso a propiedades y operaciones I/O a tags 14443-4. Algunos métodos: – close() – connect() – static get(Tag tag) – byte[] getHiLayerResponse() – byte[] getHistoricalBytes() – getMaxTransceiveLength() – Tag getTag() – getTimeout() – isConnected() – isExtendedLengthApduSupported() – setTimeout(int timeout) – byte[] transceive(byte[] data)
  6. 6. ANDROID NFC TECH: MifareUltraligth Métodos comunes: – close(), connect(), get(Tag tag), getMaxTransceiveLength(), getTag(), getTimeout(), isConnected(),setTimeout(int time), transceive(byte[] data) Métodos específicos de la tecnología: – getType() • Devuelve el tipo de MFUL. – byte[] readPages(int pageOffset) • Lee 4 páginas (16 bytes) – void writePage(int pageOffset, byte[] data) • Escribe 1 página (4 bytes).
  7. 7. ANDROID NFC TECH: NDEF Métodos Específicos – boolean canMakeReadOnly() • Devuelve true si el tag puede bloquearse – NdefMessage getCachedNdefMessage() • Devuelve el mensaje NDEF que contenía el tag al ser detectado – int getMaxSize() • Devuelve el tamaño máximo del NDEF que puede almacenar el tag – NdefMessage getNdefMessage() • Devuelve el mensage NDEF actual – String getType() • Devuelve el tipo de NDEF tag – boolean isWritable() • Determina si el tag se puede sobreescribir – boolean makeReadOnly() • Bloquea el tag – void writeNdefMessage(NdefMessage msg) • Sobreescribe el NDEF del tag
  8. 8. ANDROID NFC TECH: NDEF FORMATEABLE Métodos Específicos – void format(NdefMessage firstMessage) • Da formato NDEF al tag, luego escribe el mensaje. – void formatReadOnly(NdefMessage firstMessage) • Da formato NDEF al tag, luego escribe el mensaje y bloquea el tag.
  9. 9. ANDROID NFC TECH: FILTROS Una aplicación puede necesitar capturar tecnologías específicas: surgen los filtros Son ficheros .xml que se utilizan en el manifest:<activity> ...<intent-filter><action android:name="android.nfc.action.TECH_DISCOVERED"/></intent-filter><meta-data android:name="android.nfc.action.TECH_DISCOVERED"android:resource="@xml/nfc_tech_filter" />...</activity>
  10. 10. ANDROID NFC TECH: FILTROS Ejemplo de filtro (nfc_tech_filter):<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list></resources><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NfcB</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list></resources>
  11. 11. LLCP LLCP (Logical Link Control Protocol) Transferencia de datos CO – Fiable – Al menos 128 bytes Transferencia de datos CL Soporta conexiones múltiples
  12. 12. LLCP MAC Mapping: – integra el/los protocolo/s RF en la arquitectura LLCP. Link Management: – componente responsable de serializar todos los intercambios LLCP PDU (orientados a conex y no orientdos) – Agregación y desgregación de pequeños PDUs – Garantiza el modo de comunicación asíncrono balanceado – Supervisa el estado del enlace
  13. 13. LLCP (II) Connection-oriented Transport : – Mantener los intercambios orientados a conexión incluidos set-up y termination. Connectionless Transport: – Intercambios unacknowledged.
  14. 14. NPP Protocolo por encima de LLCP: – PUSH de mensajes NDEF de un dispositivo a otro. – one way (cliente - servidor). – siempre se debe correr el servidor NPP. – cliente se ejecuta cuando hay un mensaje NDEF disponible para hacer el PUSH. – intercambio bidireccional de mensajes NDEF.
  15. 15. NPP PDUPDUNDEF Entry
  16. 16. NPP Action code => 0x01 (Passive Tag) Servidor: – Service name: com.android.npp – ¿Transacción completada? • último NDEF entry recibido y conexión cerrada Cliente – Conexión al socket LLCP: com.android.npp – Enviar Header + Entrys – Desconectarse del socket
  17. 17. SNEP Protocolo por encima de LLCP CO Nombre del servicio por defecto urn:nfc:sn:snep Servidor espera peticiones en un punto de acceso al servicio LLC Cliente envía una petición de conexión (nombre de servicio) Una vez establecida Cliente – SNEP Request Servidor – SNEP Response El cliente cierra la conexión
  18. 18. SNEP Request
  19. 19. SNEP Response
  20. 20. SNEP & NPP over LLCP
  21. 21. ANDROID NFC P2P Requiere NPP desde API level 9 (Android 2.3) a API level 13 (Android 3.2) A partir de API level 14 permite NPP y SNEP A partir de la API level 16 se han añadido nuevas features para facilitar la programación
  22. 22. ANDROID NFC P2P: NfcAdapter Métodos P2P – void setNdefPushMessage(NdefMessage message, Activity activity, Activity... activities) • Establece un mensaje NFC estático que será enviado por Beam – void setNdefPushMessageCallback(NfcAdapter.CreateNdefMessageCallback callback, Activity activity, Activity... activities) • Establece un callback que genera mensajes NDEF dinámicamente que serán enviados por Beam. Nuestra Activity debe implementar la interfaz NfcAdapter.CreateNdefMessageCallback – void setOnNdefPushCompleteCallback( NfcAdapter.OnNdefPushCompleteCallback callback, Activity activity, Activity... activities) • Establece un callback que será llamado cuando se transmita un mensaje NDEF por Beam. Nuestra Activity debe implementar la interfaz NfcAdapter.OnNdefPushCompleteCallback
  23. 23. ANDROID NFC P2P: NfcAdapter (II) Métodos P2P (API level 16) – isNdefPushEnabled() • Devuelve true si Beam está activado – void setBeamPushUris(Uri[] uris, Activity activity) • Establece una o más Uris que serán enviadas por Beam – void setBeamPushUrisCallback( NfcAdapter.CreateBeamUrisCallback callback, Activity activity) • Establece un callback que genera Uris dinámicamente que serán enviados por Beam. Nuestra Activity debe implementar la interfaz NfcAdapter.CreateBeamUrisCallback
  24. 24. ANDROID NFC P2P: Ejemplohttp://developer.android.com/resources/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.html
  25. 25. Práctica II Incluir en la app: – Escritura de NDEF en tags – Transmisión de NDEF por Beam

×