• No results found

3.3. Structuration theory

3.3.3. The Duality of Structure and Agency

Los dispositivos móviles con tecnología NFC, tienen la propiedad de estar detectando la proximidad de una etiqueta sin importar que la pantalla del móvil se encuentre bloqueada a menos que la configuración de NFC este deshabilitada. Cuando un dispositivo con Android descubre una etiqueta NFC, el comportamiento deseado es tener la actividad más apropiada manejar la intención sin preguntar al usuario qué aplicación utilizar. Los datos son recibidos en formato NDEF, lo cual permite categorizar los datos y ubicar en el móvil la aplicación interesada según los datos y el formato, se debe iniciar para consumir de los datos provenientes del tag NFC (Developers, 2016).

Android proporciona un sistema de despacho de etiquetas especial que analiza las etiquetas NFC escaneadas, y trata de localizar las aplicaciones que están interesados en los datos escaneados (Developers, 2016).

Esto se hace mediante:

1. Analizar el tag NFC y averiguar el tipo MIME o un URI que identifica la carga de datos en la etiqueta.

2. Encapsular el tipo MIME o URI y la carga útil en una intención. Estos dos primeros pasos se describen en cómo etiquetas NFC se asignan a los tipos MIME y URI.

109

3. Inicia una actividad basada en la intención. Esto se describe en cómo etiquetas NFC se distribuye a Aplicaciones.

Una aplicación Android se dispara al recibir datos, y debe tener implementado un Intent Filter a través del cual el Tag Dispatch System logre identificar que aplicación debe iniciar ante la detección de una etiqueta NFC. El mensaje proveniente de la etiqueta NFC puede venir en diferentes formatos siendo el más conocido el formato NDEF (Exposito G, 2014).

Los datos en formato NDEF, están encapsulados en un mensaje (NdefMessage) el cual contiene uno o más registros (NdefRecord); donde cada uno de estos registros debe estar correctamente formado de acuerdo con las especificaciones del tipo de registro que se desea crear. Android soporta la detección de otras tecnologías NFC que no implementan el formato de datos NDEF y esto lo logra por medio de las clases definidas en el paquete android.nfc.tech (Exposito G, 2014).

Android maneja las etiquetas NFC con formato NDEF, para ello el sistema una vez detectada la etiqueta NFC en formato NDEF, procede a parsear el mensaje para identificar el tipo de dato MIME o el URI (Universe resource Identifier), esto lo hace leyendo el primer registro (NdefRecord) del mensaje (NdefMessage), de tal manera que si el mensaje está correctamente formado, el primer registro debe contener la siguiente estructura de datos (Exposito G, 2014):

1. El nombre del tipo de formato (3 bits): los primeros 3 caracteres del registro permite identificar como interpretar la longitud variable del tipo de campo, los cuales puede ser:

Tabla 7. Nombre Tipo De Formato (TNF) Y Sus Asignaciones

NOMBRE TIPO DE FORMATO

(TNF) MAPEO

TNF_ABSOLUTE_URI Indica que el tipo de registro contiene un URI TNF_EMPTY Indica que el tipo de registro está vacío

TNF_EXTERNAL_TYPE Indica que el tipo de registro es de tipo externo. URI basado en la URN en el campo Tipo TNF_MIME_MEDIA Indica que el tipo de registro es de tipo MIME. TNF_UNCHANGED Indica que el PAYLOAD (datos transferidos)

son intermedios o finales de un fragmento de un registro NDEF Fragmentado.

TNF_UNKNOWN Indica que el tipo de PAYLOAD (datos transferidos) es desconocido.

110

TNF_WELL_KNOWN Tipo MIME o URI dependiendo de la definición Tipo de registro (RTD), que se establece en el campo Tipo.

Fuente (Developers, 2016)

2. Tipo de Longitud Variable: Este campo describe la tipología de los registros. En el caso de que el tipo de formato sea TNF_WELL_KNOWN, este campo es empleado para especificar la Definición de Tipo de Registro (RTD) según los siguientes valores:

Tabla 8. RTD para TNF_WELL_KNOWN y sus asignaciones

DEFINICIÓN TIPO DE

REGISTRO (RTD) MAPEO

RTD_ALTERNATIVE_CARRIER Para este tipo de RTD se pasa el control al ACTION_TECH_DISCOVERED.

RTD_HANDOVER_CARRIER Para este tipo de RTD se pasa el control al ACTION_TECH_DISCOVERED.

RTD_HANDOVER_CARRIER Para este tipo de RTD se pasa el control al ACTION_TECH_DISCOVERED

RTD_HANDOVER_REQUEST Para este tipo de RTD se pasa el control al ACTION_TECH_DISCOVERED.

RTD_HANDOVER_SELECT Para este tipo de RTD se pasa el control al ACTION_TECH_DISCOVERED

RTD_SMART_POSTER Tipo de registro URI basado en el parseo del PAYLOAD.

RTD_TEXT MIME de tipo texto plano. RTD_URI URI basado en el Paypload Fuente (Developers, 2016)

3. Longitud del PAYPLOAD: Aquí se encuentran los datos a escribir o leer (PAYLOAD). Un mensaje NDEF puede contener múltiples registros NDEF, por lo que es importante no asumir que todos los datos del PAYPLOAD están en el primero registro del mensaje.

111

El sistema de despacho de tags utiliza los campos de tipo TNF para tratar de asignar un tipo MIME o URI al mensaje NDEF. Si tiene éxito, se encapsula la información en el interior de un intent ACTION_NDEF_DISCOVERED. Sin embargo, hay casos en que el sistema de despacho de tags no puede determinar el tipo de datos basado en el primer registro NDEF. Esto sucede cuando los datos NDEF no se pueden asignar a un tipo MIME o URI, o cuando la etiqueta NFC no contiene datos NDEF. En tales casos, un objeto de etiqueta que tiene información acerca de las tecnologías de la etiqueta y la carga útil están encapsulados en el interior de un intento ACTION_TECH_DISCOVERED (Developers, 2016).

Por ejemplo, si el sistema de etiquetas de despacho se encuentra con un registro de tipo TNF_ABSOLUTE_URI, se asigna el campo de tipo de longitud variable de ese registro en una URI. El sistema de etiquetas de tags encapsula el URI en el campo de datos en un intent ACTION_NDEF_DISCOVERED junto con otra información sobre la etiqueta, tales como la carga útil. Por otro lado, si se encuentra un registro de tipo TNF_UNKNOWN, se crea una intención que encapsula las tecnologías de la etiqueta en su lugar (Developers, 2016).