SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Programación de aplicaciones NFC
          en android
            Jornada II
Índice – día 2


  Características de los mensajes NFC
   – NDEF (NFC Data Exchange Format)
   – NFC RTD (NFC Record Type Definition)
  Android NFC API
   –   Android Manifest
   –   Paquete android.nfc
   –   Tag Dispatch System
   –   NFC Intents
   –   NDEF Record Types
  Práctica 1
NDEF


 ¿Qué es?
  – Especificación que define el formato de
    encapsulamiento de mensajes para el intercambio
    de información en un enlace NFC.

  – Un mensaje NDEF es un mensaje binario:
       • ligero
       • encapsula varios registros
NDEF Message / NDEF Record


  Un mensaje NDEF contiene uno o varios registros:
NDEF Record Flags

                    MB (Message Begin): Indica que es el primer NDEF record del
                             mensaje.

                    ME (Message End): Indica que es el último NDEF record del
                             mensaje.

                    CF (Chunk Flag): Indica que la información se encapsula en
                              varios NDEF records. Todos los records menos el
                              último deben llevar este flag activado.

                    SR (Short Record): Se utiliza para indicar que la longitud del
                               payload es un octeto (tamaño de payload menor de
                               255 bytes). Implica la ausencia de PAYLOAD
                               LENGTH 3, 2, 1

                    IL (ID Length): Este flag a uno indica que la se incluye un
                               campo de tamaño de ID        en la cabecera. Su
                               ausencia implica la no existencia del campo ID
                               LENGTH y del campo ID
NDEF TNF


 Indica la estructura del campo type:
Record Type Definition (RTD)


  Tipos de registros reconocidos por el NFC Forum,
  que pueden ser incluidos en los mensajes NDEF.
  Son los tipos well-known type (TNF=0x01)
   –   Texto
   –   URI
   –   SmartPoster
   –   Control genérico
   –   Firma digital
  Formato URN [RFC 2141]
   – urn:nfc:wkt:Sp
NDEF Fields
              TYPE LENGTH: Número de octetos
                     dentro de TYPE.

              PAYLOAD LENGTH (0-3): Número
                    de octetos dentro del
                    PAYLOAD.

              ID LENTGH: Número de octetos
                     dentro de ID.

              TYPE: Identifica el tipo de datos
                      dentro de PAYLOAD.
NDEF Fields
              ID:
                Identificador en forma de
                URI. Sólo el primer registro
                lleva ID
              PAYLOAD:
                La estructura interna del
                payload es transparente
                para NDEF
              Terminator TLV opcional:
              0xFE
Ejemplo NDEF Text


  0xD1 0x01 0x0D 0x54
  0x02 0x65 0x6E 0x65   D1-> 1101 0001
  0x6A 0x65 0x72 0x63       ME, MB, SR =1
  0x69 0x63 0x69 0x6F       TNF = 001 (Well-known type)
  0x31 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00
Ejemplo NDEF Text (II)
        1 0

                         Type Length = 0x01 => 1byte
                         Payload Length = 0x0D = > 13bytes
                         Type = 0x54 => RTD TEXT
                         Payload= 0x02 0x65 0x6E 0x65
                                       0x6A 0x65 0x72 0x63
                                       0x69 0x63 0x69 0x6F
                                       0x31
Ejemplo NDEF Text (III)

Analisis del payload : RTD TEXT
    0x02
    0x65 0x6E 0x65 0x6A
    0x65 0x72 0x63 0x69
    0x63 0x69 0x6F 0x31
Status byte:
          0000 0002

    UTF8
        RFU

         enejercicio1
Ejemplo NDEF URI


  0xD1 0x01 0x0C 0x55
  0x01 0x61 0x64 0x69   D1-> 1101 0001
  0x74 0x69 0x75 0x6D       ME, MB, SR =1
  0x2E 0x63 0x6F 0x6D       TNF = 001 (Well-known type)
  0xFE 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00 0x00
  0x00 0x00 0x00
Ejemplo NDEF URI (II)
        1 0

                        Type Length = 0x01 => 1byte
                        Payload Length = 0x0C = > 12bytes
                        Type = 0x55 => RTD URI
                        Payload= 0x01 0x61 0x64 0x69
                                 0x74 0x69 0x75 0x6D
                                 0x2E 0x63 0x6F 0x6D
Ejemplo NDEF URI (III)

Analisis del payload : RTD URI
          0x01 0x61 0x64 0x69
          0x74 0x69 0x75 0x6D
          0x2E 0x63 0x6F 0x6D

1er byte Identifier code =0x01
          http://www.
Resto Payload (UTF-8)
          aditium.com



URI : http://www.aditium.com
Ejemplo NDEF MIME vCard

0XD2 0X0C 0X50 0X74 0X65 0X78 0X74
0X2F 0X78 0X2D 0X76 0X43 0X61 0X72
0X64 0X42 0X45 0X47 0X49 0X4E 0X3A
0X56 0X43 0X41 0X52 0X44 0X0A 0X56   D2-> 1101 0010
0X45 0X52 0X53 0X49 0X4F 0X4E 0X3A
0X32 0X2E 0X31 0X0A 0X46 0X4E 0X3A       ME, MB, SR =1
0X58 0X61 0X62 0X69 0X65 0X72 0X20       TNF = 010 (Media Type -
0X4C 0X6F 0X73 0X61 0X64 0X61 0X0A       MIME)
0X54 0X45 0X4C 0X3B 0X43 0X45
0X4C 0X4C 0X3B 0X56 0X4F 0X49 0X43
0X45 0X3A 0X20 0X28 0X36 0X36 0X36
0X29 0X20 0X36 0X36 0X36 0X2D 0X36
0X36 0X36 0X0A 0X45 0X4E 0X44 0X3A
0X56 0X43 0X41 0X52
0X44 0XFE
Ejemplo NDEF MIME vCard (II)
        1 0

                          Type Length = 0x0C => 12 bytes
                          Payload Length = 0x50 = > 80 bytes
Ejemplo NDEF MIME vCard (III)

Analisis del payload :




   12 bytes mime-type: text/x-vCard

   Resto binario del archivo:   BEGIN:VCARD.VERSION:2.1.
                                FN:Xabier Losada.
                                TEL;CELL;VOICE: (666) 666-666.
                                END:VCARD
Android NFC


  Primer paso en la versión 2.3 API Level 9
  Gran paso en la 2.3.3 API Level 10
  Google Wallet
  Beam API Level 14
  Nuevas features en API Level 16
Paquete android.nfc: Clases


  NfcManager
  NfcAdapter
  NdefMessage
  NdefRecord
Paquete android.nfc: NfcManager


  Gestor de alto nivel que se usa para obtener una instancia de
  NfcAdapter:

  NfcManager nm = getSystemService(NFC_SERVICE);
  NfcAdapter na = nm.getDefaultAdapter();


  Alternativa getDefaultAdapter(android.content.Context):

  NfcAdapter na = NfcManager.getDefaultAdapter(this);
Paquete android.nfc: NfcAdapter

  Representa la interfaz con el CLF
  Métodos principales:

   – disableForegroundDispatch(Activity activity):
       • Desactiva el foreground dispatch a la activity que pasamos como parámetro.

   – enableForegroundDispatch(Activity activity,                  PendingIntent       intent,
     IntentFilter[] filters, String[][] techLists):
       • Activa el foreground dispatch a la activity que pasamos como parámetro.

   – getDefaultAdapter(Context context):
       • Permite obtener una instancia del adaptador NFC por defecto

   – isEnabled():
       • Devuelve true si la conectividad NFC está habilitada
Paquete android.nfc: NdefMessage


  Constructores:
  – NdefMessage(byte[] data)
     • Construye un mensaje NDEF a partir de raw bytes.
  – NdefMessage(NdefRecord[] records)
                           y
    NdefMessage(NdefRecord record, NdefRecord... records)
                   (API level16)

     • Construye un mensaje NDEF formado por los registros
       NDEF que pasamos como parámetro.
Paquete android.nfc: NdefMessage


  Métodos principales:
  – getRecords()
     • Obtenemos el array de NDEF records presentes en el
       mensaje.
  – toByteArray()
     • Devuelve el mensaje en raw bytes.

  – getByteArrayLength() (API level 16)
     • Devuelve la longitud en bytes del mensaje NDEF si se
       pasara a formato raw bytes.
Paquete android.nfc: NdefRecord

  Constructor:
  – NdefRecord(short tnf, byte[] type, byte[] id, byte[] payload)
       • Construye un registro NDEF a partir de los parámetros que le pasamos.


  Métodos principales:
  –   getId()
  –   getPayload()
  –   getTnf()
  –   getType()
  –   toMimeType() (API level 16)
       • Mapea el registro a un MIME type, o devuelve null en caso de que no pueda.
  – toUri() (API level 16)
       • Mapea el registro a una URI, o devuelve null en caso de que no pueda.
Paquete android.nfc: NdefRecord


  Helpers estáticos:
  – createApplicationRecord(String packageName)
  – createUri(String uriString)
  – createUri(Uri uri)
  – createExternal(String domain, String type, byte[] data)
    (API level 16)
  – createMime(String mimeType, byte[] mimeData)
    (API level 16)
TAG DISPATCH SYSTEM
ANDROID MANIFEST


   Permisos necesarios:

• <uses-permission android:name="android.permission.NFC" />

• <uses-feature android:name="android.hardware.nfc"
  android:required="true" />
     getDefaultAdapter() o getDefaultAdapter(android.content.Context) == null ?



• <uses-sdk android:minSdkVersion="10"/>
FILTRANDO NDEF

<intent-filter>
<action
android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category
android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />
</intent-filter>


<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
android:host="developer.android.com"
android:pathPrefix="/index.html" />
</intent-filter>
OBTENIENDO INFORMACIÓN DE LOS INTENTS

 EXTRA_TAG (obligatorio): Un objeto Tag
 representando el tag escaneado.
 EXTRA_NDEF_MESSAGES (opcional): Un array
 de mensajes NDEF del TAG. Si es un
 NDEF_DISCOVERED es obligatorio.
 EXTRA_ID (opcional): Identificador a bajo nivel
 del tag (UID).
NDEF Programáticamente: RTD_TEXT
  public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8)
  {
    byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII"));
    Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") :
        Charset.forName("UTF-16");
    byte[] textBytes = payload.getBytes(utfEncoding);
    int utfBit = encodeInUtf8 ? 0 : (1 << 7);
    char status = (char) (utfBit + langBytes.length);
    byte[] data = new byte[1 + langBytes.length + textBytes.length];
    data[0] = (byte) status;
    System.arraycopy(langBytes, 0, data, 1, langBytes.length);
    System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length);
    NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
    NdefRecord.RTD_TEXT, new byte[0], data);
    return record;
  }
NDEF Programáticamente: RTD_URI



  NdefRecord uriRecord = new NdefRecord(
    NdefRecord.TNF_ABSOLUTE_URI ,
    "http://developer.android.com/index.html".getBytes(Charset.forName(
  "US-         ASCII")),
    new byte[0], new byte[0]);
NDEF Programáticamente: MIME
NdefRecord mimeRecord = new NdefRecord(
   NdefRecord.TNF_MIME_MEDIA ,
   "application/com.example.android.beam".getBytes(
        Charset.forName("US-ASCII")
    ),
   new byte[0],
   "Beam me up, Android!".getBytes(Charset.forName(
        "US-ASCII "
        ))
);
Operaciones I/O


  La mayoría son bloqueantes, por lo que no
  pueden (MUST desde API level 14) ser
  llamadas desde el hilo principal
  Leer, escribir, formatear,…
Foreground Dispatcher


1. Creamos un PendingIntent que se utilizará cuando se escanee un tag:
PendingIntent pendingIntent = PendingIntent.getActivity(
  this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);


2. Declarar un filtro de Intents que queremos procesar (Null = todos. Fallback TAG_DISCOVERED)
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
   try {
     ndef.addDataType("*/*"); /* Handles all MIME based dispatches.
                       You should specify only the ones that you need. */
   }
   catch (MalformedMimeTypeException e) {
     throw new RuntimeException("fail", e);
   }
  intentFiltersArray = new IntentFilter[] {ndef, };


3. Creamos un filtro de tecnologías con las que trabajar:
techListsArray = new String[][] { new String[] { NfcF.class.getName() } };
Foreground Dispatcher

4. Override de los métodos del ciclo de vide de la activity
public void onPause() {
  super.onPause();
  mAdapter.disableForegroundDispatch(this);
}

public void onResume() {
  super.onResume();
  mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
}

public void onNewIntent(Intent intent) {
  Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  //do something with tagFromIntent
}
Práctica I


Elaborar una aplicación que:
- Detecte la presencia de Tags
- Permita leer mensajes NDEF

Weitere ähnliche Inhalte

Was ist angesagt?

CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOFernando Marcos Marcos
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOFernando Marcos Marcos
 
Arduino smtp envío de correo electrónico (email)
Arduino smtp envío de correo electrónico (email)Arduino smtp envío de correo electrónico (email)
Arduino smtp envío de correo electrónico (email)Israel Magaña
 
Arduino práctico comunicaciones
Arduino práctico   comunicacionesArduino práctico   comunicaciones
Arduino práctico comunicacionesJose Antonio Vacas
 
Introduccion Arduino 2010
Introduccion  Arduino 2010Introduccion  Arduino 2010
Introduccion Arduino 2010Rubén Loredo
 
Encriptacion De Claves Publicas Y Privadas
Encriptacion De Claves Publicas Y PrivadasEncriptacion De Claves Publicas Y Privadas
Encriptacion De Claves Publicas Y PrivadasDaniel Yánez
 
Escaneo de puertos clase 2 28 02-13
Escaneo de puertos clase 2 28 02-13Escaneo de puertos clase 2 28 02-13
Escaneo de puertos clase 2 28 02-13Tensor
 
Tema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la CriptografíaTema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la CriptografíaDaniel Pecos Martínez
 
Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Tomás García-Merás
 
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINOFernando Marcos Marcos
 
Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012assdl
 
Algoritmos de claves públicas y privadas
Algoritmos de claves públicas y privadasAlgoritmos de claves públicas y privadas
Algoritmos de claves públicas y privadasJohanna
 
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Alvaro Angel Romero Gandul
 
Algoritmos De Claves Publicas Y Privadas
Algoritmos De Claves Publicas Y PrivadasAlgoritmos De Claves Publicas Y Privadas
Algoritmos De Claves Publicas Y PrivadasCarlos
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesESPE
 
ENCRIPTACIÓN
ENCRIPTACIÓNENCRIPTACIÓN
ENCRIPTACIÓNiesr1sali
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónicaSara Alvarellos Navarro
 

Was ist angesagt? (20)

CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
 
Arduino smtp envío de correo electrónico (email)
Arduino smtp envío de correo electrónico (email)Arduino smtp envío de correo electrónico (email)
Arduino smtp envío de correo electrónico (email)
 
Arduino práctico comunicaciones
Arduino práctico   comunicacionesArduino práctico   comunicaciones
Arduino práctico comunicaciones
 
Introduccion Arduino 2010
Introduccion  Arduino 2010Introduccion  Arduino 2010
Introduccion Arduino 2010
 
Encriptacion De Claves Publicas Y Privadas
Encriptacion De Claves Publicas Y PrivadasEncriptacion De Claves Publicas Y Privadas
Encriptacion De Claves Publicas Y Privadas
 
Escaneo de puertos clase 2 28 02-13
Escaneo de puertos clase 2 28 02-13Escaneo de puertos clase 2 28 02-13
Escaneo de puertos clase 2 28 02-13
 
Tema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la CriptografíaTema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la Criptografía
 
Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014Presentación firma electrónica Codemotion 2014
Presentación firma electrónica Codemotion 2014
 
Tipos de cifrado
Tipos de cifradoTipos de cifrado
Tipos de cifrado
 
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
 
Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012
 
Algoritmos de claves públicas y privadas
Algoritmos de claves públicas y privadasAlgoritmos de claves públicas y privadas
Algoritmos de claves públicas y privadas
 
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
Integración de ROS (Robot Operating System) con las plataformas Arduino y Ras...
 
Algoritmos De Claves Publicas Y Privadas
Algoritmos De Claves Publicas Y PrivadasAlgoritmos De Claves Publicas Y Privadas
Algoritmos De Claves Publicas Y Privadas
 
Métodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtualesMétodos de encriptación en las redes privadas virtuales
Métodos de encriptación en las redes privadas virtuales
 
ENCRIPTACIÓN
ENCRIPTACIÓNENCRIPTACIÓN
ENCRIPTACIÓN
 
Sd3
Sd3Sd3
Sd3
 
Ethernet Shield
Ethernet ShieldEthernet Shield
Ethernet Shield
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónica
 

Andere mochten auch

"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co..."Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...3JornadasRFID
 
CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1Aditium
 
Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)Gabriel Gonzalez Serna
 
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Fagner Glinski
 
Überblick Mobile Couponing Deutschland 2013
Überblick Mobile Couponing Deutschland 2013Überblick Mobile Couponing Deutschland 2013
Überblick Mobile Couponing Deutschland 2013Alexander Süßel
 
Presentación App para control de adherencia a la medicación
Presentación App para control de adherencia a la medicaciónPresentación App para control de adherencia a la medicación
Presentación App para control de adherencia a la medicaciónJuan Carlos Castro
 
InvoiCy, uma nova plataforma de soluções fiscais
InvoiCy, uma nova plataforma de soluções fiscaisInvoiCy, uma nova plataforma de soluções fiscais
InvoiCy, uma nova plataforma de soluções fiscaisGeneXus
 
Tecnología NFC
Tecnología NFCTecnología NFC
Tecnología NFCreki1921
 
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)Tania Gurgel
 
Pagos por móvil con Arduino & NFC para la Internet de las Cosas
Pagos por móvil con Arduino & NFC para la Internet de las CosasPagos por móvil con Arduino & NFC para la Internet de las Cosas
Pagos por móvil con Arduino & NFC para la Internet de las CosasPatxi
 
XII Congreso Español ITS. Nfc en el transporte público consorcio asturias
XII Congreso Español ITS. Nfc en el transporte público consorcio asturiasXII Congreso Español ITS. Nfc en el transporte público consorcio asturias
XII Congreso Español ITS. Nfc en el transporte público consorcio asturiasTelefónica Grandes Clientes
 
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013Vinicius Fonseca
 
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...Pablo Curiel
 
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p..."Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...3JornadasRFID
 
Ejercicios de entrenamiento athletic bilbao
Ejercicios de entrenamiento athletic bilbaoEjercicios de entrenamiento athletic bilbao
Ejercicios de entrenamiento athletic bilbaoIván Anero Terradillos
 

Andere mochten auch (17)

"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co..."Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
"Un Modelo de Desarrollo de Escenarios para Interacciones NFC Sensibles al Co...
 
CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1CursoProgramacionNFC-Dia1
CursoProgramacionNFC-Dia1
 
Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)Tutorial Near Field Communication (NFC)
Tutorial Near Field Communication (NFC)
 
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE Gestión de Sistemas Prepagos en Transporte Público - FIMPE
Gestión de Sistemas Prepagos en Transporte Público - FIMPE
 
Überblick Mobile Couponing Deutschland 2013
Überblick Mobile Couponing Deutschland 2013Überblick Mobile Couponing Deutschland 2013
Überblick Mobile Couponing Deutschland 2013
 
NFC-Lösungen im Portrait
NFC-Lösungen im Portrait NFC-Lösungen im Portrait
NFC-Lösungen im Portrait
 
Presentación App para control de adherencia a la medicación
Presentación App para control de adherencia a la medicaciónPresentación App para control de adherencia a la medicación
Presentación App para control de adherencia a la medicación
 
InvoiCy, uma nova plataforma de soluções fiscais
InvoiCy, uma nova plataforma de soluções fiscaisInvoiCy, uma nova plataforma de soluções fiscais
InvoiCy, uma nova plataforma de soluções fiscais
 
Tecnología NFC
Tecnología NFCTecnología NFC
Tecnología NFC
 
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)
MODIFICAÇÕES NO LEIAUTE DA NFe, Nt2013.005 v1.00a (1)
 
Pagos por móvil con Arduino & NFC para la Internet de las Cosas
Pagos por móvil con Arduino & NFC para la Internet de las CosasPagos por móvil con Arduino & NFC para la Internet de las Cosas
Pagos por móvil con Arduino & NFC para la Internet de las Cosas
 
Servicios NFC
Servicios NFCServicios NFC
Servicios NFC
 
XII Congreso Español ITS. Nfc en el transporte público consorcio asturias
XII Congreso Español ITS. Nfc en el transporte público consorcio asturiasXII Congreso Español ITS. Nfc en el transporte público consorcio asturias
XII Congreso Español ITS. Nfc en el transporte público consorcio asturias
 
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013
Manual de especificacoes_tecnicas_do_danfe_nfc-e_qr_code_versao3.1_30_04_2013
 
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
CISTI 2013 - SimpleNFC: Simplificación del acceso a servicios del mundo digit...
 
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p..."Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...
"Una propuesta para etiquetar Entornos Conscientes del Contexto" presentada p...
 
Ejercicios de entrenamiento athletic bilbao
Ejercicios de entrenamiento athletic bilbaoEjercicios de entrenamiento athletic bilbao
Ejercicios de entrenamiento athletic bilbao
 

Ähnlich wie Programación NFC Android

Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
Clase tcp ip - parte 1
Clase tcp ip - parte 1Clase tcp ip - parte 1
Clase tcp ip - parte 1ing_jlcarrillo
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasMiguel Morales
 
IPv6 llegó para quedarse
IPv6 llegó para quedarseIPv6 llegó para quedarse
IPv6 llegó para quedarseEducática
 
Práctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricasPráctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricasGrecia Martinez
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Osvaldo Santana Neto
 
ProtoColo tcp_ip
ProtoColo tcp_ipProtoColo tcp_ip
ProtoColo tcp_ipComdat4
 
Programacion PLD
Programacion PLDProgramacion PLD
Programacion PLDdavic_exe
 
Bollilla 2
Bollilla 2Bollilla 2
Bollilla 2inet
 
Nfc
NfcNfc
Nfcctme
 
Tcpdump
TcpdumpTcpdump
TcpdumpTensor
 
Conf basica switch-p1
Conf basica switch-p1Conf basica switch-p1
Conf basica switch-p11 2d
 

Ähnlich wie Programación NFC Android (20)

Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Clase tcp ip - parte 1
Clase tcp ip - parte 1Clase tcp ip - parte 1
Clase tcp ip - parte 1
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e Pasarelas
 
19 tecnologías lan
19 tecnologías lan19 tecnologías lan
19 tecnologías lan
 
IPv6 llegó para quedarse
IPv6 llegó para quedarseIPv6 llegó para quedarse
IPv6 llegó para quedarse
 
Práctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricasPráctica 1 - Redes inalámbricas
Práctica 1 - Redes inalámbricas
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
 
ProtoColo tcp_ip
ProtoColo tcp_ipProtoColo tcp_ip
ProtoColo tcp_ip
 
TCP IP
TCP IPTCP IP
TCP IP
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Programacion PLD
Programacion PLDProgramacion PLD
Programacion PLD
 
Bolilla 2 ppt técnico en redes
Bolilla 2 ppt técnico en redesBolilla 2 ppt técnico en redes
Bolilla 2 ppt técnico en redes
 
Bollilla 2
Bollilla 2Bollilla 2
Bollilla 2
 
Intro arquitectura-del-computador
Intro arquitectura-del-computadorIntro arquitectura-del-computador
Intro arquitectura-del-computador
 
Nfc
NfcNfc
Nfc
 
pic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdfpic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdf
 
Comunicación NFC entre Raspberry Pi y Android
Comunicación NFC entre Raspberry Pi y AndroidComunicación NFC entre Raspberry Pi y Android
Comunicación NFC entre Raspberry Pi y Android
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
Conf basica switch-p1
Conf basica switch-p1Conf basica switch-p1
Conf basica switch-p1
 

Kürzlich hochgeladen

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Kürzlich hochgeladen (20)

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Programación NFC Android

  • 1. Programación de aplicaciones NFC en android Jornada II
  • 2. Índice – día 2 Características de los mensajes NFC – NDEF (NFC Data Exchange Format) – NFC RTD (NFC Record Type Definition) Android NFC API – Android Manifest – Paquete android.nfc – Tag Dispatch System – NFC Intents – NDEF Record Types Práctica 1
  • 3. NDEF ¿Qué es? – Especificación que define el formato de encapsulamiento de mensajes para el intercambio de información en un enlace NFC. – Un mensaje NDEF es un mensaje binario: • ligero • encapsula varios registros
  • 4. NDEF Message / NDEF Record Un mensaje NDEF contiene uno o varios registros:
  • 5. NDEF Record Flags MB (Message Begin): Indica que es el primer NDEF record del mensaje. ME (Message End): Indica que es el último NDEF record del mensaje. CF (Chunk Flag): Indica que la información se encapsula en varios NDEF records. Todos los records menos el último deben llevar este flag activado. SR (Short Record): Se utiliza para indicar que la longitud del payload es un octeto (tamaño de payload menor de 255 bytes). Implica la ausencia de PAYLOAD LENGTH 3, 2, 1 IL (ID Length): Este flag a uno indica que la se incluye un campo de tamaño de ID en la cabecera. Su ausencia implica la no existencia del campo ID LENGTH y del campo ID
  • 6. NDEF TNF Indica la estructura del campo type:
  • 7. Record Type Definition (RTD) Tipos de registros reconocidos por el NFC Forum, que pueden ser incluidos en los mensajes NDEF. Son los tipos well-known type (TNF=0x01) – Texto – URI – SmartPoster – Control genérico – Firma digital Formato URN [RFC 2141] – urn:nfc:wkt:Sp
  • 8. NDEF Fields TYPE LENGTH: Número de octetos dentro de TYPE. PAYLOAD LENGTH (0-3): Número de octetos dentro del PAYLOAD. ID LENTGH: Número de octetos dentro de ID. TYPE: Identifica el tipo de datos dentro de PAYLOAD.
  • 9. NDEF Fields ID: Identificador en forma de URI. Sólo el primer registro lleva ID PAYLOAD: La estructura interna del payload es transparente para NDEF Terminator TLV opcional: 0xFE
  • 10. Ejemplo NDEF Text 0xD1 0x01 0x0D 0x54 0x02 0x65 0x6E 0x65 D1-> 1101 0001 0x6A 0x65 0x72 0x63 ME, MB, SR =1 0x69 0x63 0x69 0x6F TNF = 001 (Well-known type) 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  • 11. Ejemplo NDEF Text (II) 1 0 Type Length = 0x01 => 1byte Payload Length = 0x0D = > 13bytes Type = 0x54 => RTD TEXT Payload= 0x02 0x65 0x6E 0x65 0x6A 0x65 0x72 0x63 0x69 0x63 0x69 0x6F 0x31
  • 12. Ejemplo NDEF Text (III) Analisis del payload : RTD TEXT 0x02 0x65 0x6E 0x65 0x6A 0x65 0x72 0x63 0x69 0x63 0x69 0x6F 0x31 Status byte: 0000 0002 UTF8 RFU enejercicio1
  • 13. Ejemplo NDEF URI 0xD1 0x01 0x0C 0x55 0x01 0x61 0x64 0x69 D1-> 1101 0001 0x74 0x69 0x75 0x6D ME, MB, SR =1 0x2E 0x63 0x6F 0x6D TNF = 001 (Well-known type) 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  • 14. Ejemplo NDEF URI (II) 1 0 Type Length = 0x01 => 1byte Payload Length = 0x0C = > 12bytes Type = 0x55 => RTD URI Payload= 0x01 0x61 0x64 0x69 0x74 0x69 0x75 0x6D 0x2E 0x63 0x6F 0x6D
  • 15. Ejemplo NDEF URI (III) Analisis del payload : RTD URI 0x01 0x61 0x64 0x69 0x74 0x69 0x75 0x6D 0x2E 0x63 0x6F 0x6D 1er byte Identifier code =0x01 http://www. Resto Payload (UTF-8) aditium.com URI : http://www.aditium.com
  • 16. Ejemplo NDEF MIME vCard 0XD2 0X0C 0X50 0X74 0X65 0X78 0X74 0X2F 0X78 0X2D 0X76 0X43 0X61 0X72 0X64 0X42 0X45 0X47 0X49 0X4E 0X3A 0X56 0X43 0X41 0X52 0X44 0X0A 0X56 D2-> 1101 0010 0X45 0X52 0X53 0X49 0X4F 0X4E 0X3A 0X32 0X2E 0X31 0X0A 0X46 0X4E 0X3A ME, MB, SR =1 0X58 0X61 0X62 0X69 0X65 0X72 0X20 TNF = 010 (Media Type - 0X4C 0X6F 0X73 0X61 0X64 0X61 0X0A MIME) 0X54 0X45 0X4C 0X3B 0X43 0X45 0X4C 0X4C 0X3B 0X56 0X4F 0X49 0X43 0X45 0X3A 0X20 0X28 0X36 0X36 0X36 0X29 0X20 0X36 0X36 0X36 0X2D 0X36 0X36 0X36 0X0A 0X45 0X4E 0X44 0X3A 0X56 0X43 0X41 0X52 0X44 0XFE
  • 17. Ejemplo NDEF MIME vCard (II) 1 0 Type Length = 0x0C => 12 bytes Payload Length = 0x50 = > 80 bytes
  • 18. Ejemplo NDEF MIME vCard (III) Analisis del payload : 12 bytes mime-type: text/x-vCard Resto binario del archivo: BEGIN:VCARD.VERSION:2.1. FN:Xabier Losada. TEL;CELL;VOICE: (666) 666-666. END:VCARD
  • 19.
  • 20. Android NFC Primer paso en la versión 2.3 API Level 9 Gran paso en la 2.3.3 API Level 10 Google Wallet Beam API Level 14 Nuevas features en API Level 16
  • 21. Paquete android.nfc: Clases NfcManager NfcAdapter NdefMessage NdefRecord
  • 22. Paquete android.nfc: NfcManager Gestor de alto nivel que se usa para obtener una instancia de NfcAdapter: NfcManager nm = getSystemService(NFC_SERVICE); NfcAdapter na = nm.getDefaultAdapter(); Alternativa getDefaultAdapter(android.content.Context): NfcAdapter na = NfcManager.getDefaultAdapter(this);
  • 23. Paquete android.nfc: NfcAdapter Representa la interfaz con el CLF Métodos principales: – disableForegroundDispatch(Activity activity): • Desactiva el foreground dispatch a la activity que pasamos como parámetro. – enableForegroundDispatch(Activity activity, PendingIntent intent, IntentFilter[] filters, String[][] techLists): • Activa el foreground dispatch a la activity que pasamos como parámetro. – getDefaultAdapter(Context context): • Permite obtener una instancia del adaptador NFC por defecto – isEnabled(): • Devuelve true si la conectividad NFC está habilitada
  • 24. Paquete android.nfc: NdefMessage Constructores: – NdefMessage(byte[] data) • Construye un mensaje NDEF a partir de raw bytes. – NdefMessage(NdefRecord[] records) y NdefMessage(NdefRecord record, NdefRecord... records) (API level16) • Construye un mensaje NDEF formado por los registros NDEF que pasamos como parámetro.
  • 25. Paquete android.nfc: NdefMessage Métodos principales: – getRecords() • Obtenemos el array de NDEF records presentes en el mensaje. – toByteArray() • Devuelve el mensaje en raw bytes. – getByteArrayLength() (API level 16) • Devuelve la longitud en bytes del mensaje NDEF si se pasara a formato raw bytes.
  • 26. Paquete android.nfc: NdefRecord Constructor: – NdefRecord(short tnf, byte[] type, byte[] id, byte[] payload) • Construye un registro NDEF a partir de los parámetros que le pasamos. Métodos principales: – getId() – getPayload() – getTnf() – getType() – toMimeType() (API level 16) • Mapea el registro a un MIME type, o devuelve null en caso de que no pueda. – toUri() (API level 16) • Mapea el registro a una URI, o devuelve null en caso de que no pueda.
  • 27. Paquete android.nfc: NdefRecord Helpers estáticos: – createApplicationRecord(String packageName) – createUri(String uriString) – createUri(Uri uri) – createExternal(String domain, String type, byte[] data) (API level 16) – createMime(String mimeType, byte[] mimeData) (API level 16)
  • 29. ANDROID MANIFEST Permisos necesarios: • <uses-permission android:name="android.permission.NFC" /> • <uses-feature android:name="android.hardware.nfc" android:required="true" /> getDefaultAdapter() o getDefaultAdapter(android.content.Context) == null ? • <uses-sdk android:minSdkVersion="10"/>
  • 30. FILTRANDO NDEF <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http" android:host="developer.android.com" android:pathPrefix="/index.html" /> </intent-filter>
  • 31. OBTENIENDO INFORMACIÓN DE LOS INTENTS EXTRA_TAG (obligatorio): Un objeto Tag representando el tag escaneado. EXTRA_NDEF_MESSAGES (opcional): Un array de mensajes NDEF del TAG. Si es un NDEF_DISCOVERED es obligatorio. EXTRA_ID (opcional): Identificador a bajo nivel del tag (UID).
  • 32. NDEF Programáticamente: RTD_TEXT public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8) { byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); byte[] textBytes = payload.getBytes(utfEncoding); int utfBit = encodeInUtf8 ? 0 : (1 << 7); char status = (char) (utfBit + langBytes.length); byte[] data = new byte[1 + langBytes.length + textBytes.length]; data[0] = (byte) status; System.arraycopy(langBytes, 0, data, 1, langBytes.length); System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length); NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); return record; }
  • 33. NDEF Programáticamente: RTD_URI NdefRecord uriRecord = new NdefRecord( NdefRecord.TNF_ABSOLUTE_URI , "http://developer.android.com/index.html".getBytes(Charset.forName( "US- ASCII")), new byte[0], new byte[0]);
  • 34. NDEF Programáticamente: MIME NdefRecord mimeRecord = new NdefRecord( NdefRecord.TNF_MIME_MEDIA , "application/com.example.android.beam".getBytes( Charset.forName("US-ASCII") ), new byte[0], "Beam me up, Android!".getBytes(Charset.forName( "US-ASCII " )) );
  • 35. Operaciones I/O La mayoría son bloqueantes, por lo que no pueden (MUST desde API level 14) ser llamadas desde el hilo principal Leer, escribir, formatear,…
  • 36. Foreground Dispatcher 1. Creamos un PendingIntent que se utilizará cuando se escanee un tag: PendingIntent pendingIntent = PendingIntent.getActivity( this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 2. Declarar un filtro de Intents que queremos procesar (Null = todos. Fallback TAG_DISCOVERED) IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try { ndef.addDataType("*/*"); /* Handles all MIME based dispatches. You should specify only the ones that you need. */ } catch (MalformedMimeTypeException e) { throw new RuntimeException("fail", e); } intentFiltersArray = new IntentFilter[] {ndef, }; 3. Creamos un filtro de tecnologías con las que trabajar: techListsArray = new String[][] { new String[] { NfcF.class.getName() } };
  • 37. Foreground Dispatcher 4. Override de los métodos del ciclo de vide de la activity public void onPause() { super.onPause(); mAdapter.disableForegroundDispatch(this); } public void onResume() { super.onResume(); mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } public void onNewIntent(Intent intent) { Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); //do something with tagFromIntent }
  • 38. Práctica I Elaborar una aplicación que: - Detecte la presencia de Tags - Permita leer mensajes NDEF