integração da tecnologia near field...
TRANSCRIPT
Instituto Superior de Engenharia do Porto
Integração da tecnologia Near Field Communications nas
Telecomunicações Móveis
Pedro Leandro Guedes Nogueira
Dissertação para obtenção do Grau de Mestre em
Engenharia Informática
Área de especialização em
Arquitectura Sistemas e Redes
Orientador: Paulo Gandra de Sousa
Júri:
Presidente:
Vogais:
Porto, Setembro de 2011
ii
Agradecimentos Ao meu orientador, Doutor Paulo Gandra, pelo seu apoio, disponibilidade, compreensão,
paciência e confiança que sempre depositou em mim e no desempenho deste projecto.
Aos meus líderes profissionais, Engenheiro José Oliveira, ao João Cruz pelo suporte e criação
de condições para execução do projecto e à minha equipa de trabalho, Rui Eusébio, Rui
Coimbra e Mário Marques pelo apoio e partilha de ideias.
iii
À minha esposa, Marta Sousa, pelo apoio, amor, carinho e incentivo para concretizar este
objetivo. Aos meus pais e irmãos pelo exemplo que são e por tudo o que significam para a
minha vida.
iv
Resumo O telemóvel tem-se transformado numa ferramenta essencial no nosso dia-a-dia,
constantemente são lançadas novas tecnologias que potenciam o uso do telemóvel nas tarefas
do nosso quotidiano. Atualmente a grande tendência passa por fazer o download de aplicações
com o objetivo de obter mais e diferentes tipos de informação, existe o desejo de ler de forma
simples e intuitiva o mundo que nos rodeia, como se cada elemento fosse um objeto sobre o
qual conseguiremos obter informação através do telemóvel.
A tecnologia Near Field Communication (NFC) ajuda a transformar este desejo ou necessidade
numa realidade de simples alcance. Podemos anexar “identificadores” nos objetos e “ver” estes
identificadores através do telemóvel recorrendo a aplicações que fazem a ponte com os
sistemas que nos permitem obter mais informação, por exemplo, internet.
O NFC especifica um padrão de comunicação de redes sem fios, que permite a transferência de
dados entre dois dispositivos separados por uma distância máxima de 10cm. NFC foi
desenhado para ser integrado em telemóveis, que podem comunicar com outros telemóveis
equipados com NFC ou ler informação de cartões ou tags.
A dissertação avalia as oportunidades que a tecnologia NFC oferece ao mundo das
telecomunicações móveis, nomeadamente na realidade do operador Vodafone Portugal,
principalmente numa relação Empresa - Cliente. Esta tecnologia reúne o interesse dos
fabricantes dos telemóveis, dos operadores e de parceiros críticos que vão ajudar a potenciar o
negócio, nomeadamente entidades bancárias e interbancárias.
A tecnologia NFC permite utilizar o telemóvel como um cartão de crédito/debito, ticketing, ler
informação de posters (Smart Poster) que despoletem navegação contextualizada para outras
aplicações ou para a internet para obter mais informação ou concretizar compras, estes são
alguns cenários identificados que mais valor o NFC consegue oferecer.
A dissertação foca-se na avaliação técnica do NFC na área de Smart Posters e resulta na
identificação num conjunto de novos cenários de utilização, que são especificados e
complementados com o desenvolvimento de um protótipo.
Palavras-chave
NFC Smart Poster TAG cartão
v
Abstract The mobile phones has become an essential everyday tool, are constantly developing new
usage scenarios and investigating new ways for new technology. Downloading third-party
applications is one of biggest today trends in order to get more and different types of
information, there is a desire or need to read the world around us, in the simplest and most titled
way, as if each element were a subject about which you should be able to obtain information
through the phone.
The Near Field Communication (NFC) helps turn that desire or need a simple reality, we can
attach tags on objects and read these identifiers through mobile phone applications that bridge
with the systems that allow us to get more information, the most common is the bridge to the
Internet.
The NFC standard specifies a wireless communication network, which allows transfer of data
between two devices separated by a distance of 10cm. NFC is designed to be integrated into
mobile phones and can communicate with other NFC-enabled mobile phones or reading
information from cards or tags.
This thesis evaluates the business opportunities that NFC technology offers the world of mobile
telecommunications, especially in the reality of Vodafone Portugal, focusing on Business to
Customer relationship. This technology combines the interest of the largest manufacturers of
mobile phones, Mobile Telecoms and other critical partners, including banks and interbank
entities.
With NFC we can use the phone as a credit / debit, sharing of information between devices,
ticketing, read information posters (Smart Poster) that trigger contextual navigation to other
applications or to the Internet as a way to get more information or deliver purchases, that are
more worth the NFC can offer.
The dissertation focuses on the technical evaluation in the field of NFC smart posters and the
output is the in the identification of new usage scenarios, which are specified and complemented
with the development of a prototype.
Key Words
NFC Smart Poster TAG card
vi
Índice
Agradecimentos ........................................................................................................................................ ii
Resumo ..................................................................................................................................................... iv
Abstract ...................................................................................................................................................... v
Índice ......................................................................................................................................................... vi
Índice de figuras ...................................................................................................................................... xii
Índice de tabelas .................................................................................................................................... xiv
Glossário .................................................................................................................................................. xv
Capítulo 1 – Introdução............................................................................................................................. 1
1.1 Pergunta de Investigação .............................................................................................. 3
1.2 Objetivos propostos ....................................................................................................... 3
1.3 Motivação ...................................................................................................................... 4
1.4 Integração com empresa ............................................................................................... 4
1.5 Organização deste trabalho ........................................................................................... 6
Capítulo 2 – Enquadramento teórico ....................................................................................................... 7
2.1 Tendências de mercado ................................................................................................ 7
2.2 Introdução a Near Field Communication ...................................................................... 11
2.2.1 Aplicações de referência .......................................................................................... 12
2.2.1.1 Pagamentos e Bilhética ........................................................................................ 12
2.2.1.2 Smart Poster ......................................................................................................... 13
2.2.2 Dependências .......................................................................................................... 14
2.3 NFC no Mundo ............................................................................................................ 15
2.4 NFC em Portugal ......................................................................................................... 16
2.5 Tecnologia NFC ........................................................................................................... 17
2.6 Especificações NFC..................................................................................................... 20
2.6.1 ISO 14443 ................................................................................................................ 21
vii
2.6.2 NFCIP-1 ................................................................................................................... 21
2.6.3 MIFARE ................................................................................................................... 21
2.6.4 FeliCa ....................................................................................................................... 22
2.7 Protocolos NFC ........................................................................................................... 22
2.7.1 NDEF ....................................................................................................................... 22
2.7.2 Record type definition (RTD) .................................................................................... 24
2.7.2.1 Registo de Texto................................................................................................... 25
2.7.2.2 Registo URI .......................................................................................................... 26
2.7.2.3 Registos Smart Poster .......................................................................................... 26
2.7.3 LLCP ........................................................................................................................ 26
2.8 Tag NFC ...................................................................................................................... 27
2.8.1 Tags NFC Forum ..................................................................................................... 27
2.8.2 Tags NXP ................................................................................................................. 28
2.8.3 Componentes ........................................................................................................... 29
2.8.4 Modo de funcionamento das Tag: Ativo-Passivo ...................................................... 29
2.9 Comparação com outras tecnologias ........................................................................... 30
2.10 Segurança ................................................................................................................... 33
2.11 Arquitetura ................................................................................................................... 34
2.12 Campo RF ................................................................................................................... 35
2.13 Fluxo do protocolo ISO 18092 ..................................................................................... 35
2.13.1 Iniciação de uma ligação .......................................................................................... 36
2.13.2 Seleção de modo de comunicação .......................................................................... 38
2.14 Antenas ....................................................................................................................... 40
Capítulo 3 – Cenários de implementação e o seu desenvolvimento .................................................. 41
3.1 Cenários de implementação ........................................................................................ 41
3.2 Plataformas que suportam NFC ................................................................................... 43
3.2.1 RIM .......................................................................................................................... 45
viii
3.2.1.1 Suporte NFC ......................................................................................................... 45
3.2.1.2 Aplicações NFC .................................................................................................... 45
3.2.2 Nokia ........................................................................................................................ 45
3.2.2.1 Suporte NFC ......................................................................................................... 46
3.2.2.2 Principais aplicações ............................................................................................ 47
3.2.3 Samsung Bada ......................................................................................................... 47
3.2.3.1 Suporte NFC ......................................................................................................... 47
3.2.3.2 Principais aplicações ............................................................................................ 48
3.2.4 Android ..................................................................................................................... 48
3.2.4.1 IDE ....................................................................................................................... 49
3.2.4.1.1 Eclipse IDE ........................................................................................................... 49
3.2.4.1.2 UI-DroidDraw ........................................................................................................ 49
3.2.4.1.3 Linguagem de Programação Java ........................................................................ 50
3.2.4.2 Suporte NFC ......................................................................................................... 50
3.2.4.3 Principais aplicações ............................................................................................ 51
3.3 Característica do telemóvel utilizado para a dissertação ............................................. 52
3.4 Controlador NFC .......................................................................................................... 52
3.5 Características das tags utilizadas na dissertação....................................................... 53
Capítulo 4 – Desenvolvimento Smart Poster ........................................................................................ 55
4.1 Serviços NFC numa loja – Informação ........................................................................ 55
4.2 Conceitos ..................................................................................................................... 56
4.3 Requisitos do sistema .................................................................................................. 57
4.4 Atores .......................................................................................................................... 57
4.5 Workflow ...................................................................................................................... 58
4.6 High Level Design ........................................................................................................ 59
4.7 Arquitetura do cliente ................................................................................................... 61
4.8 Desenho “NFC Master” ................................................................................................ 62
ix
4.8.1 Fluxograma .............................................................................................................. 63
4.8.2 Diagrama de classes ................................................................................................ 65
4.8.3 Descrição das classes .............................................................................................. 68
4.8.3.1 Classe ScanTag ................................................................................................... 69
4.8.3.2 Classe ScanTag ................................................................................................... 72
4.8.3.3 Classe MifareRecord ........................................................................................ 74
4.8.4 User Experience ....................................................................................................... 74
4.8.4.1 Abrir aplicação ...................................................................................................... 74
4.8.4.2 Ler tag .................................................................................................................. 75
4.8.4.3 Apresentar informação ......................................................................................... 76
4.8.4.4 Setores MifareClassic ........................................................................................... 79
4.8.5 Testes ...................................................................................................................... 79
Capítulo 5 – Conclusões e trabalho futuro ........................................................................................... 81
Bibliografia ............................................................................................................................................... 84
Anexos ..................................................................................................................................................... 92
Anexo 1 – Project Plan ............................................................................................................................ 93
Project Plan .............................................................................................................................................. 93
Background ............................................................................................................................................. 93
Objetivo de investigação ........................................................................................................ 93
Limitações .............................................................................................................................. 93
Âmbito .................................................................................................................................... 94
Gestão do projeto ................................................................................................................... 94
Processo utilizado ..................................................................................................................... 94
Enquadramento ........................................................................................................................ 94
Fases de decisão, follow up, reuniões e milestones ............................................................... 95
Fases de decisão ...................................................................................................................... 95
Follow-up .................................................................................................................................. 95
x
Reuniões de projeto ............................................................................................................... 96
Milestones ................................................................................................................................. 96
Atividades ............................................................................................................................... 97
Principais atividades ................................................................................................................. 97
4.9 Ferramentas utilizadas ................................................................................................. 98
Anexo 2 – RDID ........................................................................................................................................ 99
RFID – Descrição da tecnologia ............................................................................................. 99
O que é RFID? .......................................................................................................................... 99
História RFID ............................................................................................................................ 99
Como funciona o RFID? .......................................................................................................... 100
Tendência do Mercado? ......................................................................................................... 100
Aplicações RFID ..................................................................................................................... 101
RFID – Funcionamento dos seus componentes ................................................................... 102
Modo de funcionamento das tags: Ativo-Passivo .................................................................... 102
Classificação por frequência de banda ................................................................................... 103
Baixa frequência ..................................................................................................................... 104
Alta Frequência ....................................................................................................................... 104
Frequência ultra alta ............................................................................................................... 105
Micro-Ondas ........................................................................................................................... 106
Características técnicas .......................................................................................................... 107
Standards ISO ........................................................................................................................ 108
EPC ........................................................................................................................................ 108
MOBILE RFID ...................................................................................................................... 109
Vantagens do Mobile Rfid ....................................................................................................... 110
Limitações mobile RFID .......................................................................................................... 111
Integração em rede B2B ......................................................................................................... 111
Aplicações de mobile RFID ..................................................................................................... 113
xi
Anexo 3 – TAGs NFC e a sua aplicação .............................................................................................. 115
Anexo 4 – Código fonte ........................................................................................................................ 116
Class Scantag.java ............................................................................................................... 116
Class TagDetail.java ............................................................................................................. 122
Class MifareRecord.java ...................................................................................................... 135
Class AndroidManisfest.xml ................................................................................................. 136
xii
Índice de figuras Figura 1-Relação da tecnologia com as redes sociais ................................................................. 9
Figura 2-Tendência da compra de produtos tecnológicos .......................................................... 10
Figura 3 - Atitude perante as tecnologias ................................................................................... 10
Figura 4-Elementos da implementação NFC no telemóvel ........................................................ 18
Figura 5 - Visão sumária do standard especificado por NFC Forum .......................................... 19
Figura 6 - Composição protocolo ISO 14443 ............................................................................. 21
Figura 7 - ISO 14443 Mifare ....................................................................................................... 22
Figura 8 - ISO 14443 FeliCa ...................................................................................................... 22
Figura 9 - Mensagem NDEF ...................................................................................................... 24
Figura 10 - Tipos de registo NDEF ............................................................................................. 24
Figura 11-TAG NFC ................................................................................................................... 29
Figura 12-NFC e outras tecnologias .......................................................................................... 33
Figura 13-Arquitectura da tecnologia NFC integrada num telemóvel ......................................... 34
Figura 14-Fluxo de inicialização de transação NFC e SDD........................................................ 37
Figura 15-Modo de seleção de um dispositivo NFCID-2 ............................................................ 39
Figura 16-Exemplo de cenários que se podem aplicar a um poster com tag NFC ..................... 56
Figura 17-High Level Design ...................................................................................................... 60
Figura 18-Arquitectura Cliente ................................................................................................... 61
Figura 19 - Use Cases ............................................................................................................... 63
Figura 20- Fluxograma ............................................................................................................... 64
Figura 21-Diagrama de Classes ................................................................................................. 67
Figura 22-Fluxo das classes ...................................................................................................... 68
Figura 23 - Abrir Aplicação ......................................................................................................... 75
Figura 24 – Layout ler tag .......................................................................................................... 75
Figura 25 - Leitura da tag ........................................................................................................... 76
Figura 26 - Layout informação da tag ........................................................................................ 77
Figura 27 - Apresentação do conteúdo e ação da tag ................................................................ 78
Figura 28 - Tabs com conteúdo da Tag ..................................................................................... 78
Figura 29-Layout setores MifareClassic ..................................................................................... 79
Figura 30-Setores mifare Classic ............................................................................................... 79
Figura 31-Banda de Frequência RFID ..................................................................................... 103
Figura 32-Ambiente do Mobile RFID ........................................................................................ 110
xiii
Figura 33-Arquitectura de rede Mobile RFID com uma Gateway ............................................. 112
Figura 34-Prova de vinhos, informação sobre o vinho ............................................................. 113
Figura 35-Informação sobre o BUS .......................................................................................... 113
Figura 36-Mais informação sobre um filme .............................................................................. 114
xiv
Índice de tabelas Tabela 1-Tabela exemplo da composição de registos NDEF ..................................................... 25
Tabela 2 - Exemplo de um registo Texto .................................................................................... 25
Tabela 3 - exemplo registo Uri ................................................................................................... 26
Tabela 4 - Modelos de referência LLPC ..................................................................................... 27
Tabela 5-Comparativo entre tecnologias de seleção ................................................................. 31
Tabela 6-Exemplos de cenário de Arranque de Serviço ............................................................ 42
Tabela 7-Vendas mundiais de smartphones por plataforma no segundo trimestre de 2011
(unidade: milhares) Fonte: Gartner (Agosto de 2011) ................................................................ 43
Tabela 8-Suporte NFC por Plataforma ....................................................................................... 44
Tabela 9-Suporte NFC Blackberry ............................................................................................. 45
Tabela 10 - Comparação das funcionalidades suportadas pelas diferentes APIs ...................... 46
Tabela 11-Principais funcionalidades suportadas pela API NFC ............................................... 48
Tabela 12-Classes android.nfc................................................................................................... 50
Tabela 13-Classes android.nfc.tech ........................................................................................... 51
Tabela 14 - Protocolos de comunicações sem fios compatíveis com PN544 (NPX, 2010) ........ 53
Tabela 15-Acções no seguimento da leitura de Tag .................................................................. 59
Tabela 16 – Adequação de aplicações de acordo com o tipo de TAG ..................................... 115
xv
Glossário ACS Advanced Cards Systems Ltd.
ADT Android Development toolkit
AES Advanced Encryption Standard
API Application Programming Interface
ASK Amplitude Shift Keying
ATM Automatic Teller Machine
CBC Cipher Block Chaining
CC Common Criteria
CCIT International Telegraph and Telephone Consultative Committee (Agora ITU-T)
CCMP Counter Mode with Cipher Block Chaining Message Authentication Code
Protocol
CRC Cyclic Redundancy Check
CTR Counter
DEI Departamento de Engenharia Informática
DES Data Encryption Standard
DIS Draft International Standard
DUT Device Under Test
EAL Evaluation Assurance Level
ECC Elliptic Curve Cryptography
ECDH Elliptic Curve Diffie Hellmann
ECMA European Computer Manufacturers Association
xvi
ECRYPT European Network of Excellence for Cryptology
EEPROM Electrically Erasable Programmable Read-Only Memory
ETSI European Telecommunications Standards Institute
FRAM Ferroelectric Random Access Memory
FRT Frame Response Time
IC Integrated Circuit
IEC International Electrotechnical Commission
ISEP Instituto Superior de Engenharia do Porto
ISM Industrial, Scientific and Medical (unlicensed frequency band)
ISO International Organization for Standardization
ISO 14443 ISO standard governing proximity smartcards
LED Light Emitting Diode
lsb Least significant bit
MAC Message Authentication Code
MIC Message Integrity Code
MIME Multipurpose Internet Mail Extensions
MMS Multimedia Messaging Service
msb Most significant bit
NDEF NFC Data Exchange Format
NFC Near Field Communication
NFCID Near Field Communication Identifier
NFCIP Near Field Communication Interface and Protocol
NIST National Institute of Standards and Technology
xvii
NTNU The Norwegian University of Science and Technology
NXP Next eXPerience Semiconductors
OS Operating System
OTA Over The Air programming
PCB Printed Circuit Board
PCD Proximity Close-coupling Device
PICC Proximity Integrated Circuit Card
PRNG Pseudo Random Number Generator
PSK Pre Shared Key
RF Radio Frequency
RFID Radio Frequency Identification
RNG Random Number Generator
RSA Rivest Shamir Adleman encryption algorithm
SDD Single Device Detection
SDK System Development Kit
SIM Subscriber Identity Module
SMS Short Messaging Service
SRAM Static Random Access Memory
UICC Universal Integrated Circuit Card
UID Unique Item Identifier
URI Uniform Resource Identifier
URL Uniform Resource Locator
VCD Vicinity Close-coupling device
xviii
W-LAN Wireless Local Area Network
1
Capítulo 1 – Introdução “A importância de uma ideia pode ser
medida pela veemência com que seus
adversários a atacam.”
(Mestre DeRose)
Num mundo onde a mobilidade impera, o telemóvel assume-se cada vez mais como um objeto
imprescindível para o quotidiano satisfazendo necessidades pessoais e profissionais. O acesso
a dados em tempo real é atualmente uma necessidade básica e imprescindível (Cisco, 2011)
para manter os negócios ativos. A ubiquidade no acesso aos dados é cada vez uma realidade
mas o maior contributo para esta mobilidade é provocado pela proliferação de dispositivos
móveis.
Embora a economia global tenha afetado o mercado das telecomunicações, de acordo com
estudo da iSuppli, Mobile Handset Market Tracker, com uma redução de 5% a 8% na aquisição
de novos dispositivos desde 2009, a tendência foi invertida em 2010 e o estudo apresenta
inclusive uma previsão de crescimento de 12% para 2011 (iSuppli, 2010), a sua penetração é
impressionante, em todo o mundo por cada 100 pessoas existem cerca de 78 telemóveis, no
caso dos países desenvolvidos o valor é de 114.2, Portugal é dos países com uma taxa de
penetração mais elevada, atingindo 143% no final de 2010 (ITU, 2011). Em termos gerais em
Março de 2011 estimava-se a existência de mais de 5,3 mil milhões de telemóveis (ITU, 2011)
em todo o mundo, o que representa a sua adoção muito rápida pelo mercado.
Há muito que os telemóveis foram identificados como uma mais-valia nos processos de negócio
e na comunicação entre pessoas. As tecnológicas de comunicação suportadas pelos
telemóveis continuam a aumentar e a desenvolverem-se rapidamente, nomeadamente
Bluetooth, Infravermelhos, Wifi, GPRS, 3G, câmara, scanners de código de barras, TV, Rádio e
mais recentemente assistimos a desenvolvimentos com RFID (Radio-Frequency Identification) e
NFC (Near Field Communication). Todas estas tecnologias, embora com características,
vantagens e limitações diferentes, visam criar benefícios na utilização do telemóvel nas
relações B2B (Business-to-Business) e B2C (Business-to-Customer).
2
O NFC (NFC Forum, 2011) é um protocolo “contactless” (pelo facto de não existir um contacto
real na comunicação entre os dispositivos) de transporte e de troca de dados de curta distância
(10cm), baseado no RFID (AIM, 2011), entre dispositivos equipados com tags NFC/RFID de
forma segura.
No “Mobile World Congress”1 organizado pela GSMA (GSM Association) em Fevereiro de 2009
em Barcelona, a tecnológica NFC foi um dos assuntos de destaque. É claramente um objetivo
da GSMA trabalhar em requisitos standards com os fabricantes e operadores para que o NFC
seja integrado nos telemóveis em larga escala. Durante o ano de 2009 começaram a ser
comercializados os primeiros telemóveis, mas é em 2011 que se confirma a aposta do mercado
nesta nova tecnológica com o crescimento significativo do número de telemóveis compatíveis.
O CEO da Google, Eric Schmidt (Baladan, 2010), anunciou que a próxima geração de terminais
Android inclui um chipset NFC, tal como se veio a confirmar com o lançamento do Samsung
Nexus S. O mesmo compromisso já foi assumido pela Nokia, RIM e a Apple já manifestou
interesse embora ainda não tenha anunciado quando irá suportar esta tecnológica. O
envolvimento destes 4 gigantes das telecomunicações, será decisivo para que o NFC tenha o
crescimento esperado e assuma um papel essencial principalmente na área de pagamentos
móveis.
Existem três áreas nucleares onde estas tecnologias serão mais exploradas (NFC Forum,
2011):
1. invocação de serviços - a comunicação e transferência de dados via NFC deverá
despoletar a invocação de serviços e integração com outras tecnológicas de
comunicação tais como GPRS/3G ou Wifi;
2. pagamentos e compras, usando o telemóvel como cartão de pagamentos, existem -
grandes avanços nesta área com a concretização acordos com entidades bancárias,
fabricantes e operadores; e a área peer-to-peer, com comunicação para transferência
de dados entre dois telemóveis.
A área dos pagamento é seguramente a que gera mais ruído no mercado, pelo impacto que
tem na vida do utilizador e pelos benefícios de negócio, mas seguramente que o NFC irá ser
muito mais abrangente e com um impacto significativo na nossa vida, basta imaginar cenários
1 Para pesquisa dos conteúdos apresentados, consultar em http://www.mobileworldcongress.com/
3
como deixar de ter passaporte físico, substituir as chaves do carro ou da casa, substituir a
password para entrar no PC, deixar de ter bilhetes em papel para ir ao cinema ou transportes
públicos, trocar contactos, check in ou updates nas redes sociais, desmistificar a medicina ao
permitir obter mais facilmente informação sobre o significado dos termos médicos ou dos
componentes dos medicamentos, publicidade e outros inúmeros casos do nosso dia-a-dia que
podem ser facilitados com recurso ao NFC.
Vários investigadores vêm a integração do NFC nos telemóveis como o primeiro passo para se
garantir a ubiquidade computacional (Battezzati’s, 2005) com a integração da computação num
ambiente em qualquer dispositivo, a qualquer momento e em qualquer lugar. Esta tecnologia
mostra um grande potencial na utilização de serviços móveis B2C e este ponto será o principal
ponto a desenvolver nesta dissertação.
1.1 Pergunta de Investigação
Quais as oportunidades que o NFC cria na área das
telecomunicações móveis na relação B2C?
1.2 Objetivos propostos
O objetivo desta dissertação será centrado na integração tecnologia NFC para relações B2C
através de um telemóvel.
Este documento irá descrever com detalhe a tecnologia NFC, para percebermos o modelo de
funcionamento, vantagens, limitações, standard e principalmente a sua área de atuação no
mercado de telecomunicações e na integração nos dispositivos móveis. O termo dispositivos
móveis será bastante utilizado, representando telemóveis de todas as gamas e tablets PC do
tipo iPad.
Serão descritos os requisitos tecnológicos necessários para implementação de soluções reais
na área de invocação de serviços através de Smart Posters.
Esta dissertação inclui o desenvolvimento de um protótipo que demonstre a leitura e tratamento
de dados de uma tag.
A dissertação exclui análise detalhada sobre a segurança.
4
1.3 Motivação
A principal motivação deste tema de dissertação prende-se com o facto de estar enquadrado
com as funções profissionais que desempenho na empresa Vodafone Portugal, focado no
desenvolvimento de soluções móveis B2C. Tenho acompanhado a tecnologia NFC desde o
início da sua discussão, estando confiante que o seu sucesso será uma realidade e uma grande
aposta do mercado móvel.
1.4 Integração com empresa
A empresa onde desempenho funções profissionais, Vodafone Portugal - Comunicações
Pessoais S.A, integra o maior grupo mundial de telecomunicações móveis. O Grupo Vodafone
está presente em 70 países e contabiliza mais de 340 milhões de clientes.
Da estratégia da empresa destaco dois parágrafos que revela o interesse constante por novas
tecnológicas como forma a que os clientes possam ter benefícios com a sua utilização.
“Através da Vodafone, os Clientes podem estar sempre ligados àquilo que é realmente
importante e tirar o melhor partido das oportunidades que surgem diariamente nas suas
vidas. Seja em mobilidade, em casa ou no emprego, os nossos Clientes podem contar,
em todos os momentos, com serviços irresistíveis e inovadores, os mais recentes
equipamentos e um Serviço de Apoio ao Cliente de excelência.
Estamos na linha da frente da definição dos serviços móveis de voz e dados em todo o
Mundo, acreditamos na mudança e apostamos constantemente na inovação.” (Vodafone
Portugal, 2011)
Para a Vodafone as tecnologias estão a realizar progressos sem fim, criando novos produtos e
oferecendo serviços inovadores. Sensores, tecnologias de ecrãs, Software aplicacional,
minimização e integração do hardware são apenas algumas das tendências recentes, enquanto
a tecnologia na perspectiva do utilizador aparece e desaparece no seu ambiente de uma forma
algo difusa. Existe uma preocupação que a tecnologia faça parte da vida do utilizador de uma
forma que lhe possa melhoria a qualidade de vida e não simplesmente infiltrar-se de uma forma
incompreendida.
Em termos tecnológicos, a integração de semi-condutores permitiram a adoção de novas
tecnologias e uma maior inovação, bem como os Sensores e os acelerómetros em particular
que atingiram dimensões de tal forma reduzidas que permitem a sua integração num telemóvel,
permitindo uma adaptação do telemóvel ao contexto e ambiente física onde se encontra.
5
A empresa vê a integração da tecnológica NFC como uma forma de reforçar a sua política de
líder em inovação tecnológica e aumentar a oferta de serviços, no entanto a estimativa de
crescimento em 2009 não aconteceu devido a problemas na colaboração entre as diferentes
indústrias relativamente ao custo dos dispositivos NFC e sua integração, em 2010 não existiu
grande evolução mas 2011 assistiu-se finalmente ao seu arranque e massificação, sendo um
bom indicio para uma penetração significativa no futuro (Vodafone, 2010).
A Vodafone como membro do GSMA e do NFC Forum, tem um papel ativo da definição dos
requisitos standards da tecnologia NFC, realizou testes na Alemanha e França, tem uma
estreita cooperação com os fabricantes de cartões SIM para integração da tecnologia e tem
vindo a promover conferência sobre a tecnologia. A previsão é que seja uma oportunidade
estratégica importante mas que venha a ser uma aposta a médio termo considerando o modelo
de negócio atual ainda não é o mais interessante, devido aos custos adicionais que representa
num momento económico complexo.
A Vodafone manterá a sua participação ativa na evolução da tecnológica, nomeadamente no
desenho de elementos de segurança (Novos cartões SIM) e irá avançar com a sua
implementação num momento de maior competitividade do NFC.
É possível que o NFC se venha a tornar universal a médio termo, a Vodafone identificou várias
aplicações com potencial de negócio que reforçam a relação comercial com entidades externas,
tais como bancos, transportadoras ou mesmo governamentais.
Fazendo um enquadramento local, identifiquei várias soluções como uma oportunidade de
negócio para a empresa, nomeadamente:
• Pagamento via telemóvel
• Carregamentos de cartões pré-pagos
• Configurações das definições de Internet e MMS Over the Air;
• Inovação de serviços que utilizem comunicações de dados GPRS/3G;
• Aquisição de conteúdos multimédia: toques, imagens, vídeos;
• Acesso a campanhas e descontos através da leitura de cupões de diversas
fontes;
6
• Aquisição de bilhetes para transportes e eventos.
Serão analisados os requisitos necessários para integração destas soluções nas infraestruturas
existentes, bem como a relação de benefício com as potenciais restrições.
1.5 Organização deste trabalho
Esta dissertação está organizada em 5 capítulos.
Depois do enquadramento inicial dos objetivos da dissertação no capítulo de introdução, o
capitulo 2 faz um enquadramento teórico da tecnologia NFC, descreve as principais
características técnicas e as suas aplicações.
O capítulo 3 foca na identificação e avaliação de cenários de utilização, enquadrados na
realidade das telecomunicações móveis e na área de Smart Poster. Descreve as principais
plataformas móveis que apostaram ou anunciaram apostas no NFC, inclui informação sobre o
suporte que cada organização fornece e as principais ferramentas para desenvolvimento de
aplicações NFC, com foco para o sistema operativo Android.
O capítulo 4 descreve com detalhe a proposta de implementação de uma solução Smart Poster,
desde os elementos principais para a arquitetura do cliente e do servidor.
As conclusões que resultam desta dissertação estão descritas no capítulo 5.
7
Capítulo 2 – Enquadramento teórico “A lentidão de uma parte do mundo a adotar
ideias valiosas de outra parte é uma coisa
curiosa e inexplicável. Esta forma de
estupidez não se confina a nenhuma
comunidade, a nenhuma nação, é
universal.”
Twain, Mark
2.1 Tendências de mercado
Baseado num estudo interno sobre tendências das tecnologias em 2010 (Vodafone, 2010),
verifica-se que a adoção da tecnologia móvel, estimulada pelo contínuo aumento da largura de
banda, tornou-se essencial no desenvolvimento de mercados, sejam emergentes com objetivos
mais práticos ou já desenvolvidos onde o entretenimento tem um valor significativo.
As chaves do sucesso do NFC estão em transformar o que é complexo em simples, com
integrações transparentes entre dispositivos e replicar todas as preferências do utilizador em
casa e quando está em mobilidade. Procurar aplicar estas novas tecnologias em diferentes
aplicações, tal como segurança, saúde, programas de educação, são formas de massificar a
sua adoção.
Neste momento, esta é uma tecnologia para massas, o recurso a serviços outsourcing por
forma a reduzir custos de produção, faz com que esta e outras novas tecnologias sejam
acessíveis para a maioria dos consumidores.
Assiste-se ainda a um investimento na educação tecnológica de países diferentes dos
tradicionais (Europa, EUA), tal como a Índia ou a Coreia, o que resulta no desenvolvimento de
novas tecnológicas, tais como o NFC, pagamentos móveis ou realidade aumentada.
Uma nova economia foi criada com novas plataformas tecnológicas, tal como mercados online e
desenvolvimento de conteúdos, que abriram novas oportunidades às pequenas empresas e aos
consumidores.
As alterações na distribuição da população obrigam a que a tecnologia necessite de ser
adaptada para novos segmentos que representam novos tipos de utilizadores. É notável a
8
adaptação das tecnologias tradicionais Ocidentais a novas culturas e novas línguas, exemplo o
Wikipedia disponível em Chinês.
A criação e a melhoria de infraestruturas, especialmente nos mercados emergentes, tem vindo
a facilitar uma rápida expansão de novas tecnologias, no entanto a diferença de velocidade
entre o rápido desenvolvimento tecnológico e o desenvolvimento das infraestruturas podem
causar interrupção na adoção da tecnologia pelos consumidores.
Em termos políticos, os governos e entidades reguladoras terão um papel muito importante e
muito a dizer sobre a forma como as novas tecnologias serão abraçadas pelos consumidores.
Os mercados emergentes ainda têm dificuldades em tornar as tecnologias acessíveis para
todos os consumidores, embora a sua prioridade seja uma utilização pragmática da tecnologia
focando no funcional.
Tal como descrito anteriormente, transformar o complexo em simples é uma das chaves de
sucesso, isto não significa deixar de fazer as coisas complexas mas simplesmente faze-las de
forma simples. A forma como os consumidores podem fazer a migração entre novos produtos
ou upgrades proativos, é um exemplo da simplicidade e acessibilidade da tecnologia atual; o
iPhone é um excelente exemplo de uma mudança de um telemóvel tradicional com multi
tecladas para um equipamento de apenas uma tecla, um paradigma completamente diferente
que fidelizou utilizadores pela sua simplificada de utilização (admob, 2010).
Um dos grandes desafios é atingir a convergência com produtos que permitam uma integração
transparente entre diferentes plataformas e criar um equilíbrio entre o que é profissional e lazer,
entre estar em casa ou fora dela, basicamente permitir aos utilizadores que definam e interajam
com a tecnologia no seu ambiente da forma como acharem mais relevante.
Diferentes estudos provam que inevitavelmente estas novas tecnologias fazem parte da vida
dos consumidores, no entanto diferentes culturas representam formas diferentes de as acolher.
A Figura 1 ilustra o resultado de um estudo que questiona os utilizadores se a tecnologia móvel
mantém o utilizador conectado com a família e os amigos, a grande maioria dos utilizadores
concorda com esta relação.
9
Figura 1-Relação da tecnologia com as redes sociais
Fonte: The Future Company, 2009
Num estudo realizado pela GFK Roper em 2008, junto de consumidores com mais de 15 anos
de vários países, confirmou-se o alcance da tecnologia móvel comparativamente com outros
dispositivos eletrónicos:
• 90% das famílias possuem pelo menos um telemóvel,
• 43% possuem uma câmara digital
• 28% possuem um leitor digital portátil de música
• 13% possuem uma consola de vídeo jogos portátil
Quanto à tendência dos consumidores para adquirir produtos que podem auxiliar nas atividades
diárias para além de lazer, podemos verificar na Figura 2 um estudo da GFK Roper que em
média os consumidores procuram soluções que crie um equilíbrio entre o profissional e o lazer,
ainda com uma maior tendência para o lazer.
10
Figura 2-Tendência da compra de produtos tecnológicos
Fonte: GfK Roper, 2009
A Figura 3 apresenta os resultados do último estudo a apresentar neste capítulo, sobre qual a
atitude perante a tecnologia. Os países emergentes como a África do Sul, China ou Índia
apresentam uma excitação natural perante novas tecnologias pelo facto de mais recentemente
investirem de forma mais intensa nesta área. Já a posição dos países europeus é bem mais
conservadora e exige uma maior maturidade da tecnologia para ser confiável.
Figura 3 - Atitude perante as tecnologias
Fonte: GfK Roper, 2009
11
2.2 Introdução a Near Field Communication
O NFC permite tornar mais simples e mais conveniente a vida das pessoas, conseguindo
adaptar os sistemas atuais, fazendo com que seja mais fácil aceder a novos conteúdos, realizar
pagamentos, pesquisar informação de forma mais intuitiva, sincronizar e partilhar informação,
etc. No congresso mundial de telecomunicações em Barcelona, Fevereiro de 2009, a GSMA
voltou a reforçar a recomendação para que os telemóveis comecem a ser comercializados com
a funcionalidade Near Field Communication (NFC), incluindo a interface standard “single wire
protocol” (SWP), no início de 2011.
As soluções técnicas do NFC derivam da combinação do RFID com tecnologias de
interconexão sem fios e de curto alcance. A Philips e a Sony iniciaram o desenvolvimento em
2002, no entanto esta iniciativa resulta do envolvimento corporativo dos operadores de
telecomunicações móveis, fabricantes de telemóveis e a indústria da eletrónica. Empresas
como a Nokia, Sony, NXP Semiconductors, VISA, Mastercard, Microsoft, Telenor, Vodafone e
mais recentemente a Apple e a Google, estão envolvidas na discussão dos standards e
evolução do NFC. O potencial de negócio é enorme, existe um foco na área de pagamentos,
mas outras áreas tais como compra de bilhetes, controlo de acesso, distribuição de conteúdos,
publicidade, transferência de dados entre telemóveis, serão alguns exemplos de
implementações futuras. Um estudo da Global Industry Analyst divulgou que em 2015 cerca de
1 Bilião de utilizadores (Global Industry Analyst, inc., 2010) (Clark, 2010) irão utilizar os serviços
bancários via dispositivo móvel.
A principal vantagem é a sua simplicidade, as transações são iniciadas automaticamente,
sendo apenas necessário tocar ou aproximar o telemóvel com leitor NFC de um outro telemóvel
com esta tecnologia ou de uma TAG compatível. O NFC fornece uma experiência ao utilizador
simples, intuitiva e segura, onde o telemóvel substitui vários cartões magnéticos ou cartões com
chip, realizando uma comunicação de curta distância sem fios.
Atualmente o número de equipamentos com NFC é ainda reduzido, existem cerca de 70
milhões de equipamentos equipados com chip NFC (Green, et al., 2011), o que representa a
principal barreira ao seu crescimento. No entanto a possibilidade de suportar NFC através do
slot de cartões MicroSD faz com que o potencial seja mais otimista e em previsões recentes a
IMS Research aponta que em 2015 existam cerca de 900 Milhões de equipamentos com chip
NFC (IMS Research, 2011).
12
Em Novembro de 2010, a Google anunciou que a nova versão dispositivos Android a lançar em
2011 iria integrar circuitos NFC. A Nokia que foi pioneira nesta integração, reforçou a sua
mensagem de que uns dos principais focos de 2011 será o NFC. Outros fabricantes irão seguir
a mesma orientação por pressão que estes dois gigantes das telecomunicações colocam no
mercado, existindo rumores que de a Apple irá integrar circuitos NFC no IOS5 para iPhone e
iPad.
Numa fase inicial as aplicações com NFC deverão reutilizar as infraestruturas de comunicações
existente, por forma a obter um Business Case forte e riscos reduzidos, porem isto implica a
necessidade de transformar numa tecnologia barata que possa ser distribuída e ser compatível
com a maioria dos dispositivos móveis e infraestrutura de leitura que existem no mercado, para
tal a industria terá que ser mais participativa e colaborar entre si por forma a assegurar
benefícios para todos.
2.2.1 Aplicações de referência
Este capítulo descreve 3 cenários de referência para utilização do NFC, nomeadamente
Pagamentos, bilhética e Smart Poster.
2.2.1.1 Pagamentos e Bilhética
Pagamentos e bilhética são consideradas áreas críticas do NFC. O NFC permite simular um
cartão inteligente para realizar pagamentos ou utilizar como bilhete de acesso, por exemplo aos
transportes público. O facto das normas especificadas para o NFC garantirem compatibilidade
com outras normas de outros tipos de cartões sem contacto, faz com que se consiga reutilizar
infraestrutura atual, tal como leitores de cartões que são usados nas redes de transportes.
O conceito de pagamento móvel está relacionado com o uso de um dispositivo móvel para
executar uma transação de pagamento onde o dinheiro ou os fundos são transferidos de um
pagador para um recetor via um intermediário (por exemplo uma instituição bancária) ou
diretamente sem intermediário. O NFC altera o paradigma atual de pagamentos móveis ao
conseguir compilar diferentes funções de vários tipos de cartões sem contacto num dispositivo
móvel. Desta forma com o mesmo dispositivo passamos a conseguir realizar pagamentos,
utilizar como bilhete para transportes públicos entre outros.
A transformação deste cenário numa utilização comum tem sido mais lento do que o esperado
porque não basta apenas ter um leitor e uma tag, existe toda uma infraestrutura que terá que
13
ser criada, nomeadamente um tipo de chip seguro para garantir a segurança do
armazenamento dos dados e persistência dos dados.
Atualmente existem duas soluções para implementação de um chip seguro, um chip que seja
embebido dentro dos dispositivos móveis, semiaberto, controlado pelos fabricantes dos
dispositivos ou utilizar o cartão SIM como o chip seguro, o que faria os operadores de
telecomunicações como uma parte central do esquema NFC.
Neste momento a solução de ter um chip seguro controlado pelos fabricantes está a avançar
mais rápido com a chegada de novos equipamentos que já tem a tecnologia integrada, tais
como o Samsung Nexus S ou Nokia C7.
Recentemente o Concelho Europeu de Pagamentos (EPC), que representa a indústria bancária
europeia, divulgou a primeira versão de um documento que tem como objetivo criar normas
abertas que regulem os pagamentos via NFC, o documento “The Mobile Contactless (SEPA –
Single Euro Payments Area) Payments Interoperability Implementation” (Secretariat, 2011)
descreve com detalhe os modelos do serviço, processos, segurança, arquitetura e gestão do
ciclo de vida dos cenários de pagamento via telemóvel. Esta iniciativa pretende evitar a
fragmentação de implementações por parte das principais entidades. O EPC está a trabalhar
com as organizações mais relevantes na área dos pagamentos para telemóvel, nomeadamente
a GlobalPlatform, que normaliza as aplicações baseadas em tecnologias com chips seguros, a
GSMA e a Mobey Forum (organização global que opera na perspectiva dos bancos). Em
Outubro de 2010, a EPC e a GSMA desenvolveram e divulgaram em conjunto um documento
com os requisitos e especificações para serviços de pagamentos utilizando NFC. A versão final
está prevista para Outubro de 2011.
2.2.1.2 Smart Poster
O Smart Poster tem como principal objetivo a invocação de serviços através da leitura de tags
ou cartões. O conceito técnico foi desenvolvido pelo NFC Forum (NFC Forum, 2006-2011). A
especificação define como é que um número de telefone, SMS ou URL pode ser guardado
numa tag NFC ou como poderá ser realizado o transporte de dados entre dispositivos.
Basicamente permite transformar qualquer objeto físico num objeto inteligente com a adição de
uma tag neste objeto. Isto significa que o objeto passa a poder guardar informação sobre si
próprio.
14
O Smart Poster permite iniciar uma chamada telefónica, enviar um SMS ou aceder a um URL
através da leitura de uma tag NFC via um dispositivo móvel. Poderá também abrir outras
aplicações instaladas no dispositivo móvel ou editar e guardar a informação lida de uma tag
NFC.
Um bom exemplo é um poster de cinema com uma tag NFC que está configurada com um URL
que permite aquisição de bilhetes de cinema, ao “tocar” com o dispositivo móvel este irá abrir o
browser de internet com o URL onde o utilizador poderá reservar e comprar bilhetes para ver o
filme. Quando a transação estiver concluída, o utilizador poderá receber um SMS no telemóvel
que servirá de bilhete.
Este exemplo pode ser expandido a situações em que o utilizador “toca” numa eventual tag
“Mais informação”, a tag teria um URL que permitiria ao utilizador realizar o download de um
trecho do filme entre outras situações.
Podemos extrapolar para situações de posters com descontos na aquisição de produtos ou
refeições, nas quais ao “tocar” na tag NFC o dispositivo cria um SMS para um número/texto
predefinido que corresponda por exemplo à reserva de um lugar num restaurante com
atribuição de um desconto apresentado no poster. Atualmente através da leitura de QRCode
(Wikipedia, 2011) é possível ter este tipo de experiência no entanto obriga sempre que o
utilizador tenha que focar um objeto através da camara do telemóvel, o que faz com que
experiência não seja tão simples para o utilizador tal como a proporcionada pelo NFC.
2.2.2 Dependências
Estão identificadas dependências com as outras tecnologias sem fios. O NFC fornece um
rápido “handshake” entre dispositivos, que pode depois ser utilizado por outras tecnologias sem
fios para transferir grandes quantidades de informação. Vários casos estão a ser avaliados, tais
como:
• Wi-Fi Alliance definiu o uso do NFC para um emparelhamento automático entre
dispositivos Wi-Fi através de um canal dedicado;
• Suporte USB sem fios para NFC;
Por motivo de ser uma rede de curto alcance, não poderá competir com outras redes tais como
WiFi ou USB, o NFC é visto como uma oportunidade para melhorar a usabilidade destas
tecnologias alternativas, por exemplo uma TAG NFC poderá conter informação sobre o acesso
15
a um hotspot, tal como o seu nome e chave, um dispositivo ao ler esta TAG irá configurar
automaticamente o acesso à rede WIFI.
2.3 NFC no Mundo
São conhecidas diversas implementações já realizadas com a tecnológica NFC. Desde 2008
que foram realizados estudos, testes ou implementações reais em mais de 54 países
(NFCWorldAll), algumas apenas experiências para estudar a parte tecnológica e a aceitação
por parte do consumidor.
A área de pagamento é naturalmente a que mais se destaca, pela complexidade e pela
dimensão de negócio, exemplos:
• Operador Japonês de telecomunicações móveis, NTT DoCoMo, emitiu mais de 60
milhões de cartões SIM com chip NFC Sony’s Felica com a finalidade de cartão de
crédito e para leitura de SmartPoster, a maioria dos terminais lançados por este
operador já permite ler TAG NFC (Clark, 2010).
• Google lança o serviço “Google Wallet” (Google , 2011) que permite realizar
pagamentos seguros via telemóvel, utiliza como elemento de segurança o Chip que está
integrado no telemóvel, que tem a responsabilidade de encriptar e armazenar as
credenciais que permitem realizar o pagamento. Inclui parcerias com a City Bank,
MasterCard, First Data e Sprint, criando um ecossistema aberto para comércio
eletrónico.
As redes sociais estão em constante crescimento, seja pelas novas redes que são criadas ou
pela quantidade de novos utilizadores, a integração com NFC é algo que tem vindo a ser
explorado, bem como a partilha de conteúdos em dispositivos. Exemplos:
• Operador Japonês NTT DoCoMo e Twitter anunciaram parceria (Weaver, 2011) que
consiste em desenvolver serviços baseados na localização do telemóvel, dando ao
utilizador a possibilidade de retornar resultados de pesquisas mais ricos quando se
utiliza o Twitter em tempo real. Este novo desenvolvimento é complementar ao serviço
“Tap to Follow” (Perez, 2011) que permite aos utilizadores da operadora seguirem
twitters, bastando aproximar o equipamento com NFC da tag com informação do Twitter.
16
• A rede Social FourSquare (foursquare, 2011) anunciou experiência com o smartphone
Samsung Nexus S equipado com Android e chipset NFC, que consistia em aproximar o
telemóvel junto de um marcador e esta atividade realizava check in na rede FourSquare.
• DoubleTwist lançou funcionalidade (Lawer, 2011) para o Android que permite partilhar
ficheiros MP3 entre dois telemóveis NFC. A proximidade entre os dois telemóveis faz
com que despolete automaticamente a partilha de ficheiro através da rede Wifi ou
Bluetooth.
A procura constante por inovação faz com que novas áreas passem a ser alvo da integração
com NFC, como exemplo os jogos:
• A Nokia juntou o NFC ao ambiente dos jogos (Nokia, 2011), disponibilizando no Nokia
C7 uma versão exclusiva do jogo Angry Birds, que permite aos utilizadores com
equipamento NFC desbloquear o acesso a 5 níveis do jogo, desde que “toquem” o seu
equipamento com outro equipamento NFC e com o jogo instalado, criando uma
dinâmica completamente nova num mercado onde o NFC ainda não tem grande
integração.
2.4 NFC em Portugal
O mercado em Portugal está acompanhar a evolução da tecnologia de forma passiva,
observando quando é o melhor momento para começar a apostar seriamente. Porém de
destacar algumas atividades já efetuadas:
• Teste realizado em Lisboa, ano de 2009,os 3 operadores móveis juntaram-se para um
teste em pequena escala para utilizar o NFC como sistema de bilhética para o metro de
Lisboa, o objetivo passava por expandir ao restantes transportes da capital mas até ao
momento não existiu grande evolução (Clark, 2009).
• Recentemente, os 3 operadores móveis anunciaram um acordo de princípio para a
criação de uma entidade independente, que faça a gestão dos serviços e sistemas de
pagamentos com NFC em Portugal. Esta entidade terá que gerir a plataforma que
garante uma ligação segura entre o chip NFC e o cartão SIM, ambos já integrados no
telemóvel (Séneca, 2011).
17
2.5 Tecnologia NFC
A tecnologia NFC é uma tecnologia bidirecional de curto alcance, sem fios, que utiliza Rádio
Frequência (RF) para estabelecer uma ligação com outros dispositivos eletrónicos que estejam
próximos.
NFC usa a banda UHF na frequência 13.56MHz, com velocidades de transmissão de dados de
106Kbit/s, 212Kbit/s e 424Kbit/s até uma distância de 20 cm. Maiores taxas de velocidade são
esperadas no futuro.
Para uma comunicação com NFC é necessário que exista:
• Dispositivo com NFC com modo de leitura e escrita, denominado de dispositivo ativo, para
iniciar as comunicações, escrever e controlar a troca de informação;
• Dispositivo passivo que possui uma tag NFC, que contém informação que pode ser lida e
transferida para o dispositivo ativo com NFC.
A comunicação entre dispositivos NFC poderá ser em modo passivo ou ativo. No modo ativo,
ambos os dispositivos criam o seu próprio campo de rádio para transmitir os dados. No modo
passivo, apenas um dos dispositivos cria um campo RF e o outro dispositivo usa a modulação
existente para transferir dados. O protocolo NFC especifica que o dispositivo que inicia a
comunicação é responsável por criar o campo RF.
Tecnicamente, um sistema NFC consiste em dois elementos que precisam de ser
implementados num dispositivo móvel:
• Um módulo NFC inclui um chipset NFC e uma antena. Este módulo de Hardware
necessita de ser integrado no dispositivo móvel.
• Um elemento de segurança que guarda as aplicações NFC, que deverão estar pré-
instaladas ou instaladas over-the-air. Existem 3 diferentes opções para implementação
deste elemento de segurança:
o Elemento de segurança no Cartão SIM. Esta opção é a preferida pelos operadores
de telecomunicações móveis GSM e UMTS porque permite ao operador controlo
sobre as aplicações NFC. Com esta arquitetura, o elemento de segurança no
cartão SIM comunica com o módulo NFC do dispositivo móvel através de protocolo
18
Single Wire (SWP), cujo standard pelo definido pela European Telecommunication
Standard Institute (ETSI), entidade responsável por definir standards que permitam
ao mercado Europeu funcionar como um todo ao nível das telecomunicações.
Assim a pedido dos operadores, as soluções centradas no cartão serão
suportadas e desenhadas pelos fabricantes de telemóveis.
o Elemento de segurança poderá estar num cartão de memória removível, implica a
necessidade de um mais um slot para um novo cartão de memória. Esta opção
assume-se como viável, principalmente desde que é possível oferecer NFC
através do slot dos cartões MicroSD, a maioria dos telemóveis suportam ou irão
suportar um slot para cartões MicroSD.
o Elemento de segurança embebido no telemóvel, metodologia seguida pela Nokia e
para Google.
Figura 4-Elementos da implementação NFC no telemóvel
Existem várias opções para implementação de interface de utilizador para aplicação NFC:
• Java to mobile edition (J2ME)
• SIM Toolkit
Cartão SIM
Cartão de memória
Elemento segurança embebido no telemóvel
Elemento Segurança
Elemento de segurança (armazena aplicações NFC)
Modulo NFC (Chipset e Antena)
Download Over-The- Air
Interface Utilizador
19
• Aplicações nativas
Um telemóvel com NFC pode operar de acordo com os seguintes modos (Madlmayr, et al., 2007):
• Modo de leitura/escrita: Neste modo, o telemóvel com NFC pode ler e alterar a informação
numa TAG passiva compatível com NFC.
• Emular um Cartão: Um telemóvel NFC pode atuar como um smart card podendo ser
utilizado para pagamentos e compra de bilhetes por exemplo.
• Peer-to-peer: Permite que dois telemóveis com NFC possam estabelecer uma
comunicação bidirecional para trocar informação, tais como contactos, conteúdos
multimédia ou qualquer outro tipo de informação.
De acordo com a especificação do NFC Forum (NFC Forum, 2006-2011), a Figura 5 apresenta de
forma sumária a relação dos diferentes modos e os protocolos associados a cada modo, bem
como as tags compatíveis.
Figura 5 - Visão sumária do standard especificado por NFC Forum
Aplicações
LLCP (Logical Link
Control Protocol) NFCIP
RTD (Record Type Definition)
& NDEF
(Data Exchange Format) Tag Type 1,2,3,4
Card Emulation
(Smart Card
Capability for Mobile Devices)
Camada RF ISO 18092 + ISO 14443 Type A, Type B + FeliCa
Modo Peer to peer
Modo Leitura/Escrita Modo emular cartão
Comutação de modos
20
Os próximos capítulos descrevem com mais detalhe os protocolos associados a cada modo.
2.6 Especificações NFC
O NFC foi aprovado como um standard ISO/IEC em Dezembro de 2003 e mais tarde como um
standard ECMA.
NFC está especificado nos standards:
• ECMA-340 e ISO/IEC 18092 - Near Field Communication Interface and Protocol-
1 (NFCIP-1) (ECMA, 2004)
• ISO/IEC 21481 / ECMA-352 - Near Field Communication Interface and Protocol-2
(NFCIP-2) (ECMA Internacional, 2010)
Estes standards incluem especificações relacionadas com esquemas de modulação,
codificação, velocidades de transferência dos dados, formato dos interfaces RF dos dispositivos
NFC, esquemas de inicialização de ligações, condições de anti colisão de dados, bem como
protocolos de transportes de dados, protocolos de ativação e métodos de troca de informação.
A tecnologia NFC incorpora uma variedade de standards existentes, tais como:
• Standard Smart Card ISO 14443 tipo A (WG8, 2000-2011) e tipo B (ATMEL, 205)
• Mifare – Adiciona no ISO 14443 type A
• FeliCa (Sony, 2004)
O facto de o NFC derivar destes standards, permite que a sua integração seja mais fácil, sendo
compatível com um grupo de cartões que são largamente utilizados para pagamento de
transportes públicos ou controlo de acessos. Consulta capítulos 2.6.1, 2.6.2, 2.6.3, 2.6.4 para
mais detalhe.
Como complemento, a organização NFC Forum definiu um formato de dados comum,
denominado por NFC Data Exchange Format (NDEF), que permite guardar e transportar
diferentes tipos de dados, desde objetos MIME2 até texto curto tal como endereços de internet,
ver capitulo 2.7-Protocolos NFC.
2 Multipurpose Internet Mail Extensions – ver descrição em http://en.wikipedia.org/wiki/MIME
21
2.6.1 ISO 14443
O protocolo ISO 14443 é um standard internacional bem conhecimento, desenvolvido
originalmente para a comunicação de cartões em proximidade na frequência de rádio
13.56MHz.
O protocolo está dividido em 4 partes e a sua composição vai desde a camada de rádio até à
camada de protocolo de transmissão.
Existem duas versões para a camada de rádio ISO14443-2, com diferentes métodos de
modulação e codificação. Estas versões são conhecidas por versão A e B do protocolo ISO
14443.A segunda camada, de construção dos pacotes e de baixo nível, tem igualmente duas
versões semelhantes, ISO 14443-3 A/B. Por último, a camada de todo define o interface para
transmissão de informação, ISO 14443-4.
Figura 6 - Composição protocolo ISO 14443
2.6.2 NFCIP-1
A comunicação peer-to-peer entre dois dispositivos NFC é realizada através de mecanismos
definidos no protocolo Near Field Communication – Interface and Protocol specification, NFCIP-
1, também conhecido por ISO 18092/ECMA 340.
2.6.3 MIFARE
Este protocolo está relacionado com um tipo de tags proprietárias desenvolvidas pela NXP
Semiconductors, estas tags são largamente utilizadas como cartões de memória em aplicações
de transporte. A - ISO 14443 MifareFigura 7 apresenta as camadas que constituem o protocolo.
ISO 14443-4 Protocolo do Interface para transmissão de dados
ISO 14443-3A ISO 14443-3B
ISO 14443-2A ISO 14443-2B
Protocolo para construção dos pacotes e de baixo nível
Rádio
22
Figura 7 - ISO 14443 Mifare
2.6.4 FeliCa
FeliCa é uma tecnologia de tags NFC desenvolvida pela Sony e é largamente utilizada para
pagamentos e aplicações de transportes no mercado asiático. Estas tags representam o
standard da indústria japonesa e são baseadas no modo passivo do ISO 18092, com a adição
de funcionalidades de autenticação e encriptação.
Figura 8 - ISO 14443 FeliCa
2.7 Protocolos NFC
O NFC Fórum especificou um formato de encapsulamento de mensagens para troca de
informação entre dispositivos NFC ou leitores ou tags, desde que estes elementos sigam a
especificação do NFC Fórum, esse formato é denominado de NFC Data Exchange Format
(NDEF) (NFC FORUM, 2006).
2.7.1 NDEF
NDEF é um formato de mensagem binária para troca de carga aplicacional ou payload, de
qualquer tipo ou tamanho dentro de uma única mensagem. O payload é descrito por um tipo, o
MIFARE command protocol Protocolo do Interface para transmissão de dados
ISO 14443-3A
ISO 14443-2A
Protocolo para construção dos pacotes e de baixo nível
Rádio
ISO 18092 Protocolo do Interface para transmissão de dados
ISO 14443-3A
ISO 14443-2A
Protocolo para construção dos pacotes e de baixo nível
Rádio
FeliCa
23
tamanho é um identificador opcional. Tipos possíveis são os URI, tipo MIME e tipos específicos
do NFC.
O tamanho é um inteiro positivo ou negativo que indica o número de bytes do payload, para
payload mais pequeno existe um registo mais pequeno e compacto. Os payloads podem incluir
mensagens aninhadas ou cadeias de blocos ligados com tamanho desconhecido no momento
em que os dados são gerados. NDEF é apenas um formato de mensagem e não guarda
informação sobre as ligações ou sobre os circuitos lógicos.
A especificação NDEF define o formato da estrutura de dados NDEF e as regras para criar uma
mensagem NDEF valida, bem como para uma coleção de registos NDEF continuo, intactos e
ordenados. O NDEF assume um protocolo fundamental e confiável e não especifica como é
que os dados têm que ser transferidos entre entidades NFC. O tamanho das mensagens é de
2^32-1Bytes.
Baseado no NDEF, o NFC Fórum desenvolveu 4 diferentes definições de tipos de registo NFC,
nomeadamente Texto, URI, Smart Poster, e Controlo Genérico. O objetivo é permitir que os
programadores consigam criar as suas aplicações da forma correta, utilizando um conjunto de
regras e formatos gratuitos e disponíveis para todos.
O tipo de dados num registo e o seu tamanho ficam guardados num Header anexado ao
payload. O Header inclui um campo “tipo” que identifica o tipo payload, o tamanho do payload
indica o número de octetos no payload. Pode ainda ser utilizado um identificador opcional que
permite que aplicações para o utilizador consigam identificar o tipo de payload transportado
num registo NDEF. O formato do valor do campo “tipo”
24
Figura 9 - Mensagem NDEF
(Baseada nas especificações NFC)
2.7.2 Record type definition (RTD)
A Figura 10 - Tipos de registo NDEF apresenta de forma resumida os diferentes registos NDEF
e o tipo de carga que cada registo pode conter.
Figura 10 - Tipos de registo NDEF
Smartposter
Texto
Uri• Web URL• email• SMS• Tel
MIME
Imagem
vCard
Texto Controlo Generico Assinatura Vazio
Mensagem NDEF
Registo 1 Registo 2 Registo 2
Header Payload
Identificador Tamanho Tipo
25
Tabela 1-Tabela exemplo da composição de registos NDEF
2.7.2.1 Registo de Texto
Registo de texto é o tipo mais simples, pode conter apenas uma string ou um texto descritivo de
outro registo.
As mensagens com este tipo de registo podem conter 3 campos:
• Encoding
o Pode ser UTF-8 ou URT-16
• Código de linguagem
o Normalmente possui em 2 a 5 caracteres. Exemplo: pt-PT
• Texto, exemplo (19bytes):
Exemplo Header e tipo de
Registo (Type
name format-
TNF)
Tamanho
do tipo
Tamanho
da carga
Tipo Encodin
g
Código
Lingua
gem
Texto
Registo de
texto
NfcRtd (Record
type definition)
1 15 T UTF-8 pt-PT Vodafone
Portugal
Tabela 2 - Exemplo de um registo Texto
Campos opcionais
26
2.7.2.2 Registo URI
O registo URI é composto por um código que identifica o tipo de URI, contem abreviaturas, por
exemplo: 0x01=”http://www.”, 0x05 =tel:
Exemplo Header e tipo de Registo (Type name format-TNF)
Tamanho do tipo
Tamanho da carga
Tipo Código do identificador Uri
Uri
Registo Uri NfcRtd (Record type definition)
1 10 U 0x01 Vodafone.pt
Tabela 3 - exemplo registo Uri
2.7.2.3 Registos Smart Poster
O registo Smart Poster pode conter outros tipos de registo NDEF, o seu conteúdo deverá ter:
• Registo Uri
• Pode ter um título, ação recomendada (Abrir, armazenar, editar), icon (MIME), tamanho
e tipo.
Exemplo Header e tipo de Registo (Type name format-TNF)
Tamanho do tipo
Tamanho da carga
Tipo Registo Uri Registo de Texto
Registo Smart Poster
NfcRtd (Record type definition)
2 33 Sp 0x01, “Vodafone.pt”
UTF-8, pt-PT, “Vodafone Portugal”
2.7.3 LLCP
Para melhoria o modo peer-to-peer, o NFC Forum especificou um protocolo ao nível da camada
de ligação de dados, conhecidos por “logical link control protocol” (LLCP). Este protocolo
fornece funcionalidades adicionais à especificação NFCIP-1/ISO 18092.
LLCP introduz duas vias de ligação de dados, permitindo assim que ambos os dispositivos
possam enviar e receber dados, utilizando os seguintes métodos para transferência de dados:
• Transferência de ligação orientada, na qual as transferências de dados são
reconhecidas/confirmadas pelos peers
• Transferência sem ligação, onde as transferências de dados não são reconhecidas
27
Tabela 4 - Modelos de referência LLPC
2.8 Tag NFC
Uma das características principais do NFC, é o facto de dispositivos ativos com NFC ou leitor,
poderem tocar ou aproximar dispositivos passivos com uma tag NFC de modo a ler e transferir
informação do dispositivo passivo para o ativo.
A tag NFC possui pequenas quantidades de informação, mas que são suficientes para que o
dispositivo ativo tenha todas as instruções para executar uma ação ou obter mais informações.
Por exemplo, a tag pode estar num poster que promova uma aplicação para telemóvel, esta tag
poderá conter apenas um URL para download da aplicação, em que o objetivo é que o
utilizador toque o telemóvel NFC na tag para ler o URL, existindo uma aplicação no telemóvel
que abre o browser de internet com o URL lido, de modo a iniciar o download.
Atualmente o custo de um tag é de cerca de trinta cêntimos (Mages, 2011), mas novas formas
de produção estão a ser desenvolvidas o que poderá reduzir o preço para cerca de cinco
cêntimos (McLean, 2011). Esta redução criará condições para que a tecnologia se massifique
mais rapidamente.
2.8.1 Tags NFC Forum
Foram definidos 4 tipos de tags, que diferem no formato e na capacidade. O formato foi
baseado nos standards internacionais ISO 14443 Type A e B, com exceção do ISO 18092 para
sistemas Sony FeliCa. Os diferentes tipos são:
• Tag Tipo 1: A tag tipo 1 é baseada na norma ISO14443A. Estas tags suportam leitura e
rescrita, podendo ser configurada como apenas de leitura. Tem 96bytes de memória
disponível, expansível a 2KB, que é o suficiente para guardar um URL para uma página
Modelo de referência IEEE 802 Lan
Modelo de referência OSI
LLPC
28
de internet ou pequenas quantidades de informação. A velocidade de comunicação é de
106Kbit/s. A simplicidade desta tag faz com que tenha custos mais baixos e que seja o
ideal para uma boa parte das aplicações NFC (NFC FORUM, 2007).
• Tag Tipo 2: Igual à tag tipo 1 com exceção que tem 48bytes de memória disponível,
expansível a 2KB (NFC FORUM, 2007).
• Tag Tipo 3: A tag tipo 3 é baseada no sistema Sony FeliCa. Tem 2KB de capacidade de
memória e consegue velocidades de comunicação de 212 Kbit/s ou 424 Kbit/s. Esta tag
é mais orientada para aplicações NFC mais complexas, implica que tenha um custo
superior por tag (NFC FORUM, 2007).
• Tag Tipo 4: A tag tipo 4 foi definida para ser compatível com as normas ISO14443A e B.
Estas tags são pré-configuradas no ponto de fabrico e podem ser de leitura e rescrita ou
apenas de leitura. A sua capacidade de memória pode ser até 32KB, podendo a
velocidade de comunicação ser entre 106 kbit/s e 424kbit/s (NFC FORUM, 2010).
Como podemos ver pelas descrições anteriores, o tipo 1 e 2 distinguem-se do tipo 3 e 4 pelas
suas capacidades de memória e velocidade, sendo orientadas para diferentes tipos de
aplicações. Uma das principais diferenças deve-se ao facto do tipo 3 e 4 normalmente estarem
em modo só de leitura, a escrita é realizada pelo fabricante ou poderá ser realizada através de
um sistema específico de escrita de tags.
Ver Anexo 3 – TAGs NFC e a sua aplicação, para informação de quais os melhores tipos de tag
para cada tipo de aplicação.
2.8.2 Tags NXP
A empresa NPX Semiconductors definiu um tipo de tag proprietário, MIFARE Classic (NPX
Semicondutors, 2010) que tem como principais características:
• Baseado no standard ISO-14443A
• Permite leitura e escrita, podendo ser configurada apenas com modo de leitura
• Memória poderá variar entre os 192, 768 ou 3584 bytes
• Velocidade de comunicação até 106 kbits/s
• Suporte anti colisão
• Compatível com outros produtos já disponíveis no mercado, tais como: NXP MIFARE Classic 1K, 4K ou Mini.
29
2.8.3 Componentes
Figura 11-TAG NFC
A tag NFC é um dispositivo passivo sem fonte de energia, a energia necessária para enviar e
ler a informação armazenada é obtida do leitor, que transmite ondas eletromagnéticas. Estas
ondas são intercetadas pela TAG e convertidas em energia no Microchip, utilizando um mini-
transformador. No entanto também existem tags que possuem mini baterias para se auto
alimentar e assim podem-se manter sempre ativas, desta forma consegue-se aumentar o raio
de transmissão.
O leitor de NFC comunica com a TAG sem necessidade de contacto físico ou de estarem em
linha de visão. Estes interfaces processam os dados lidos da TAG e comunicam com aplicações
externas para fazer o tratamento da informação.
2.8.4 Modo de funcionamento das Tag: Ativo-Passivo
Modo Ativo
O dispositivo possui uma bateria e não necessita de extrair energia do campo eletromagnético,
principais características:
• Maior campo de alcance
Antena: Em sistemas indutivos, a antena é um fio de arame que contorna o chip de memória. A antena é utilizada para enviar informação armazenada no chip bem como para receber sinais do leitor de NFC.
Microchip: Chip de memória, microscopicamente pequeno, guarda um conjunto de informação (Ex: Fabricante, produto, versão, número de serie, URL, etc.). Dependendo do tipo de aplicação e do chip, estas unidades de armazenamento podem ser rescritas repetidamente.
30
• Custo mais elevado
• Necessita de um leitor menos potente;
• Vida finita.
Modo Passivo
O leitor fornece energia através do campo eletromagnético aos componentes da tag, principais
características:
• Tags mais pequenos, leves e baratos;
• Vida quase ilimitada;
• Necessitam de leitores mais potentes.
2.9 Comparação com outras tecnologias
A Tabela 5-Comparativo entre tecnologias de seleção
Fonte: ,apresenta uma comparação entre o NFC e outras tecnologias com características
semelhantes, de interação através do contacto físico ou visual.
31
Tabela 5-Comparativo entre tecnologias de seleção
Fonte: (Tuikka, et al., 2009)
NFC Visual Code IrDA RFID UHF Bluetooth
Modo de
interação
TouchMe PointMe
(TouchMe)
PointMe ScanMe
(TouchMe)
(PointMe**)
ScanMe
Tipo de
transferência de
dados
Unidireccional e
Bidireccional
Unidireccional Bidireccional Unidireccional
(Bidireccional)
Bidireccional
Taxa de
transferência
Media Media Alta Media Baixa Alta
Latência Curta Curta Media Curta Longa
Distância de
Alcance
Curto (médio*) Curto-longo Médio (longo) Médio-longo Longo
Tipo de
armazenamento
de dados
Fixa (Dinâmica) Estática Dinâmica Fixa (Dinâmica) Dinâmica
Capacidade de
armazenamento
Limitado
(ilimitado*)
Limitado Ilimitado Limitado
(ilimitado*)
Ilimitado
Processamento
de dados
Limitado
(ilimitado*)
Não Sim Limitado
(ilimitado*)
Sim
Custo unitário Baixo Muito Baixo Médio Baixo Médio - Alto
Consumo de
energia
Sem consumo
(Baixo*)
Sem consumo Médio Sem consumo
(Baixo*)
Médio – Alto
Suporte para
Telemóveis
Limitado Sim, telemóveis
com câmara
Sim Não Sim
*Tags com Bateria **Quando combinado por exemplo com um sensor de luz
Esta tabela compara diferentes tecnologias de contacto físico ou visual e mostra-nos que a
tecnologia “Visual Codes” é superior quando consideramos o fator custo unitário como critério
fundamental, mas é inferior quanto a fornecer uma experiência ao utilizador mais simples e
intuitiva. O NFC é adequado quando é necessário troca de informação de forma bidirecional ou
32
mais capacidade de memória. Além de que, as tags NFC podem ser o interface para outros
sistemas digitais, tais como terminais Point of Sale (POS), ou sensores, o que não é possível de
se conseguir com os Visual Code. As tags baseadas no IrD são mais caras do que as
anteriores. Do ponto de visto de mercado, o NFC é visto com maior potencial comercial.
O Bluetooth aparece apenas como uma referência mas é frequente comparar-se o Bluetooth
com o NFC no que diz respeito a ligações peer-to-peer. Com base na análise realizada, concluí
que o NFC é mais vantajoso em relação a:
• Simplicidade na Interação entre dois dispositivos, baseado no toque
• NFC possui baixa latência ao contrário do Bluetooth que é das tecnologias com maior
latência;
• Consome menos bateria
• Custo unitário mais barato do que o Bluetooth, tecnologia menos complexa
• Devido ao curto alcance é menos suscetível a interferência ou interceção na
comunicação.
No entanto também apresenta algumas desvantagens, nomeadamente:
• O curto alcance pode dificultar a comunicação com outro telemóvel ou outro ponto de
acesso fixo;
• Baixa taxa de transferência pode fazer com que a comunicação para transmitir pacotes
de dados maiores seja demasiado longa;
• A localização da antena terá que ser do conhecimento do utilizador;
Algumas destas desvantagens podem ser reduzidas se utilizarmos o NFC em combinação com
outras tecnologias tais como o Bluetooth, Wifi ou 3G.
A Figura 12, mostra como o NFC se posiciona face a outras tecnologias no que diz respeito
taxa de transferência e alcance.
33
Figura 12-NFC e outras tecnologias
Fonte:NFC Forum
2.10 Segurança
Todos os tipos de redes sem fios são vulneráveis a várias ameaças. Facilmente se consegue
escutar um canal e o sinal projetado é perturbado por outros sinais. Estes pontos estão para
além do objetivo desta dissertação mas será feita uma análise resumida a estas ameaças. O
problema de uma transmissão de rádio é que é possível que utilizadores maliciosos possam
aceder ao canal sem serem os seus proprietários. Sem proteção, é possível capturar os
pacotes de dados transferidos, alterar a informação ou guardar as mensagens para que possa
fazer uso malicioso destas. Para superar estas ameaças, os sistemas precisam de implementar
autenticação, confirmação de integridade dos dados, confidencialidade e proteção a respostas.
O nível de proteção necessária deverá ser definido ao nível da aplicação.
A possibilidade de realizar pagamentos com recurso a esta tecnologia, faz com que existam
maiores preocupações de segurança, o potencial de risco aumenta. A partilha de conteúdo
privado poderá já não precisar do mesmo nível de segurança.
Os standards ISO 14443 e o ISO 18092 não especificam um modelo de encriptação ou de
segurança para este tipo de comunicações, neste caso esta funcionalidade terá que ser
desenvolvida na camada aplicacional.
34
No entanto, neste momento as maiores organizações do mercado, tal como a VISA ou
MasterCard, bem como os fabricantes dos equipamentos estão a desenvolver e implementar
diversas soluções de segurança. Algum trabalho já é público mas a especificação técnica não é
conhecida do mercado, apenas dos respetivos parceiros de negócio.
O modo de comunicação passiva posiciona-se como uma boa solução para transferir dados
sensíveis, é mais difícil escutar mensagens do que o modo de comunicação ativa. O pequeno
período de tempo para se estabelecer a comunicação é igualmente essencial para aplicações
que venham a ser utilizadas para pagamento de transportes públicos ou controlo de acesso. No
entanto esta funcionalidade pode ser utilizada pelos dois tipos de comunicação, ativa e passiva.
2.11 Arquitetura
Os dispositivos NFC possuem um chip Smart Card seguro que está junto ao controlador NFC,
este controlador garante a conversão dos sinais digitais transferidos na proximidade na ligação.
Este circuito integrado é referenciado como o Elemento Seguro (SE) utilizado para quando
opera no modo de emulação de TAG.
Este elemento seguro está conectado ao controlador NFC para a proximidade das transações
(exemplo: Pagamentos no ponto de venda). O controlador local é igualmente capaz de trocar
informação com o elemento seguro, conforme podemos ver na figura seguinte:
Figura 13-Arquitectura da tecnologia NFC integrada num telemóvel
Fonte: (Langer, et al.)
35
A ligação física entre o elemento seguro é SWP (GSM Association, 2008), definida pela GSMA.
A tecnologia NFC é muito próxima do RFID. Sendo que o RFID é mais utilizado para
identificação e rastreio de objetos e de pessoas sem ser necessário estar em linha de visão, por
outro lado o NFC é mais orientado para transações mais sofisticadas e seguras. No entanto
ambas as plataformas têm várias camadas e uma conceção do protocolo que é comum.
2.12 Campo RF
Conforme referido nos pontos anteriores, o NFC opera na banda ISM3 de frequência 13,56MHz.
As bandas de frequência ISM não estão licenciadas e estão abertas para todos os fabricantes
de equipamentos rádio desde que se mantenham dentro dos limites da potência a emitir. Isto
significa que a interferência de outros equipamentos tem sempre que ser tida em consideração,
porque não é possível controlar o ambiente.
O transmissor de frequência (fc) é de 13,56MHz e a largura de banda do canal é de
aproximadamente 1MHz. A modulação e as técnicas de codificação definem a velocidade de
transferência dos dados. Um dispositivo ativo gera continuamente um campo rádio para ser
explorado por uma Tag. Um campo não modulado terá que se manter entre 1,5 A/m4 rms5
(Hmin) e os 7,5 A/m rms (Hmax), e irá ser modulado durante a comunicação. Todos os
dispositivos NFCIP-1 enquanto tentam detetar campos RF externos, deverão também detetar
quaisquer campos externos superiores a 0,1875 A/m (Htreshold).
2.13 Fluxo do protocolo ISO 18092
De forma a assegurar uma operação correta, um dispositivo NFCIP-1 terá que seguir
sequencialmente o seguinte conjunto de operações:
• Qualquer dispositivo NFCIP-1 deverá estar por defeito em modo passivo
• Quanto se encontra no modo passivo, não deverá criar qualquer campo RF e deverá
aguardar silenciosamente por um comando por parte do dispositivo iniciador
• O dispositivo NFCIP-1 apenas passa para modo ativo se assim for requerido pela
aplicação
3 ISM – Industrial, Scientific and Medical 4 A/m- Ampère por metro - Unidade que mede o campo magnético, 5 Rms – Root Men Square - valor eficaz é uma medida estatística da magnitude de uma quantidade variável.
36
• A aplicação deverá determinar se a comunicação é em modo ativo ou passivo e qual a
velocidade de transferência
• O iniciador deverá verificar se deteta um campo RF externo e caso detete não deverá
iniciar o seu campo de RF
• Se não detetar qualquer campo RF externo, deverá assim ativar o seu campo RF
• O dispositivo Destinatário deverá ser ativo pelo campo RF do Iniciador;
• A transmissão de um comando pelo Iniciador tanto numa comunicação ativa como
passivo irá ocorrer na velocidade de transferência selecionada
2.13.1 Iniciação de uma ligação
Embora o NFC seja uma tecnologia de curta distância, isso não exclui o risco de colisões.
Pretendo apenas descrever de forma sumária como as colisões são detetadas quando se inicia
uma ligação, não irei aprofundar esquemas de prevenção ou soluções porque não estão dentro
dos objetivos da dissertação.
O NFC possui um protocolo deteta a iniciação de uma ligação e de uma colisão para
comunicações em modo ativo ou passivo. Um iniciador deverá detetar colisões que estejam
ocorrer quando dois ou mais destinatários estão a transmitir um padrão de bits com valores nas
posições dos bits complementares. O diagrama de sequência para inicialização e deteção de
um dispositivo está representado na Figura 14.
37
Figura 14-Fluxo de inicialização de transação NFC e SDD
Fonte: (ECMA, 2003)
Para prevenir interferência com uma comunicação NFC a decorrer ou com outro equipamento
que esteja a usar a mesma frequência, um campo RF deverá não ser criado enquanto se
detetar um outro campo RF. Isto significa que um iniciador deverá procurar continuamente pela
presença de um qualquer campo de RF externo. Se um campo não for detetado dentro de um
período de tempo específico, o iniciador cria o seu próprio campo RF.
38
2.13.2 Seleção de modo de comunicação
Existem três diferentes padrões de comunicação sem contacto e de próximo acoplamento que
operam na frequência 13,56 MHz, ISO/IEC 18092 (NFCIP-1), ISO/IEC 14443 (PCD) e ISO/IEC
156593 (VCD). Apesar de usarem a mesma frequência, todas especificam um modo de
comunicação distinto. Para fazer com um dispositivo NFC possa escolher entre estes modos, foi
criado um novo padrão, ISO/IEC 21481 (NFCIP-2). Este padrão especifica o procedimento de
seleção de um dos 3 modos de comunicação e ao mesmo tempo assegura que não existem
perturbações por qualquer uma das comunicações a decorrer na frequência 13,56MHz. A
Figura 15 apresenta o procedimento de seleção de um dispositivo NFCID-2.
39
Figura 15-Modo de seleção de um dispositivo NFCID-2
Fonte: (ECMA, 2003)
O modo de deteção de um campo RF externo ou a criação do campo RF é igual para o
protocolo ISO/IEC 18092.
40
2.14 Antenas
Normalmente são utilizadas antenas loop nos cartões sem contacto físico, RFID ou NFC. Uma
das razões deve-se à gestão eficiente da antena face ao seu tamanho e à área ocupada, cada
loop tem a forma de quadrado. Como estes protocolos são baseados na indução
eletromagnética das antenas para fornecer energia aos circuitos internos, estas terão que ser o
mais eficiente quanto possível dentro do espaço físico limitado disponível. A eficiência de uma
antena é medida por um fator de Qualidade, ou fator Q. Isto é baseado numa frequência de
ressonância, no número de voltas e na área efetiva. A frequência de ressonância deverá ser da
frequência do transmissor mas não inferior. Embora aumentando o fator Q, o número de voltas
não poderá ser aumentado de forma ilimitada. Terá que existir um ajuste entre a velocidade de
transferência e o raio de alcance, o fator Q é inversamente proporcional à largura de banda de
um circuito de ressonância transmissor/recetor se a frequência de ressonância for constante.
Normalmente as TAGS NFC tem um loop quadrado com cerca de 3cm de lado, cantos
redondos e cerca de 9 voltas. Integrar uma antena no dispositivo móvel é mais complexo do
que um equipamento de rádio, a sua integração terá que ser individual em cada dispositivo para
que tanto a antena GSM como a NFC sejam o mais eficiente quanto possível. Para os
dispositivos que já possuem NFC integrado no ponto de fabrico, a antena é normalmente
integrada no PCB (Printer Circuit Board). A eficiência da antena depende do metal utilizado,
devido ao efeito de refração, e dos restantes componentes do dispositivo que podem interferir
com as comunicações de rádio. A antena deverá ser capaz de gerar um campo eletromagnético
dentro dos limites definidos no ISO/IEC 18092.
41
Capítulo 3 – Cenários de implementação e o seu
desenvolvimento “Problema é o preâmbulo da solução”
(Mestre DeRose)
Este capítulo descreve cenários onde esta tecnologia poderá ser utilizada, enquadrada num
contexto de telecomunicações moveis. Para cada cenário é definido o comportamento esperado
e a experiencia que o utilizador terá.
Estes cenários servem de base para a proposta de desenvolvimento desta dissertação, Smart
Poster.
O desenvolvimento destes cenários poderá depender do suporte fornecido pelos sistemas
operativos móveis, assim serão descritas as principais plataformas que já anunciaram suporte
NFC, ferramentas de desenvolvimento e principais aplicações.
3.1 Cenários de implementação
Conforme descrito no início do documento, o foco de utilização do NFC será nos seguintes
cenários:
1. Arranque de um serviço
o Montras nas lojas com tags NFC nos equipamentos de destaque para que o
cliente possa tocar com um telemóvel NFC e obter informações mais detalhadas
sobre o equipamento exibido. A TAG NFC deverá conter um URL cuja leitura
através do telemóvel NFC deverá fazer com que o browser abra com o URL lido.
o Revistas sobre produtos e serviços Vodafone (Ex: clube Viva; Vodafone Shop)
poderão embeber tags NFC nas suas páginas, com o objetivo de que o cliente
com Telemóvel NFC possa obter diferentes informações consoante o conteúdo da
tag (ver Tabela 6);
o Posters publicitários, distribuídos em indoors ou outdoors, equipados com tags NFC que poderão ser lidas por telemóveis NFC
42
Conteúdo TAG NFC Comportamento telemóvel NFC
URL (ex: para mais detalhes do
equipamento; para loja Vodafone via
Web, por forma a permitir aquisição
do produto consultado)
Abre browser com URL
Número de telefone (ex: número
telemarketing para aquisição de
algum produto; número de apoio a
clientes)
Inicia chamada de voz para o número lido
Texto de SMS e número para envio
(ex: para ativar uma promoção via
SMS)
Cria nova sms de forma automática, com o
texto e número de destino lidos da TAG.
Tabela 6-Exemplos de cenário de Arranque de Serviço
2. Pagamentos Moveis
o Realização de pagamento de faturas
o Carregamento de cartões pré pagos
o Pagamento de compras realizadas nas lojas
3. Configuração de Serviços - OTA Management
o Leitores NFC que permitam identificar qual o telemóvel com NFC através do toque
e enviar procedimentos para configuração automática das ligações de internet,
MMS e SMS
o Instalação automática de aplicações Vodafone
o Configuração de conta de email
o Acesso aos hotspots Wireless Vodafone, configuração automática do acesso
43
4. Rede sociais
o Estabelecer ligação nas redes sociais entre os clientes e a Vodafone
3.2 Plataformas que suportam NFC
Várias plataformas já fornecem suporte para o NFC, com destaque para as seguintes que já
lançaram ou já anunciaram o lançamento de telemóveis suportando esta norma:
• Android
• Samsung Bada
• Symbian ^3
• RIM
A aposta por parte destas plataformas é o passo que o mercado precisava para comprovar que
o NFC é uma tecnologia com grande importância para o futuro, considerando que estas 4
plataformas representam cerca de 79,1% do mercado dos smartphones (Gartner , 2011), o que
vamos assistir é um acompanhamento do suporte por parte das restantes plataformas, tais
como Windows Phone ou IOS da Apple. A Tabela 7 apresenta o último relatório da Gartner
sobre a distribuição do mercado de smartphones pelas diferentes plataformas, especial
destaque para o crescimento o Android que destronou a Nokia e neste momento representa
quase 50% do mercado. (Gartner , 2011)
Tabela 7-Vendas mundiais de smartphones por plataforma no segundo trimestre de 2011 (unidade: milhares) Fonte: Gartner (Agosto de 2011)
44
Os próximos capítulos descrevem de forma sumária estas plataformas, com destaque para o
Android que lançou o primeiro equipamento recentemente, apresenta maior crescimento de
mercado e que apresenta uma estratégia claramente superior aos seus competidores fazendo
parcerias ou aquisições com/de organizações estratégicas. Esta foi a plataforma escolhida para
ao desenvolvimento do protótipo.
A Tabela 8 compila as principais ferramentas de desenvolvimento das plataformas que já
suportam NFC e as respetivas classes. A tabela demonstra que a Linguagem de programação
Java e o IDE Eclipse ou Netbeans são os pontos mais comuns entre plataformas, conseguem
cobrir a plataforma Android, RIM e Nokia. Para plataformas que requerem linguagem em C++,
tal como a Nokia e Samsung, o IDE é proprietário e especifico para cada plataforma.
Plataformas IDE Linguagem SDK API NFC
Android
(Google, 2011)
• Eclipse IDE for Java
Developers (Requer
Plug in ADT)
• Intellij IDEA
Java Android sdk
R12
Android.nfc
RIM • Eclipse IDE for Java
Developers
• NetBeans
Java Blackberry
Java SDK
v7.0 Beta
net.rim.device.api.io.nfc
Nokia Symbian
(Nokia, 2011)
• QT Mobility 1.2 beta
for Symbian
C++ Qt SDK 1.1 Connectivity> NFC
• Carbide.c ++ C++ Symbian^3
SDK 3.0
NFC Services
• NetBeans
• Eclipse
Java Symbian^3
SDK 1.0
JSR 257 Contactless
Communication API 1.0 is
Samsung Bada
(Samsung
Electronics Co,
2011)
• Bada IDE C++ Bada SDK
2.0.1
Osp::Net::Nfc
Tabela 8-Suporte NFC por Plataforma
45
3.2.1 RIM
Empresa Canadiana RIM, conhecida pelos telemóveis Blackberry (Wikipedia, 2011), destaca-se
pelo suporte de email. Foi uma das primeiras empresas a fornecer este serviço, conseguindo
crescer significativamente no mercado empresarial pela sua facilidade de integração com os
servidores de email das empresas.
Recentemente a RIM anunciou o lançamento da versão 7.0 do sistema operativo Blackberry, no
qual inclui o suporte NFC, os primeiros equipamentos serão os modelos 9900 e 9930. (RIM,
2011)
3.2.1.1 Suporte NFC
A Tabela 9 descreve os cenários suportados pela API NFC (Blackberry, 2011) e qual a classe a
utilizar.
Cenários de utilização Classe
Escutar dispositivos NFC na vizinhança NfcTargetDetector
Escutar mensagens NDEF na vizinhança NDEFMessageDetector
Ler Tags NFC NDEFTagConnection.read
Escrever TAG NFC NDEF NDEFTagConnection.write
Simular TAG ou um cartão VirtualNDEFTagCallback
Tabela 9-Suporte NFC Blackberry
3.2.1.2 Aplicações NFC
Estes telemóveis vêm equipados o serviço “tap and go” que permitirá realizar pagamentos
através do telemóvel bem como emparelhar com outros dispositivos Blackberry para troca de
dados.
3.2.2 Nokia
A Nokia é uma multinacional Finlandesa, que se destacou pelos 11 anos de liderança
consecutiva no mercado dos smartphones, através do sistema operativo Symbian mas, nos
últimos 3 anos têm sofrido quedas significativas devido ao IOS da Apple e principalmente
devido ao Android. A Nokia, através da Symbian, continua com um peso de 20% no mercado e
já anunciou mudança de estratégia, com a substituição do sistema operativo Symbian para o
Windows Phone da Microsoft a partir de 2012.
Pioneira na aposta na tecnologia NFC na Serie 40, no entanto apenas serviu para investigação
e experiências uma vez que os equipamentos anunciados não chegaram a ser lançados nas
46
datas previstas e a empresa perdeu o protagonismo dentro da tecnologia. Recentemente
recuperou a aposta na tecnologia, lançando o Nokia C7 com chipset embebido e já anunciou
que todos os equipamentos Nokia com Symbian^3 irão incluir chipset NFC. (Duncan, 2011)
3.2.2.1 Suporte NFC
O NFC para Nokia é suportado por diferentes tecnologias, Qt, Symbian e Java, todas
oferecendo APIs com suporte NFC. As tecnologias Symbian e Qt são as que oferecem mais
funcionalidades e melhores ferramentas de desenvolvimento para os programadores. A Tabela
10 apresenta um quadro resumo das funcionalidades suportadas pelas diferentes APIs de cada
tecnologia.
Tabela 10 - Comparação das funcionalidades suportadas pelas diferentes APIs
Fonte: (Nokia, 2011)
47
3.2.2.2 Principais aplicações
A destacar algumas aplicações lançadas pela Nokia (Jakl, 2011) ou em parceria que visam
explorar a tecnologia NFC com outras áreas com forte impacto no utilizador, tais como os jogos
ou redes sociais.
• Angry Birds Magic: A Nokia lançou uma versão exclusiva do famoso jogo Angry Birds,
da empresa Rovio, pré-instalado no telemóvel Nokia C7 que explora as potencialidades
do NFC. O jogo tem 20 níveis, dos quais apenas 5 estão disponíveis, os restantes 5
estão bloqueados, para desbloquear 5 níveis de cada vez, o utilizador necessita de tocar
com o seu Nokia C7 num telemóvel igual ou em tags NFC especificas.
• Poken: Poken é uma rede social que permite trocar cartões de negócio com um toque
entre dispositivos NFC e que possuam a aplicação instalada.
3.2.3 Samsung Bada
Sistema operativo Bada foi desenvolvido pela Samsung, com o objetivo de cobrir telemóveis
smartphones. Lançado apenas em Fevereiro de 2010, ainda não se conseguiu impor no
mercado de forma significativa, no entanto o lançamento da nova versão da SDK, com suporte
para novas funcionalidades, incluindo o NFC mostram que existe ambição de crescimento no
mercado dos smartphones.
A Samsung anunciou que seriam lançados dois telemóveis com Bada 2.0, que inclui suporte
NFC, até ao final de 2011. (Baladan, 2011)
3.2.3.1 Suporte NFC
Os telemóveis equipados com Bada 2.0 poderão operar nos 3 modos:
• Simular cartão
• Leitura e escrita
• Peer-to-peer
A tecnologia NFC é gerida pela classe Osp::Net::Nfc (Samsung, 2011), as principais
funcionalidades estão descritas na Tabela 11.
48
Cenários de utilização Classe
Gestão do dispositivo NFC NfcManager
Detectar Tag na vizinhança INfcTagDiscoveryEventListener
Escutar mensagens NDEF na vizinhança INdefMessageDiscoveryEventListener
Ligação à tag TagConnection
Manipular dados NDEF NdefMessage
Lançar aplicações com base no registo lido RegisterAppLaunch
Tabela 11-Principais funcionalidades suportadas pela API NFC
3.2.3.2 Principais aplicações
Até ao momento ainda não existem aplicações de destaque anunciadas.
3.2.4 Android
Android consiste em várias camadas de Software para dispositivos móveis, incluindo um
sistema operativo, middleware e vários tipos de aplicações (Wikipedia, 2011). Adquirido pela
Google em 2005, baseia o seu Sistema Operativo numa versão modificada do Kernel Linux.
Este sistema operativo tem tido um crescimento significativo no mercado dos Smartphones,
conseguindo que atualmente seja o lider do mercado (Gartner , 2011). O equipamento utilizado
para esta dissertação, Samsung Nexus S, vem equipamento com sistema operativo Android,
daí que as ferramentas de desenvolvimento sejam as recomendadas pela Google. A camada
de Software consiste em aplicações Java baseadas numa Framework que contém as principais
bibliotecas do Java e que correm na máquina virtual Dalvik (Wikipedia, 2011) com um
compilador JIL (Wikipedia, 2011).
Principais Características (Google):
• Máquina virtual Dalvik otimizada para dispositivos móveis.
• Browser internet integrado baseado no motor open source WebKit.
• Gráficos otimizados e uma biblioteca customizada de gráficos 2D, gráficos 3D baseados
na especificação penGL ES 1.0.
• SQLite para armazenamento das estruturas de dados.
• Suporte formatos áudio, vídeo e imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,
GIF)
• GSM Telephony
49
• Bluetooth, EDGE, 3G, e WiFi
• Câmara, GPS, compass, e acelerómetro
• Ambiente de desenvolvimento poderoso, inclui emulador de terminais, ferramentas de
debugging e plugin para IDE Eclipse.
A SDK Android disponibiliza ferramentas e APIs necessárias para realizar o desenvolvimento
de aplicações para a plataforma Android utilizando linguagem de programação Java.
O pacote android.nfc (Google, 2011) que contém classes de alto nível para interagir com o
adaptador NFC instalado no dispositivo móvel, para representar uma TAG e para utilizar
formato de dados NDEF.
3.2.4.1 IDE
3.2.4.1.1 Eclipse IDE
O Eclipse (Wikipedia, 2011) é um ambiente de desenvolvimento de software em múltiplas
linguagens, compreendendo um ambiente de desenvolvimento integrado (IDE) e extensível à
adição de plugins. A linguagem de programação Java é a mais frequentemente utilizada mas
existe suporte a várias outras opções tais como: ADA, C, C++, Cobol, Pearl, PHP, Python,
Ruby.
A versão considerada para este desenvolvimento foi a “Eclipse IDE for Java Developers”
(Foundation, 2010), plataforma gratuita e a mais utilizada no desenvolvimento de aplicações
para Android, possui Java Virtual Machine.
O desenvolvimento para Android requer o plugin ADT (Google, 2009), este plugin fornece um
conjunto de ferramentas essenciais para o desenvolvimento de projetos para Android,
nomeadamente ferramentas de desenho de interface gráfico, debug, criação do ficheiro de
instalação, entre outras funcionalidades que fazem com o Eclipse seja a ferramenta mais
desejada para o desenvolvimento de aplicações para o Android.
3.2.4.1.2 UI-DroidDraw
Para o desenho da interface gráfica da aplicação Android, foi utilizada a aplicação DroidDraw
que permite desenha a interface gráfica com base num GUI e gerar o código XML que depois é
importado para o projeto criado no Java IDE(DroidDraw, 2011).
50
3.2.4.1.3 Linguagem de Programação Java
Java é uma linguagem de programação desenvolvida pela Sun Microsystems em 1995, que
deriva da sintaxe do C e C++ mas com um modelo de objetivo mais simples e com menos
possibilidades de acesso ao baixo nível. Java é uma linguagem orientada a objetos,
concorrente e baseada em classes que especialmente desenhada para ter implementações
com o menor número de dependências possíveis. O objetivo é que o seu código consiga ser
executado em qualquer máquina virtual, é atualmente das linguagens mais utilizadas para
desenvolver aplicações e para Web. (Wikipedia, 2011)
3.2.4.2 Suporte NFC
A Google disponibilizou o pacote android.nfc (Google, 2011) que possui classes que permitem
interagir com o adaptador local NFC, obter dados das tags encontradas e utilizar os dados no
formato NDEF. A Tabela 12 descreve os cenários suportados pela API NFC(Google, 2011) e
quais as classes a utilizar.
Classe Descrição
NfcManager Identificar adaptador NFC presente no dispositivo
NfcAdapter Representa o adaptador NFC local
NdefMessage Contem a informação que será lida ou transmitida
NdefRecord Representa um tipo de registo, poderá ser um texto, URL,
Smart Poster ou qualquer tipo de dados MIME. Um
NdefMessage pode ter um ou mais NdefRecord
Tag Representa uma tag de destino passiva, pode ser utilizada
para simular um cartão. Para obter a listagem de tecnologias
suportadas por um cartão poderá utilizar o método
getTechList().
Tabela 12-Classes android.nfc
O pacote android.nfc.tech contém classes que permitem identificar o tipo de tecnologias
suportadas por uma tag, por exemplo se é uma tag do tipo 1 ou Mifare. Os principais métodos
estão listados na Tabela 13.
Descrição Métodos
Métodos relativos à ligação à tag:
Connect()
Close()
isConnected()
Estabelece ligação à tag
Fecha ligação à tag
Verifica se a ligação à tag ainda está ativa
51
getTag() Obtêm apontador para tag, sendo possível obter todas as suas
propriedades, nomeadamente a tecnologia
byte[] transceive(byte[] raw) Troca de dados
NdefMessage Contem a informação que será lida ou transmitida
NdefRecord Representa um tipo de registo, poderá ser um texto, URL,
Smart Poster ou qualquer tipo de dados MIME. Um
NdefMessage pode ter um ou mais NdefRecord
Tag Representa uma tag de destino passiva, pode ser utilizada
para simular um cartão. Para obter a listagem de tecnologias
suportadas por um cartão poderá utilizar o método
getTechList().
Tabela 13-Classes android.nfc.tech
As principais limitações das classes atuais prendem-se com a obtenção dos dados NDEF que
apenas pode ser realizada com atividades em foreground em vez de uma gestão de baixo nível
dos registos contidos nas mensagens.
3.2.4.3 Principais aplicações
Anunciado o lançamento do primeiro equipamento com NFC, rapidamente o número de
aplicações disponíveis para Android cresceu significativamente e hoje temos mais de 100
aplicações disponíveis para download no Android Market, com destaque para:
• Google Wallet – Esta é o principal serviço desenvolvido com NFC até ao momento, já
referido anteriormente, este sistema de pagamentos da Google permite que o utilizador
passe a utilizar o seu telemóvel com NFC como um cartão de pagamento. A aplicação
está disponível nos EUA para o Samsung Nexus S, quando o utilizador lança a
aplicação pela primeira vez é questionado para associar o Google Wallet à sua conta
Google, de seguida necessita de inserir os dados do cartão de crédito Citi MasterCard
ou cartão de débito Google. Após as validações necessárias sobre os dados inseridos, o
utilizador poderá pagar as suas compras em lojas que possuam um terminal “PayPass”,
bastando “tocar” no terminal para que o valor seja debitado na sua conta. Em termos de
segurança, o utilizador terá que definir um pin que será pedido cada vez que abrir a
aplicação e poderá ainda definir um limite de valor para pagamentos via Google Wallet.
Os dados do cartão estão encriptados e nunca aparecem visíveis. Sobre o hardware, o
chip NFC que é utilizado, é igual aos utilizados nos passaportes ou cartões de crédito
“tap-to-pay”, o chip auto destrói-se se for tocado fisicamente. (Google, 2011)
52
• Octopus balance reader (Octopus Holdings, 2011): Esta app permite ler o saldo de um
cartão inteligente de pagamentos utilizado no mercado asiático
• NPX Tag Writer (NXP Semiconductors, 2011) – Esta app permite guardar contactos,
URL, SMS, mensagens de texto ou outros tipos de registos URi para tags NFC, ou ler
informação de tags e armazenada no telemóvel podendo lançar aplicações de acordo
com o que está armazenado. Esta aplicação desenvolvida pela NPX Semiconductors
permite ler tags especificadas pelo NFC Forum dos tipos 1,2,3,4, bem como Mifare
Classic/Ultralight e Desire.
• NPC TagInfo (Research Lab Hagenberg, 2011)- Aplicação desenvolvida por um
laboratório de investigação de NFC em Hagenberg, que faz parte da Universidade de
Ciências Aplicadas de Áustria, tem como objetivo obter os detalhes de uma tag,
nomeadamente as especificações técnicas: tecnologias suportadas, tipo de tag,
memoria, blocos, sectores. Obter informação em formação hexadecimal, ASCII ou UTF-
8, ler dados NDEF mas o ponto que a diferencia é a possibilidade de ler dados de um
passaporte eletrónico, nomeadamente a informação básica da pessoa.
• Business Card Holder NFC (AT Solutions, 2011) – Aplicação que permite guardar
informações sobre os cartões-de-visita. O utilizador poderá criar um cartão-de-visita
pessoal e através desta aplicação poderá facilmente partilha-lo via NFC ou SMS. Poderá
receber cartões-de-visita de outros dispositivos NFC que ficam igualmente disponíveis
para partilha (At Solutions, 2011).
3.3 Característica do telemóvel utilizado para a dissertação
Samsung Nexus S
Primeiro equipamento com suporte NFC lançado em Portugal, possui o sistema operativo
Android 2.3 Gingerbread. Considerado equipamento de topo de gama, touch screen, suporta as
tecnologias de comunicação 3G, HSDPA, WIFI e Bluetooth 2.1.
Processador 1GHz Cortex A8 (Hummingbird) e capacidade de memória flash de 16GB iNAND.
3.4 Controlador NFC
O Samsung Nexus S vem equipado com um controlador NFC com referência PN544 (NPX,
2010), um semicondutor desenvolvido pela NXP. As principais características deste controlador:
• Unidade de gestão de energia integrada
• Gestão simultânea de múltiplos cartões (MIFARE, ISO 14443-A,B,B´)
53
• Comunica até uma distância de 10cm
• Integra bateria de pouco consumo para que o cartão se mantenha ativo mesmo quando
o telemóvel está desligado
• Core do processador 80C51 otimizado com firmware embebido;
A Tabela 14 resume a tabela de compatibilidade com os protocolos de comunicação sem fios de
acordo com o tipo de comunicação.
Tipo comunicação Protocolo
Peer-to-peer Full ISO 18092 (up to 424
Kbits/s)
Reader/Writer ISO 14443 – A-B,
MIFARE, FeliCa®, NFC
Forum tags ,
ISO 15693
Card emulation ISO 14443 – A-B-B’,
MIFARE, FeliCa RF
Tabela 14 - Protocolos de comunicações sem fios compatíveis com PN544
Fonte: (NPX, 2010)
Este controlador foi desenhado para ser integrado em dispositivos móveis (telemóveis, PDA,
tablet PC) e permite ser utilizado para pagamentos móveis, aquisição de bilhetes,
emparelhamento via Bluetooth, WIFI ou dispositivo WUSB (Wikipedia, 2011) e para partilha de
objetos.
3.5 Características das tags utilizadas na dissertação
As tags Mifare MF1 IC S50 (NXP, 2008) serão utilizadas para a demonstração, são
desenvolvidas pela NXP. Estas tags foram desenvolvidas de acordo com o protocolo ISO/IEC
14443 Tipo A, sendo normalmente utilizadas para compra de bilhetes, controlo de acessos bem
como para troca de objetos.
54
Possui um sistema inteligente de anti colisão que permite interagir com mais de um cartão no
mesmo campo de frequência em simultâneo. O algoritmo de anti colisão assegura que as
transações são realizadas com os cartões corretos sem risco de dados corrompidos como
resultado da existência de outros cartões no mesmo campo.
Principais características:
• Frequência de transmissão: 13,56 MHz
• Distância de comunicação: entre 2,5cm até 10cm
• Velocidade transferência de dados:106Kbit/s
• Capacidade de memória: 1024 byte EEPROM
• Integridade de dados: 16 sectores, 64 bytes por sector
• Algoritmo de anti colisão
• Duração tipifica de transação: <100ms (incluindo gestão de backup)
EEPROM
• 1Kbyte, organizado em 16 sectores com 4 blocos de 16bytes cada
• Condições de acesso a cada bloco definidas pelo utilizador
• Retenção de dados por 10 anos
• Resistência de escrita de cerca de 100000 ciclos.
Segurança
• Número de série único por dispositivo
• Conjunto individual de 2 chaves por sector para suportar múltiplas aplicações com
hierarquia de chaves
• Autenticação mútua de 3 passos (ISO/IEC DIS 9798-2)
55
Capítulo 4 – Desenvolvimento Smart Poster
“O homem é um animal dócil, que se
habitua a tudo”
(Dostoiésky, Fiódor)
A utilização de serviços baseados em NFC procura ocupar o seu espaço dentro dos ambientes
ocupados pelos clientes Vodafone, sejam espaços públicos ou espaços Vodafone. Com a
utilização de tags NFC consegue-se construir uma infraestrutura de forma simples, pouco
dispendiosa e com uma arquitetura simplificada. Os use cases seguintes focam cenários de
diferentes áreas mas podem partilhar pontos comuns em termos de infraestrutura.
Este capítulo apresenta especificação detalhada de uma aplicação que cobra as necessidades
de uma aplicação para o cenário 1 – Arranque de serviços, considerando a sua abrangência e
aplicação em diferentes áreas tais como comercial, suporte e troubleshooting.
4.1 Serviços NFC numa loja – Informação
As lojas Vodafone são o ponto de contacto com o cliente para informações e principalmente
venda de produtos. O espaço que envolve o cliente é pensado para que o cliente tenha de uma
forma atrativa e simples visibilidade sobre o portfólio disponível na loja. Como imagem de marca
a Vodafone criou áreas de selfcare na lojas que permite ao cliente obter informações de forma
autónoma e experimentar os equipamentos.
O NFC cria uma oportunidade de enriquecer a informação que o cliente pode obter através
destas áreas de selfcare, nomeadamente:
• Obter especificações técnicas ou o manual de um equipamento
• Promover serviços relacionados com o equipamento consultado
• Subscrever serviços (exemplo: pacotes de internet) e promoções
• Download de aplicações Vodafone
• Download de folhetos digitais ou envio por email
56
Principais benefícios:
• Imagem de Inovação
• Consulta de informação sem necessidade de auxilio de um assistente de loja, permitindo
que este fique focado em ações de venda
• Divulgação de serviços e aplicações Vodafone
• Receitas com aquisição de promoções ou serviços
Figura 16-Exemplo de cenários que se podem aplicar a um poster com tag NFC
4.2 Conceitos
Aplicação:
Aplicação de alto nível que inicia quando o telemóvel com NFC lê o conteúdo de uma tag NFC
com um registo NDEF associado a esta aplicação. A aplicação é responsável por ler os dados
da tag NFC e definir o que fazer com estes dados. Por exemplo, a aplicação poderá lançar uma
aplicação instalada no telemóvel ou abrir um portal web com as informações.
57
Tag NFC:
A tag NFC contém uma mensagem NDEF com um ou mais registos NDEF que estão
associados a diferentes aplicações no telemóvel com NFC. O registo NDEF poderá conter
dados ou links para dados. Por exemplo, estes dados podem ser o link para um portal móvel
que apresente o manual do equipamento.
Portal Web Móvel:
Portal web otimizado para telemóvel, iniciado através da aplicação responsável por ler o
conteúdo da tag NFC, caso o conteúdo da tag possua um URL, o browser do telemóvel será
iniciado e irá navegar para o URL gravado na tag.
4.3 Requisitos do sistema
• O utilizador deverá ter uma experiência aplicacional que lhe permita ler diferentes tags e
decidir se pretende executar as ações propostas pela aplicação.
• A aplicação cliente é responsável por ler a tag NFC, identificar as ações definidas no
registo NDEF e apresentar a utilizador as ações associadas para as posteriormente
executar mediante aceitação do utilizador
• A aplicação cliente deverá possuir ligação de dados à internet para poder executar as
ações
• Aplicação cliente deverá identificar os cenários em que a ligação de dados falha e informar
o utilizador, dando-lhe a possibilidade de guardar em cache e executar mais tarde
4.4 Atores
• Clientes Vodafone com terminal que suporte NFC
• Marketing, define a que objetos terão ser atribuídos uma ou várias tags e qual o
comportamento esperado
• Entidade responsável por programar as tags de acordo com os objetos expostos na loja
• Distribuidor das tags pelas lojas
• Recurso da loja responsável por colocar as tags programadas nos respetivos objetos
• Fornecedor de conteúdos, que disponibiliza os conteúdos apresentar na aplicação ou num
portal web otimizado para telemóvel.
58
4.5 Workflow
A Vodafone como responsável pelas lojas define que objetos deverão possuir uma tag
atribuída, bem como qual o comportamento que essa tag deverá despoletar. O objetivo é que o
utilizador se sinta atraído por utilizar a tag para consulta de mais informação ou subscrição de
pacotes.
1. Marketing define que objetos (equipamentos ou serviços) deverão ter uma tag associada
e que tipos de dados NDEF deverão ser guardados na tag
2. Requisitos enviados para entidade responsável por fazer a programação das tags
3. Após a sua programação, o distribuidor deverá garantir a entrega das tags nas lojas
4. Elemento da loja responsável por colocar as tags nos respetivos objetos
O cliente quando entra na loja, terá vários pontos de contacto com tags NFC.
1. Cliente poderá:
a. Consultar expositor com equipamentos da oferta comercial
b. Visualizar Kiosk com diferentes vídeos de serviços Vodafone
c. Consultar posters com informação de promoções
d. Aceder a área que permite realizar download de aplicações Vodafone ou
conteúdos promocionais tais como musicas ou imagens
e. Configuração automática de configurações de acesso à internet, MMS ou acesso
aos hotspots Wireless Vodafone.
2. Cliente “toca” com o dispositivo móvel equipado com NFC na tag
3. Aplicação de leitura de tag NFC deverá estar instalada no dispositivo móvel, irá ler os
dados NDEF e despoletar ação:
Use Case Dados NDEF Acção Pré-
requisito
Implementado
Tag para consulta
de especificações
de um telemóvel
URI (URL) Abre browser e navega para página
www.vodafone.pt com informação
do telemóvel. Página otimizada
para telemóvel.
N/A
Sim
Tag para consulta
do manual do
telemóvel
URI (URL) Invoca browser e navega para o
URL
http://manuaisonline.vodafone.pt
onde será apresentado o manual do
telemóvel
Cartão SIM
Vodafone PT
Sim
59
Tag para consultar
os pontos do Clube
Viva
URI (URN) Abre aplicação Apoio a Cliente se
instalada, caso contrário abre o
portal móvel
http://wap.apoiocliente.vodafone.pt
Cartão SIM
Vodafone PT
Sim
Tag para consulta
de app Vodafone
URI (URL) Leitura de um Webservice que
devolve um XML com a lista de
apps Vodafone compatíveis com
Android e apresenta-a na aplicação.
Utilizador poderá selecionar uma
das apps disponíveis e aceder ao
Android Market para download da
App
Cartão SIM
Vodafone PT
Sim
Tag para download
de conteúdos
promocionais tais
como jogos,
musicas, imagens
URI (URL) Invoca browser e navega para o
URL http://vodafonelive.pt onde
será apresentada lista de
conteúdos para download
Cartão SIM
Vodafone PT
Sim
Tag para
configuração de
definições de
internet ou MMS
SMS Despoleta sms para o 1870 com
texto Internet ou MMS. Utilizador irá
receber sms de resposta com
configurações Over the Air
Cartão SIM
Vodafone PT
Sim
Tag para
configuração do
hotspot Vodafone
Texto+URL Configura o SSID Vodafone e
apresenta página com informações
de como obter uma sessão
N/A Sim
Tabela 15-Acções no seguimento da leitura de Tag
4.6 High Level Design
A Figura 17-High Level Design, mostra os elementos essenciais que garantem que a uma ação
do utilizador existe uma resposta adequada, em termos aplicacionais e de infraestrutura de
rede.
A aplicação cliente estará instalada no telemóvel e garante que no momento de aproximação do
telemóvel a uma tag compatível com o leitor os seus valores são lidos. Estes valores são
interpretados pela aplicação e em função do tipo de valor é despoletada uma ação. Na maioria
dos casos, uma ação implica ligação à rede GSM. Por exemplo: Envio de SMS, realização de
uma chamada, navegar para um URL.
60
O backend Vodafone garante que nos casos em que ação implica navegar para um URL, que é
realizada uma contextualização do pedido e a fornecida resposta ao utilizador.
Figura 17-High Level Design
A secção Desenho “NFC Master” apresenta informação mais detalhada.
61
4.7 Arquitetura do cliente
Figura 18-Arquitectura Cliente
Elementos Core:
• NfcManager - Gestor de alto nível, utilizada para obter o adaptador NFC dos
dispositivos;
• NfcAdapter - Representa o adaptador NFC dos dispositivos, que serão o ponto de
entrada para executar operações NFC.
• NdefMessage - Representa os dados NDEF de uma mensagem. Este é o formato de
standard para transmissão de dados entre dispositivos e tags.
• NdefRecord - Representa um registo, que é entregue numa mensagem NDEF e
descreve o tipo de dados que está a ser transferido e também transporta os dados.
• MCC/MNC (Wikipedia, 2011) Manager - Gere o Pais e operador ao qual o utilizador está
registado, poderá ter implicações no tipo de informação a prestar. MCC – Mobile
Country Code ; MNC- Mobile Network Code. O código MCC de Portugal é 268 e o
código do operador Vodafone Portugal é 01
• Ligações - Elemento responsável por identificar o tipo de rede utilizado para a ligação de
dados, GPRS/3G ou Wifi, poderá ter implicações no tipo de informação a prestar.
App NFC Master Vodafone
Pacotes extra Core
Navegação Reports
Optout UE
Triggers dos conteúdos Marketing
NfcManager NdefMessage
NfcAdapter NdefRecord
MCC/MNC Manager Ligações
62
Os primeiros 4 elementos correspondem a Classes (Google, 2011) NFC suportadas pela SDK
Android.
Pacotes Extra:
• Navegação - Elemento responsável por definir a navegação entre os elementos gráficos
da aplicação.
• Reports - Cria logs da utilização da aplicação, incluindo erros e partilha com servidor.
Requer consentimento do cliente.
• Optout - Representa a possibilidade do utilizador desativar a utilização da aplicação na
leitura de dados NFC.
• UE - Gere o interface gráfico e interação do utilizador com a aplicação.
• Triggers de conteúdos - Define as ações de acordo com o tipo de dados.
• Marketing - Gere mensagens de marketing que poderão aparecer na aplicação como
banner ou rodapé durante a utilização da aplicação.
Os pacotes extra constituem uma necessidade para uma aplicação final de produção, no
entanto para este protótipo apenas foram considerados: Navegação; UE e Triggers de
Conteúdos.
4.8 Desenho “NFC Master”
O protótipo desenvolvido, demonstra a experiência do utilizador sobre o cenário arranque de
serviços.
A aplicação foca em dois pontos:
• Leitura de Tag e arranque de serviços de acordo com os registos NDEF gravados na
Tag
• Apresentação de dados técnicos sobre a tag, nomeadamente:
o Tecnologias suportadas
o Identificadores
o HashCode
o Tamanho
o Se permite escrita
63
o Se permite leitura apenas
o MifareClassic
� Número de sectores
� Número de blocos
� Tamanho
� Registos gravados em cada bloco em diferentes formatos (Hexadecimal,
UTF8, ASCII)
A Figura 19 - Use Cases, apresenta os Use cases desenvolvidos.
Figura 19 - Use Cases
4.8.1 Fluxograma
Nesta seção é analisado o fluxograma da aplicação para uma melhor compreensão do
relacionamento entre as diversas funcionalidades e a experiência gráfica. Este fluxo é essencial
para garantir que o desenvolvimento do código é realizado de acordo com as necessidades e
expectativas do utilizador. A Figura 24 – Layout ler tag, apresenta em alto nível o fluxo da
aplicação, tendo como atores, o utilizador, o telemóvel, a aplicação NFC Master e os elementos
externos rede GSM e Internet.
O telemóvel foi incluído como ator para representar os eventos que são lançados pela aplicação
e são interpretados pelo sistema operativo do telemóvel para executar as ações pretendidas.
64
Fluxo da aplicação
Telemóvel InternetAplicação NFC
MasterUtilizador Rede GSM
Toca com
equipamento
numa tag
Abre aplicação
NFC Master
Identifica TAG
compativel
Lança lista de
aplicações que
podem ser utilizadas
para ler a TAG
Selecciona
outra
aplicaçãoFim
Lê Tag
Identifica registos
NDEF e acção a
executar
Escreve na página
principal
Processa dados
obtidos para
apresentar output
ao utilizador
Apresenta caixa de alerta
com registo NDEF lido e
requer confirmação do
utilizar se quer executar
acção sobre esses dados
Aceita executar
acção?
Caixa com
informação do
conteudo obtido
obtido
Registo URL.
Lança evento de
browser.
Registo Ndef é
Texto?
Registo contacto.
Lança evento de
chamada
Registo SMS
Lança evento de
SMS
Abre browser
e navega para
o URL obtido
Realiza
chamada de
voz
Envia SMS
Página principal
disponivel para
consultar restantes
dados obtidos
Sim
Não
Sim
Não
Fim
Fim
Fim
Não
Figura 20- Fluxograma
65
4.8.2 Diagrama de classes
O desenvolvimento foi realizado em Java, por conseguinte está estruturado em pacotes que
contém várias classes.
A Figura 21-Diagrama de Classes, apresenta uma visão geral das classes utilizadas e as
operações executadas. Existem 3 classes principais: TagDetail, ScanTag e
MifareRecord. Estas classes serão destacadas no capítulo 4.8.3
Tal como o diagrama mostra, estas classes estendem a classe Activity (Google, 2011)
desenvolvida para o sistema operativo Android. Antes de descrever as classes, é importante
perceber o conceito de Activity e a forma como o sistema operativo Android as gere.
As classes Activity permitem que o utilizador visualize e consiga interagir com uma interface
gráfica de uma aplicação. Esta classe garante a execução de todas as atividades, desde a
criação da página, interação com outras classes para tratamento dos lados de input/output,
gestão do ciclo de vida da atividade ou mesmo terminar a sua execução.
Uma atividade pode ter 4 estados:
• Se uma atividade está no ecrã do telemóvel em modo foreground, significa que está
ativa ou em execução.
• Se uma atividade perdeu o foco mas contínua visível, fica no estado paused. Uma
atividade neste estado continua disponível até que exista novamente interação. Por
exemplo, a atividade ScanTag deteta sempre que uma tag está dentro do campo de
radio frequência, caso não detete atividade fica em modo pause, mas mantem-se pronta
para identificar novas tags e realizar as ações normalmente.
• Se uma atividade foi obscurecida por outra atividade, o estado passa a ser stopped, o
utilizador deixa de ver a página da aplicação mas esta pode ser recuperada mantendo o
mesmo estado que tinha antes de passar para stopped. Exemplo: A atividade lê a tag e
identifica que existe um tipo de registo NDEF que é um URL. A aplicação irá questionar
o utilizador se pretende navegar para esse URL, caso o utilizador aceite, o browser será
aberto com o URL lido. Nesse momento a aplicação deixou de estar visível para o
utilizador, passando para o estado Stopped. Caso o utilizador recorra à funcionalidade
de multitarefa do Android, poderá recuperar a aplicação e ficará ativa no mesmo estado
que estava antes de abrir o browser.
66
• Se uma atividade estiver no estado paused ou stopped, o sistema operativo poderá
eliminar a atividade de memória ou o próprio utilizador poderá forçar a paragem da
atividade
A classe TagDetail estende da classe TabActivity, a principal diferença com a classe
Activity, é que permite mais do que uma página visível para o utilizador, numa estrutura de
janelas, sem que seja necessário criar múltiplas atividades para casa páginas. Foi pertinente a
sua utilização para apresentar informação genérica sobre as características da TAG.
67
Figura 21-Diagrama de Classes
68
4.8.3 Descrição das classes
Neste tópico é apresentada uma descrição sumária sobre as classes utilizadas e os principais
métodos. A Figura 22-Fluxo das classes, descreve a forma como as classes se relacionam
durante a execução da aplicação.
Figura 22-Fluxo das classes
69
Para execução de algumas das ações apresentadas na figura anterior, tal como realizar uma
chamada, abrir um browser, enviar sms, abrir menu de definições, ler tags NFC, implica que a
aplicação declare essas permissões. As aplicações Android têm como característica um ficheiro
“AndroidManifest.xml” que contém as propriedades principais da aplicação e das suas
atividades. Neste ficheiro terão que ser definidas as permissões de acesso a elementos nativos
do sistema operativo, aos quais a aplicação deverá ter acesso. As permissões declaradas
foram:
• android.permission.INTERNET – Permite lançar o browser internet
• android.permission.NFC – Ler tags NFC
• android.permission.CALL_PHONE – Realizar chamadas de voz
• android.permission.SEND_SMS – Enviar SMS
• android.permission.ACCESS_NETWORK_STATE- Aceder ao estado de rede,
exemplo: se tem cobertura ou se está em modo de voo.
• android.hardware.nfc – Aceder ao adaptador físico NFC
• android.permission.WRITE_SMS – Escrever SMS
4.8.3.1 Classe ScanTag
Esta classe tem como objetivo detetar tags compatíveis com um grupo de tecnologias definidas,
ler o seu conteúdo, nomeadamente os dados num formato Ndef e Mifare Classic. A classe
ScanTag estende a classe Activity e poderá ser considerada como a classe principal da
aplicação.
A classe ScanTag está configurada com propriedades que garantem que possa escutar tags no
seu campo de frequência desde que suportadas pelo sistema operativo Android. As tags terão
que suportar protocolos:
• NDEF
• MifareClassic
• Nfca
Esta é a primeira classe a executar quando a aplicação abre. Poderá ser iniciada quando o
utilizador prime no icon da aplicação disponível no menu do telemóvel, ou quando o telemóvel
reconhece uma tag no raio de radio frequência e identifica esta aplicação como válida para ler
70
os dados da tag. No segundo caso, o utilizador será notificado que foi identificada uma tag e
terá uma lista de aplicações que suportam a sua leitura, sendo necessário que opte por uma
dessas aplicações.
Caso a aplicação seja iniciada pelo utilizador através do icon, a classe começa por abrir uma
página que pede ao utilizador para aproximar o telemóvel de uma tag. Enquanto não identificar
uma tag dentro da lista de tecnologias definidas ou com dados NDEF mantém em estado
pause, mas sempre que o sistema operativo deteta uma nova tag lança o evento para a
aplicação que volta a fazer as validações iniciais.
Quando deteta uma tag compatível, notifica o utilizador com uma caixa de progresso e cria uma
nova thread para ler os dados da tag. Começa por ler dados principais sobre a tag,
nomeadamente:
• Identificador da TAG
• Código Hash
• Lista de tecnologias suportadas
Para obter os dados no formato NDEF, cria-se um objeto do tipo Ndef que estabelece uma
ligação à TAG através do protocolo LLCP para realizar a partilha de mensagem entre a tag e o
telemóvel. Caso a ligação tenha sucesso, o objeto Ndef armazena os dados permitindo assim o
seu tratamento. Os dados que estão a ser obtidos para esta aplicação são:
• Mensagens NDEF guardadas na TAG
• Tecnologia
• Código Hash
• Capacidade de memória para registos NDEF em bytes
• Se pode suportar apenas de leitura
• Se pode ser rescrita
Após obter todos os dados, a ligação é encerrada para obter as propriedades MifareClassic.
Apena é possível uma ligação de cada vez.
O acesso às propriedades Mifare Classic é realizado após realizar uma ligação com o protocolo
LLCP de um objeto MifareClassic. Os dados obtidos foram:
• Nome da tecnologia
71
• Identificador
• Código Hash
• Capacidade de memória da TAG em bytes
• Número de sectores
Para acesso a dados dos setores da tag MifareClassic é necessário realizar autenticação por
sector, só após autenticação com sucesso é possível ler e escrever. Cada sector possui duas
chaves e só após a autenticação é possível saber que operações de leitura e escrita são
possíveis de realizar em cada setor.
As tags utilizadas mantiveram a sua autenticação original, assim foram utilizadas as chaves
públicas dependendo do tipo de formação da tag. Existem 3 tipos de autenticações públicas:
• Chave de fábrica, utilizada por defeito nas tags MifareClassic
• Chaves NFC FORUM, caso as tags tenham sido formatadas de acordo com a
especificação NXP para dados NDEF em cartões MifareClassic
• Chaves de uma lista conhecida para tags formatadas de acordo com as especificações
Mifare Aplication Directory
Cada setor poderá ser autenticado com chaves privadas, passando a estar acessíveis apenas a
quem conhece as chaves.
Após autenticação com sucesso, são obtidos os dados de cada setor em formato byte e são
convertidos em 3 diferentes formatos, para que os valores sejam possíveis de serem
interpretados:
• Hexadecimal
• UTF8
• ASCII
Quando completada a sua leitura, a atividade cria um Bundle de dados com um objeto do tipo
TagItem que tem como função guardar todos os dados lidos da tag, descritos anteriormente, e
garantir a sua partilha para diferentes atividades.
Antes de finalizar a thread e fechar a barra de progresso, a classe ScanTag lança uma nova
classe, TagDetail passando-lhe como parâmetro o Bundle de dados da classe TagItem, para
que a informação seja tratada e apresentada ao utilizador.
72
4.8.3.2 Classe ScanTag
A classe TagDetail, estende da classe TabActivity e tem como principal função interpretar
os dados lidos da tag e apresentar ao utilizador.
Esta classe recebe como parâmetro um Bundle de dados que representa um objeto da classe
TagItem. Este objeto contém toda informação sobre os dados NDEF e as propriedades dos
setores MifareClassic.
Sendo uma classe TabActivity, significa que irá criar uma vista que suporta múltiplas
páginas integradas num conceito de tabs, tal como nos browsers de internet para facilitar a
transição em diferentes páginas. No arranque da classe, são criados todos os elementos
gráficos necessários para apresentar informação.
Destaco 4 operações principais: populateTagInfo, populateTagNdef,
populateTagMifare e performIntent.
Após criar os elementos gráficos, executa a operação populateTagInfo que tem como
objetivo escrever na primeira tab informação genérica sobre a tag.
A operação populateTagNdef tem como função, interpretar as mensagens no formato NDEF
e apresentar informação ao utilizador na tab 2.
Para interpretar as mensagens guardadas, é utilizada a classe NdefMessageParser. Esta
classe percorre a lista de registos de cada mensagem e verifica o tipo de cada um. Os registos
poderão ser do tipo:
• Texto
• URI
• Smartposter
Para validar o tipo de registo, são invocadas as classes UriRecord, TextRecord e
SmartPoster.
A Class UriRecord, verifica qual o tipo de dados NDEF que é recebido no header. Se o campo
TNF tiver como valor 0x01, é um registo que está de acordo com a especificação do NFC
FORUM mas é necessário transformar o registo no tipo URI.
73
Se o campo TNF tiver o valor 0x03, já possui um formato URI completo o que facilita a sua
interpretação.
Qualquer outro código TNF não é tratado por esta classe porque não ser um tipo de dados URI
especificado pelo NFC Forum.
A classe TextRecord, valida se o registo é do tipo RTD.TEXT e obtém o seu conteúdo através
da leitura do payload, que para além do texto, tem posições reservadas para informar o tipo de
encoding do texto e o código da linguagem.
A classe Smartposter, poderá devolver registos compostos, por exemplo um Titulo + um registo
URI + ação recomendava a realizar com estes registos. Por exemplo:
• Titulo: “Suporte ISEP”
• URI: “www.isep.pt”
• Ação recomendada: Guardar como favorito
Para tratamento dos dados URI, esta classe recorre à classe UriRecord.
As classes UriRecord, Smarposter, TextRecord e NdefMessageParser são reutilizadas
do , do exemplo fornecido no site Android Developers (Google, 2011), realizeialterações, para
criar a possibilidade de devolver o URI sem a utilizar a lista da classe ParsedNdefRecord e
para devolver o tipo de dados..
Estas classes garantem a conversão dos registos NDEF num formato a apresentar ao utilizador.
Os dados obtidos são apresentados na tab 2, com destaque para o conteúdo do registo NDEF.
O utilizador poderá invocar uma ação caso o tipo de registo seja URI:
• URL – Utilizador poderá visualizar o URL. Ao premir sobre o URL, irá ser questionado se
pretende abrir o browser e navegar para a página selecionada.
• Contacto – Utilizador visualiza o número. Ao premir sobre o número irá ser questionado
se pretende realizar uma chamada para o número selecionado
• SMS – Utilizador visualiza o número e corpo da mensagem. Ao premir sobre o número
irá ser questionado se pretende realizar uma chamada para o número selecionado
A operação populateTagMifare, disponibiliza para consulta na tab 3 os campos lidos na
classe ScanTag, esta informação já é recebida tratada da classe referida.
74
A operação performIntent, garante que a primeira informação que o utilizador visualiza é o
conteúdo do registo NDEF e qual a ação que poderá realizar. Os cenários são iguais aos
descritos na operação populateTagNdef quando o utilizador prime sobre o conteúdo do
registo Ndef.
Na tab 3 o utilizador poderá consultar as propriedades MifareClassic, terá ainda disponíveis 3
botões que permitem obter o conteúdo de cada setor nos seguintes formatos:
• Hexadecimal
• UTF8
• ASCII
Ao executar qualquer um destes botões, irá iniciar a atividade MifareRecord e passará como
parâmetro o Bundle que contém os registos originalmente obtidos na classe ScanTag e qual o
tipo de formato no qual deverá ser apresentada a informação dos setores.
4.8.3.3 Classe MifareRecord
A classe MifareRecord tem como função apresentar os dados dos setores MifareClassic no
formato escolhido pelo utilizador. Será apresentada uma lista com informação separada por
setor e bloco. As tags MifareClassic possuem 16 setores e 64 blocos.
4.8.4 User Experience
Este tópico apresenta qual a experiência do utilizador, com exemplos de ecrã e informação
sobre a construção seguida em cada atividade. De uma forma geral as páginas são construídas
essencialmente com campos output, as ações de input apenas se aplicam quando o utilizar terá
que decidir a ação a dar ao registos NDEF ou se pretender consultar informação dos setores do
MifareClassic.
A informação tratada e apresentada é mais do que um utilizador comum precisa de visualizar,
no entanto a sua utilização foi pertinente neste protótipo para melhor conhecer a tecnologia.
Os tópicos seguintes apresentam imagens das páginas e layout android. Esta informação é
complementar ao capítulo anterior sobre a descrição das classes.
4.8.4.1 Abrir aplicação
O utilizador após instalar a aplicação poderá abri-la de duas formas:
• Prime no icon NFC Master no menu do telemóvel
75
• Quando tocar com telemóvel numa Tag, o sistema operativo Android abre uma lista de
aplicações que podem ler a TAG, a aplicação NFC Master deverá estar nessa lista e ser
selecionada.
Figura 23 - Abrir Aplicação
4.8.4.2 Ler tag
A função “ler tag” é executada pela classe ScanTab, a Figura 24 – Layout ler tag, mostra os
elementos gráficos utilizados para a construção da página de leitura.
Figura 24 – Layout ler tag
76
Figura 25 - Leitura da tag
A Figura da esquerda é a página inicial da aplicação, aguarda pela aproximação de uma tag, a
figura da direita significa que identificou uma tag e está a ler os dados.
4.8.4.3 Apresentar informação
Após concluir a leitura da tag, a informação é apresentada ao utilizador. A primeira interação é
com uma caixa de texto que informa o conteúdo dos dados NDEF e caso os dados tenham
ação associada, pergunta ao utilizar se a quer executar. Quer execute a ação ou não, poderá
consultar os restantes dados sobre a tag.
A Figura 26 - Layout informação da tag, apresenta os elementos que compõe a parte gráfica.
77
Figura 26 - Layout informação da tag
A Figura 27 - Apresentação do conteúdo e ação da tag, mostra o primeiro ecrã com o tipo de
dados identificados e questiona por ação, neste caso identificou o URL de um serviço Vodafone
e a sua ação faz com que arranque o browser.
78
Figura 27 - Apresentação do conteúdo e ação da tag
A Figura 28 - Tabs com conteúdo da Tag, apresenta a tabhost na qual o utilizador poderá
consultar as 3 tabs disponíveis com dados sobre a tag, ndef e mifare respetivamente.
Se utilizar pretender voltar a ler uma tag, poderá premir no botão “Scan new tag” para voltar
para a atividade ScanTag.
Figura 28 - Tabs com conteúdo da Tag
79
4.8.4.4 Setores MifareClassic
Os setores MifareClassic podem ser consultados no formato Hexadecimal, UTF8 e ASCII. A
Figura 29-Layout setores MifareClassic apresenta os elementos gráficos que compõe a página.
Figura 29-Layout setores MifareClassic
A Figura 30-Setores mifare Classic, mostra o conteúdo dos setores MifareClassic, organizado
por setor e bloco.
Figura 30-Setores mifare Classic
4.8.5 Testes
Para a realização de testes, foram utilizados como principais equipamentos:
• Samsung Nexus S como ler e escrever tags
80
• Tags MifareClassic 1k
Para informações mais detalhadas consultar capítulos 3.3,3.4 e 3.5.
Para assegurar o correto funcionamento da aplicação foram realizados testes com diferentes
tipos de formatos de dados. Para tal foram preparadas 5 tags, em cada uma foram escritos
dados diferentes, os cenários obtidos foram:
• Tag com texto simples
• Tag com URL
• Tag com dados Smartposter
• Tag com Contacto
• Tag com dados para envio de sms, número e corpo da mensagem
Para escrever estas informações na tag, foi utilizada aplicação TagWriter, desenvolvida pela
NXP Semiconductors.
Os tempos de leitura das tags, independentemente do seu conteúdo, variavam entre 2,8seg e
3,2seg. Não foram estabelecidas comparações com outras aplicações por motivo que o
objectivo não era desenvolver uma aplicação de produção mas sim de demonstração.Os casos
de uso são diferentes, bem como o tipo de dados apresentar.
81
Capítulo 5 – Conclusões e trabalho futuro “"Os homens muitas vezes se tornam o que
eles acreditam ser. Se eu acredito que eu
não posso fazer algo, faz-me incapaz de
fazê-lo. Mas quando eu acredito que eu
posso, então eu adquiro a capacidade de
fazê-lo, mesmo se eu não a tenho no
começo.”
(Gandhi, Mahatma)
Em resumo, o NFC é uma tecnologia promissora e muito eficiente para comunicações de curto
alcance. Oferece uma forma simples e intuitiva de transferir dados entre dispositivos eletrónicos
e adiciona mais-valias nas atividades que realizamos no dia-a-dia através do telemóvel.
Em fase de crescimento no B2C e B2B, o NFC revela-se como uma tecnologia que acelera a
ubiquidade computacional. Tecnologia baseada no RFID que inicialmente estava focada em
pontos fixos evoluiu para ser orientada para a mobilidade.
Num mundo cada vez mais móvel, a integração destas tecnologias com o telemóvel é uma
obrigatoriedade, passamos a ter um dispositivo que faz a ponte para outros serviços e para
mais informações.
A tecnologia NFC, revela-se finalmente uma certeza e consensual entre os grupos de
associações de telecomunicações, operadores e fabricantes. A integração em telemóveis
deverá ter em 2011 como o ano que marca a viragem, a Google lançou o Samsung Nexus S
Android 2.3 com um chipset NFC, confirmando a aposta na tecnologia. Considerando o
crescimento da plataforma Android e o suporte para programadores, é seguramente o impulso
que o mercado Europeu e Americano precisa para avançar.
Ao longo destes dois anos a acompanhar a tecnologia, pude assistir a muitas expectativas
defraudadas devido as interrogações dos principais grupos tecnológicos, o que levou a atraso e
cancelamento do lançamento de telemóveis. Este é um momento de realidade, os fabricantes
anunciam novos equipamentos, como o exemplo da RIM (Clark, 2011) ou da Nokia (Clark,
2011). As plataformas trabalham para criar o melhor ambiente para os programadores e
investem em SDKs (Clark, 2011). Estes dois fatores mostram uma nova dinamica do mercado
em adoptar a tecnologia NFC, transformando-a numa realidade para os utilizadores.
82
Claramente que a grande aposta será na área dos pagamentos, possibilitando a utilização dos
telemóveis para realizar estas operações em alternativa aos cartões de débito/crédito. As
movimentações dos grandes intervenientes do mercado orientam os estudos, discussões e
experiencias nessa área de negócio, com destaque para a Visa, Vodafone e Google.
Recentemente a Google adquiriu a Motorola Mobility com o objetivo de focar o seu
desenvolvimento no Google Wallet, que permite realizar pagamentos via telemóvel. A confirmar
o rumo destas movimentações temos os dados do mercado Japonês que está cerca de 3 anos
mais avançado que o Europeu/Americano, por exemplo cerca de 10% dos consumidores
Japoneses utilizaram o telemóvel equipado com NFC para pagamento de compras durante o
mês de Dezembro de 2010.
Embora o standard e o interface estejam aprovados, existe um caminho a percorrer para
garantir uma tecnologia segura. A área de pagamento é a que revela mais preocupações,
principalmente com o risco de captura da informação trocada entre o telemóvel e o leitor. No
entanto é a área que apresenta maiores avanços, vários operadores de telecomunicações
estão em fase experimental da tecnologia, o que significa que dentro de pouco tempo esta
tecnologia passara a fazer parte do nosso quotidiano.
Nesta dissertação foram identificados e avaliados os principais cenários de utilização numa
relação B2C no mercado das telecomunicações móveis. Foram especificados diversos cenários
enquadrados na realidade Vodafone, fundamentalmente na área dos Smart Poster . Esta área
irá fazer com que o cliente consiga aceder a mais informações de produtos, serviços ou
promoções através da leitura de Tags em revistas ou outdoors, fazendo a ponte com outras
aplicações Vodafone. Pretende-se garantir o acesso a mais informação em qualquer lugar e
facilitar o dia-a-dia dos clientes, fazendo com que o telemóvel seja parte integrante do seu
quotidiano.
A aplicação desenvolvida no âmbito da dissertação, demonstra a facilidade de utilização da
tecnologia por parte do utilizador, o que representa uma mais-valia para uma adoção e
crescimento mais rápido da tecnologia no mercado. Para navegar para um url, realizar uma
chamada ou enviar um sms poderá não necessitar de tocar em qualquer tecla ou no ecrã do
telemóvel, permitindo que facilmente obtenha informação sobre objetos com o mínimo de
esforço.
O desenvolvimento focou-se na leitura de dados que são comuns para o utilizador, tais como
um contacto ou um URL. Estes dados são apresentados ao utililizador, bem como a
83
possibilidade de executar acções sobre eles, por exemplo abrir o browser de internet e navegar
para o URL lido.
O desenvolvimento de uma aplicação sobre NFC para Android apresenta alguma
complexidade, principalmente devido ao facto de ser uma tecnologia recente e existir pouca
documentação de desenvolvimento sobre o assunto. De realçar a total ausência do tema nos
principais manuais sobre desenvolvimento em Android. Neste ponto a informação fornecida
pela Google no site para programadores Android é a fonte de informação com melhor qualidade
de informação. Identifiquei como principal complexidade a gestão do ciclo de vida das
actividades. Importante garantir que a transição entre estados pause para ativo é realizada
correctamente e que durante a executação da aplicação esta não sofre interferências de outras
aplicações concorrentes à leitura da tag.
Como trabalho futuro, pretende-se utilizar o protótipo para demonstração dos cenários descritos
na dissertação mas num contexto real, com clientes finais, de forma a perceber as suas
expectativas, identificar novos cenários e especificar uma solução final de produção. Esta
versão de testes deverá evoluir com novas funcionalidades, tal como escrita de tags, emular um
cartão e implementação de mecanismos de autenticação.
Considero igualmente importante relacionar a tecnologia NFC com o conceito de Acessibilidade,
tornado-a acessível a pessoas com deficiência. Por exemplo: Cliente invisual poderá tocar em
objetos equipados com tag NFC, através do telemóvel equipado com uma aplicação que será
capaz de ler informação do objeto e transformar o texto em voz, tornado-a acessível ao invisual.
Este cenário poderá aplicar-se num supermercado, museu, transportes públicos, entre outros.
Será uma forma de posicionar a tecnologia como um benefício para todo o tipo de utilizadores.
84
Bibliografia admob AdMob Mobile Metrics Report [Online] // admob. - 01 de 2010. - 01 de 05 de 2011. -
http://metrics.admob.com/wp-content/uploads/2010/02/AdMob-Mobile-Metrics-Jan-10.pdf.
AIM What is RFID? [Online] // Association for Automation Identification and Mobility. - 2011. - 06
de 10 de 2011. - http://www.aimglobal.org/technologies/rfid/what_is_rfid.asp.
At Solutions Business Card Holder With NFC [Online] // Android Market. - 09 de 06 de 2011. -
18 de 09 de 2011. - https://market.android.com/details?id=kr.co.atsolution.android.nbc.
AT Solutions Mobile Technology Solutions [Online] // At Solutions. - 09 de 06 de 2011. - 18 de
09 de 2011. - http://www.atsolution.co.kr/.
ATMEL Understanding the Requirements of ISO/IEC 14443 for Type B Proximity Contactless
Identification cards [Online] // ATMEL. - 11 de 205. - 01 de 06 de 2011. -
http://www.atmel.com/dyn/resources/prod_documents/doc2056.pdf.
Baladan Dan Google Chief Eric Schmidt Endorses NFC [Online] // NFC Times. - 17 de 11 de
2010. - 01 de 06 de 2011. - http://www.nfctimes.com/news/google-chief-schmidt-endorses-nfc.
Baladan Dan Samsung Announces Two NFC-Optional Smartphones Supporting Bada
[Online] // NFC Times. - 30 de 08 de 2011. - 05 de 09 de 2011. -
http://www.nfctimes.com/news/samsung-announces-two-nfc-optional-smartphones-supporting-
bada.
Battezzati’s Luigi RFID as an enabler of the ubiquitous [Online]. - 2005. - 01 de 02 de 2010. -
http://www.itu.int/osg/spu/ni/ubiquitous/Presentations/5_battezzati_RFID.pdf.
Blackberry Blackberry Java Application development SDK 7.0 [Online] // Blackberry
Developers. - 2011. - 01 de 09 de 2011. - http://www.blackberry.com/developers/docs/7.0.0api/.
Cisco Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update, 2010–2015
[Online] // Cisco. - 01 de 02 de 2011. - 06 de 10 de 2011. -
http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_
c11-520862.html.
85
Clark Sarah Nokia: Symbian NFC phones to support mobile payments in 2012 [Online] // Near
Field Communications World. - 29 de 08 de 2011. - 29 de 08 de 2011. -
http://www.nfcworld.com/2011/08/29/39462/nokia-symbian-nfc-phones-to-support-mobile-
payments-in-2012/.
Clark Sarah NTT Docomo adds NFC tag reading to wide range of mobile phones [Online] //
NFC World. - 11 de 11 de 2010. - 29 de 08 de 2011. -
http://www.nfcworld.com/2010/11/11/34943/ntt-docomo-adds-nfc-tag-reading-to-wide-range-of-
mobile-phones/.
Clark Sarah Over 1bn consumers to use mobile banking services by 2015 [Online] // NFC
WORLD. - 06 de 02 de 2010. - 01 de 06 de 2011. -
http://www.nfcworld.com/2010/02/16/32800/over-1bn-consumers-to-use-mobile-banking-
services-by-2015/.
Clark Sarah RIM unveils three BlackBerry Curve NFC smartphones [Online] // Near Field
Communications World. - 23 de 08 de 2011. - 30 de 08 de 2011. -
http://www.nfcworld.com/2011/08/23/39303/rim-unveils-three-blackberry-curve-nfc-
smartphones/.
Clark Sarah Samsung launches Bada 2.0 SDK with NFC [Online] // Near Field Communication
Wordl. - 26 de 08 de 2011. - 29 de 08 de 2011. -
http://www.nfcworld.com/2011/08/26/39385/samsung-launches-bada-2-0-sdk-with-nfc/.
Clark Sarah Transports and mobile operators begin pilot in Lisbon [Online] // Near Field
Communications World. - 08 de 10 de 2009. - 12 de 11 de 2010. -
http://www.nfcworld.com/2009/10/08/31908/transport-and-mobile-operators-begin-nfc-pilot-in-
lisbon/.
DroidDraw DroidDraw [Online] // DroidDraw. - DroidDraw, 2011. - 10 de April de 2011. -
http://www.droiddraw.org/.
Duncan Geoff Nokia bringing NFC to all Symbian phones [Online] // Digital Trends. - 31 de 08
de 2011. - 03 de 09 de 2011. - http://www.digitaltrends.com/mobile/nokia-bringing-nfc-to-all-
symbian-phones/.
86
ECMA Internacional Standard ECMA-352 [Online] // ECMA Internacional Standards. - 06 de
2010. - 01 de 03 de 2011. - http://www.ecma-international.org/publications/standards/Ecma-
352.htm.
ECMA Near Field Communication Interface and Protocol -2 (NFCIP-2) 1.Edition. ECMA-352
[Relatório]. - 2003.
ECMA Standard ECMA-340 [Online] // ECMA Internacional Standards. - 2004. - 14 de 02 de
2010. - http://www.ecma-international.org/publications/standards/Ecma-340.htm.
Foundation Eclipse Download Eclipse IDE for Java Developers [Online] // Eclipse. - Eclipse
Foundation, 2010. - 04 de April de 2011. - http://www.eclipse.org/downloads/packages/eclipse-
ide-java-developers/heliossr2.
foursquare Experimenting with NFC check-ins for Google I/O [Online] // Blog foursquare. - 09
de 05 de 2011. - 12 de 08 de 2011. - http://blog.foursquare.com/2011/05/09/experimenting-with-
nfc-check-ins-for-google-io/.
Gartner Gartner Says Sales of Mobile Devices in Second Quarter of 2011 Grew 16.5 Percent
Year-on-Year; Smartphone Sales Grew 74 Percent [Online] // Gartner. - 11 de 08 de 2011. - 23
de 08 de 2011. - http://www.gartner.com/it/page.jsp?id=1764714.
Global Industry Analyst, inc. Mobile Payment (Mobile Money) - A Global Strategic Business
Report [Online] // Global Industry Analyst. - 06 de 2010. - 01 de 06 de 2011. -
http://www.strategyr.com/Mobile_Payment_Market_Report.asp.
Google Google Wallet [Online] // Google Wallet. - 2011. - 01 de 08 de 2011. -
http://www.google.com/wallet/.
Google ADT Plugin for Eclipse [Online] // http://developer.android.com/sdk/eclipse-adt.html. - 10
de 01 de 2011.
Google ADT Plugin for Eclipse [Online] // http://developer.android.com/sdk/eclipse-adt.html. -
2009. - 10 de 01 de 2011.
Google Google Wallet [Online] // Google. - 2011. - 01 de 09 de 2011. -
http://www.google.com/wallet/.
87
Google Near Field Communication [Online] // Android Developer. - 02 de 09 de 2011. - 10 de 09
de 2011. - http://developer.android.com/guide/topics/nfc/index.html.
Google Near Field Communication [Online] // Android Developers. - 2011. - 12 de 08 de 2011. -
http://developer.android.com/guide/topics/nfc/index.html.
Google Near Field Communication [Online] // Android Developer. - Google, 2011. - 05 de 03 de
2011. - http://developer.android.com/guide/topics/nfc/index.html.
Google NFC Demo [Online] // Android Developers. - 2011. - 10 de 04 de 2011. -
http://developer.android.com/resources/samples/NFCDemo/index.html.
Google Package android.nfc [Online] // Android Developers. - Google, April de 2011. - 09 de
April de 2011. - http://developer.android.com/reference/android/nfc/package-summary.html.
Google Public Class Activity [Online] // Android Developers. - 2011. - 13 de 10 de 2011. -
http://developer.android.com/reference/android/app/Activity.html.
Google What is Android? [Online] // Android Developers. - Google. - 05 de 05 de 2011. -
http://developer.android.com/guide/basics/what-is-android.html.
Green Alex e Tait Don NFC, Secure Payments and Digital Security - A Market Summary
[Online] // IMS Research. - 04 de 2011. - 06 de 10 de 2011. -
http://www.imsresearch.com/files/financialid/NFC,%20Secure%20Payment%20&%20Digital%20
Security%20-%20IMS%202011.pdf.
GSM Association Requirements for Single Wire Protocol NFC Handsets [Online] // GSM
World. - 20 de 11 de 2008. - 2.0. - 18 de 11 de 2010. -
http://www.gsmworld.com/documents/reqs_swp_nfc_handsets_v2.pdf.
IMS Research NFC Integrated Circuits Shipments to Reach 920 Million in 2015 [Online] // IMS
Research. - 11 de 05 de 2011. - 06 de 10 de 2011. - http://imsresearch.com/news-events/press-
template.php?pr_id=2036.
iSuppli Mobile Handset Industry Foresees End of Recession [Online] // iSuppli. - 30 de 04 de
2010. - 01 de 10 de 2010. - http://www.isuppli.com/Mobile-and-Wireless-
Communications/Pages/Mobile-Handset-Industry-Foresees-End-of-the-Recession.aspx.
88
ITU ICT market overview [Online] // ITU. - 31 de 03 de 2011. - 06 de 10 de 2011. -
http://www.itu.int/net/itunews/issues/2011/03/04.aspx.
ITU World Telecommunication/ICT Indicators Database-Mobile Cellular Subscriptions [Online] //
International Telecommunication Union. - 2011. - 01 de 09 de 2011. - http://www.itu.int/ITU-
D/ict/statistics/.
Jakl Andreas Nokia Qt Development with Qt Mobility [Online] // Developer Nokia. - 18 de 08 de
2011. - v1.1.7. - 03 de 09 de 2011. - http://www.slideshare.net/andreasjakl/nokia-nfc-
development.
JetBrains IntelliJ IDEA — The Most Intelligent Java IDE [Online] // JetBrains. - JetBrains,
2011. - 10 de April de 2011. - http://www.jetbrains.com/idea/index.html.
Langer Josef e Madlmayr Gerald NFC Devices: Security and Privacy [Artigo] // Third
Internacional Conference on Availability, Reliabillity and Security. - Austria : Disponivel via IEEE
Explorer.
Lawer Richard DoubleTwist's latest trick is NFC-based MP3 sharing between Androids
[Online] // Engadget. - 10 de 05 de 2011. - 15 de 08 de 2011. -
http://www.engadget.com/2011/05/10/doubletwists-latest-trick-is-nfc-based-mp3-sharing-
between-andr.
Madlmayr G. [et al.] The benefit of using sim application toolkit in the context of near field
communication applications for mobile applications [Secção do Livro] // ICMB. - 2007. - Vol. VI.
Mages Kenneth G. Near Field Communication(NFC)/Smart MCommerce [Online] // NFCData. -
12 de 08 de 2011. - 13 de 10 de 2011. - http://nfcdata.com/blog/2011/08/13/nfc-tag-everything-
respect-nothing-nfc-tag-prices-coming-down-to-a-sub-5-cent-price-point/.
McLean Heather New production process could cut cost of NFC tags to “just a few cents”
[Online] // NFC World. - 12 de 08 de 2011. - 13 de 10 de 2011. -
http://www.nfcworld.com/2011/08/12/39043/new-production-process-could-cut-cost-of-nfc-tags-
to-just-a-few-cents/.
NFC Forum About NFC [Online] // NFC Forum. - 2011. - 06 de 10 de 2011. - http://www.nfc-
forum.org/aboutnfc/.
NFC FORUM NFC Data Exchange Format (NDEF) [Relatório]. - 2006.
89
NFC Forum NFC Forum Specifications [Online] // NFC Forum. - 2006-2011. - 12 de 01 de
2011. - http://www.nfc-forum.org/specs/.
NFC Forum NFC in Action [Online] // NFC Forum. - 2011. - 07 de 10 de 2011. - http://www.nfc-
forum.org/aboutnfc/nfc_in_action/.
NFC Forum Type 1 Tag Operation Specification [Relatório]. - 2007.
NFC FORUM Type 2 Tag Operation Specification [Relatório]. - 2007.
NFC Forum Type 3 Tag Operation Specification [Relatório]. - 2007.
NFC FORUM Type 3 Tag Operation Specification [Relatório]. - 2007.
NFC FORUM Type 3 Tag Operation Specification [Relatório]. - 2007.
NFC Forum Type 4 Tag Operation Specification [Relatório]. - 2010.
NFC FORUM Type 4 Tag Operation Specification [Relatório]. - 2010.
NFC trials, pilots, tests and live services around the world [Online] // Near Field Communications
World. - 29 de 08 de 2011. - http://www.nfcworld.com/list-of-nfc-trials-pilots-tests-and-
commercial-services-around-the-world/.
Nokia Angry Birds Magic hatches at WIMA [Online] // Nokia Conversations - The Official Nokia
Blog. - Nokia, 19 de 04 de 2011. - 01 de 09 de 2011. -
http://conversations.nokia.com/2011/04/19/angry-birds-magic-hatches-at-wima/.
Nokia Developing NFC application [Online] // Nokia Developer. - 04 de 09 de 2011. - 10 de 09
de 2011. - http://www.developer.nokia.com/Community/Wiki/Developing_NFC_Applications.
Nokia Introduction to NFC [Online] // Nokia Developer. - 11 de 07 de 2011. - 1.1. - 01 de 09 de
2011. - http://nds2.fds-forum.nokia.com/p/d/fds_forum/bdaa4a0f-fcf3-4a4b-b800-
c664387d6894/Introduction_to_NFC/Introduction_to_NFC_v1_1_en.pdf?fdptoken=1315947302
_a18052ef8092776a08028d07899b0277.
NPX NXP NFC controller PN544 [Online] // NPX. - NPX, February de 2010. - 9 de April de
2011. - http://www.nxp.com/acrobat_download2/literature/9397/75016890.pdf. - 9397 750
16890.
90
NPX Semicondutors MIFARE Classic [Online] // NPX. - 2010. - 01 de 12 de 2010. -
http://www.nxp.com/.
NTT Docomo adds NFC tag reading to wide range of mobile phones [Online] // NFC World. - 29
de 08 de 2011. - http://www.nfcworld.com/2010/11/11/34943/ntt-docomo-adds-nfc-tag-reading-
to-wide-range-of-mobile-phones/.
NXP MF1ICS50 [Online] // NXP. - NXP, 29 de January de 2008. - 09 de April de 2011. -
http://www.nxp.com/acrobat_download2/other/identification/M001053_MF1ICS50_rev5_3.pdf. -
001053.
NXP Semiconductors NXP TagWriter [Online] // Android Market. - 26 de 02 de 2011. - 18 de
09 de 2011. -
https://market.android.com/details?id=com.nxp.nfc.tagwriter&feature=search_result.
Octopus Holdings Octopus Balance reader [Online] // Android Market. - 26 de 08 de 2011. - 18
de 09 de 2011. -
https://market.android.com/details?id=com.hklight.octopusreader&feature=search_result.
Perez Sarah In Japan, Twitter Users "Tap to Follow" Friends Using NFC [Online] //
ReadWriteWeb. - 13 de 05 de 2011. - 12 de 08 de 2011. -
http://www.readwriteweb.com/archives/in_japan_twitter_users_tap_to_follow_friends_using_nfc.
php.
Research Lab Hagenberg NFC Research [Online] // Near Field Communication Research Lab
Hagenberg. - 06 de 07 de 2011. - 18 de 09 de 2011. - http://www.nfc-research.at/.
RIM Blackberry 7 OS [Online] // Blackberry. - 05 de 2011. - 01 de 06 de 2011. -
http://us.blackberry.com/apps-software/blackberry7/.
Samsung Electronics Co http://developer.bada.com/library/help [Online] // Bada Developers. -
2011. - 01 de 09 de 2011. - http://developer.bada.com/library/help.
Samsung Near Field Communication [Online] // Bada Developer. - 2011. - 20 de 08 de 2011. -
http://developer.bada.com/help_2.0/index.jsp?topic=/com.osp.cppprogramming.help/html/dev_g
uide/net/nfc.htm.
Secretariat EPC Draft Mobile Contactless Sepa card Payments interoperability implementation
guidelines [Online] // European Payments Council. - European Payments Council, 28 de 04 de
91
2011. - V1.0. - 08 de 09 de 2011. -
http://www.europeanpaymentscouncil.eu/knowledge_bank_download.cfm?file=EPC178-
10%20Draft%20Mobile%20Contactless%20SEPA%20Card%20Payments%20Interoperability%
20IG.pdf.
Séneca Hugo Operadores de telemóveis fazem acordo para pagamentos por NFC [Online] //
Exame Informática. - 05 de 05 de 2011. - 10 de 09 de 2011. -
http://aeiou.exameinformatica.pt/operadores-de-telemoveis-fazem-acordo-para-pagamentos-
por-nfc=f1009454.
Sony Felica Contactless IC card Technology [Online] // Sony. - 2004. - 01 de 06 de 2011. -
http://www.sony.net/Products/felica/.
Tuikka Tuomo e Isomursu Minna Touch the Future with a Smart [Relatório]. - [s.l.] :
UTGIVARE, 2009.
Vodafone Portugal Quem Somos [Online] // Vodafone. - 2011. - 07 de 10 de 2011. -
http://www.vodafone.pt.
Vodafone Terminal Technology Roadmap [Relatório]. - 2010.
Vodafone Trends Technology [Relatório]. - 2010.
Weaver Pamela NTT DoCoMo and Twitter announce partnership [Online] // telecoms.com. - 13
de 05 de 2011. - 12 de 08 de 2011. - http://www.telecoms.com/27694/ntt-docomo-and-twitter-
announce-partnership/.
WG8 ISO/IEC 14443, Proximity cards [Online] // WG8. - 2000-2011. - 01 de 06 de 2011. -
http://wg8.de/sd1.html#14443.
Wikipedia Android (operating system) [Online] // Wikipedia. - 5 de 03 de 2011. - 05 de 03 de
2011. - http://en.wikipedia.org/wiki/Android_(operating_system).
Wikipedia Blackberry [Online] // Wikipedia. - 12 de 09 de 2011. - 12 de 09 de 2011. -
http://en.wikipedia.org/wiki/BlackBerry.
Wikipedia Código_QR [Online] // Wikipedia. - 2011. - 07 de 10 de 2011. -
http://pt.wikipedia.org/wiki/C%C3%B3digo_QR.
92
Wikipedia Dalvik (software) [Online] // Wikipedia. - 11 de 02 de 2011. - 05 de 03 de 2011. -
http://en.wikipedia.org/wiki/Dalvik_(software).
Wikipedia Eclipse [Online] // Wikipedia. - Eclipse Foundation, 07 de April de 2011. - 10 de April
de 2011. - http://en.wikipedia.org/wiki/Eclipse_%28software%29.
Wikipedia Java (programming language) [Online] // Wikipedia. - 04 de 03 de 2011. - 05 de 03
de 2011. - http://en.wikipedia.org/wiki/Java_(programming_language).
Wikipedia Just-in-time compilation [Online] // Wikipedia. - 04 de 03 de 2011. - 05 de 03 de
2011. - http://en.wikipedia.org/wiki/Just-in-time_compilation.
Wikipedia List of Mobile country codes [Online] // Wikipedia. - 2011. - 28 de 05 de 2011. -
http://en.wikipedia.org/wiki/Mobile_Country_Code.
Wikipedia Mobile Network Code [Online] // Wikipedia. - 2011. - 28 de 05 de 2011. -
http://en.wikipedia.org/wiki/Mobile_Network_Code.
Wikipedia Wireless USB [Online] // Wikipedia. - 14 de March de 2011. - 09 de April de 2011. -
http://pt.wikipedia.org/wiki/Wireless_USB.
Anexos
93
Anexo 1 – Project Plan
Project Plan
Background
NFC é uma nova tecnologia que irá trazer a integração de novos serviços em telemóveis. Hoje
em dia o desenvolvimento realizado em cartões SIM e nos dispositivos móveis tornou-os
altamente capazes de armazenar ou correr aplicações de terceiros.
NFC é uma tecnologia de comunicação de curto alcance baseada na indução de um campo
magnético criado por uma antena recetora.
Objetivo de investigação
O objetivo desta dissertação será centrado na integração tecnologia NFC para relações B2C
através de um telemóvel.
Este documento irá descrever com detalhe a tecnologia NFC, para percebermos o modelo de
funcionamento, vantagens, limitações, normalização e principalmente a sua área de atuação no
mercado de telecomunicações e na integração nos dispositivos móveis. O termo dispositivos
móveis será bastante utilizado, representa telemóveis de todas as gamas e tablets PC do tipo
iPad .
Serão descritos os requisitos tecnológicos necessários para implementação de soluções reais
dentro das áreas identificadas com maior potencial: invocação de serviços; pagamentos e
compras; peer-to-peer; loyalty (campanhas e promoções).
Limitações
A principal limitação está relacionada com o acesso a equipamentos que possuam tecnologia
integrada. Esta limitação faz com que o teste em terminais reais seja muito difícil. Este atraso
94
na entrega dos equipamentos é acompanhado de adiamentos na disponibilização de SDK de
desenvolvimento atualizadas para as novas plataformas, por exemplo para Android.
Âmbito
Serão descritos os requisitos tecnológicos necessários para implementação de soluções reais
dentro das áreas identificadas com maior potencial: invocação de serviços; pagamentos e
compras; peer-to-peer; loyalty (campanhas e promoções).
Aspetos relacionados com a segurança será sumariamente abordados mas as soluções de
desenvolvimento propostas não focam este aspeto.
Gestão do projeto
Processo utilizado
A dissertação deverá apresentar propostas de implementação de aplicações B2B a correr em
dispositivos móveis. Para garantir que a sua compatibilidade e correta execução, as normas do
NFC terão que ser estudadas, bem como os diferentes tipos de tag ou dispositivos
Enquadramento
Esta dissertação insere-se na atividade curricular “Dissertação” do Mestrado de Engenharia
Informática-Ramo de arquitetura Sistemas e redes a realizar no ISEP e é orientada pelo
docente Dr. Paulo Gandra.
95
Fases de decisão, follow up, reuniões e milestones
Fases de decisão
Fases Aprovação por Data para entrega Data atingida
Submissão da
proposta de
Dissertação
Paulo Gandra 31/12/08 31/12/08
Submissão do
Estado da Arte
Paulo Gandra 29/02/09 29/02/09
Submissão da
Dissertação
Paulo Gandra 30/06/11 15/10/2011
Defesa da
Dissertação
Júri
Follow-up
Ao longo da dissertação de mestrado haverá pontos de situação com o orientador Dr. Paulo
Gandra para avaliar o progresso da dissertação
96
Reuniões de projeto
Objetivo: Controlo do progresso e orientação
Participantes: Dr. Paulo Gandra e aluno Pedro Nogueira
Frequência: A definir
Milestones
Data Descrição
01/11/08 Início da Dissertação
29/02/09 Envio do estado da Arte
De 01/06/09 a 01/10/10 Suspensão da dissertação
31/12/10 Revisão e atualização dos
conteúdos anteriores
28/02/11 Completar análise teórica e
especificação das soluções de
implementação
31/05/11 Desenvolvimento da
implementação
30/06/11 Entrega do relatório final para
revisão
97
15/09/11 Entrega de versão de relatório
candidata a final
10/10/11 Entrega de protótipo
15/10/11 Entrega de versão final
Out./11 Defesa da Dissertação
Atividades
Principais atividades
A dissertação inclui trabalho teórico e experimentação prática das soluções a desenvolver para
dispositivo com NFC. Este trabalho inicia com estudo da literatura sobre NFC, seguida da
apresentação do estado da arte que compila a teoria mais relevante para esta dissertação. Se
seguida irei fazer a especificação das soluções que pretendo implementar.
Finalmente irei demonstrar as soluções desenvolvidas utilizando meios físicos, telemóvel e tag.
98
Agenda
Atividades De 01/12/09 a
29/02/09
De 01/03/09 a
30/05/09
De 01/11/10
a 13/10/11
Total
Realizado
Total Previsto
Definir Proposta
de dissertação
5 5 5 15 15
Investigação
teórica
100 200 350 650 500
Escrever
relatório
30 50 600 680 640
Especificação
das soluções a
desenvolver
70 70 50
Desenvolviment
o
400 300 450
Testes 75 75 10
Reuniões 2 2 4 4
Total 1794
4.9 Ferramentas utilizadas
• Ferramentas que serão utilizadas durante o trabalho:
• Microsoft Office Word 2007 para escrita do relatório
• Microsoft Office Visio para realizar fluxos
99
• Microsoft Office Project para gerir atividades
• DropBox para armazenar documentação
• ECLIPSE para desenvolvimento em Java.
• Android SDK para desenvolver aplicação compatível com plataforma móvel Android.
• Astah para desenho de fluxos UML.
Anexo 2 – RDID
RFID – Descrição da tecnologia
O que é RFID?
RFID é uma tecnologia que utiliza comunicação através de ondas rádio (sem fio) para identificar
pessoas ou objetos. Permite a recolha automática de informação acerca de um ou múltiplos itens
independentemente da sua posição, sem necessidade de uma ligação ótica direta ou intervenção
humana.
História RFID
Identificar as raízes RFID não se mostrou uma tarefa simples, várias versões são invocadas, o
que me levou a optar pela que reunia mais consenso.
RFID é a combinação da tecnologia rádio Broadcast com os radares6.
Em 1937 por Sir Robert Alexander Watson-Watt, um físico escocês, descobriu que as grandes
potências mundiais utilizavam radares para os avisar com antecedência da aproximação de
aviões. No entanto a dificuldade em identificar qual o avião aliado ou inimigo fez com que se
procuram-se métodos que solucionassem o problema, o primeiro método que surgiu,
considerado como o primeiro sistema passivo de RFID, consistia em que os seus pilotos
girassem os aviões no regresso à base de forma a modificar o sinal de rádio que seria refletivo
6 “Shrouds of Time The history of RFID” from AIM (Association for automatic identification and Data Capture Tecnhologies)
100
de volta ao radar. Este método foi desenvolvido pelos alemães, viria a tornar-se extremamente
importante durante a Segunda Guerra Mundial.
Várias tecnologias baseadas no RFID foram desenvolvidas, tal como o primeiro identificador
ativo de amigo ou inimigo (IFF – Identify Friend or Foe) desenvolvido pelos Ingleses. Os
avanços na área de radares e de comunicação RF (Radio Frequency) fizeram com que entre os
anos 60 e 80 o RFID torna-se uma realidade.
As primeiras aplicações comerciais surgiram entre a década de 80 e 90, mas o alargamento
ocorreu entre a década de 90 com a definição de standard e o envolvimento dos principais
fabricantes e associações tecnológicas.
Hoje em dia a aplicabilidade do RFID é muito alargada, é utilizado para identificação de objetos,
segurança, controlo de furtos, localização, mobilidade, dando um contributo muito importante
nas áreas da distribuição, logística e recentemente em telecomunicações móveis.7
Como funciona o RFID?
RFID funciona através da utilização de semicondutores (Micro-chips) em tags ou etiquetas para
transmitir informação armazenada quando os tags ou as etiquetas são expostas a ondas rádio
de um determinada frequência.
Tendência do Mercado?
A tecnologia RFID está a atrair a indústria e a distribuição porque pode ser usada como uma
tecnologia global para substituição do atual código de barras em muitas situações. RFID
fornece todas as vantagens de uma leitura múltipla desacompanhada, do volume da informação
e da velocidade. Muitos fatores estão ajudar à expansão desta tecnologia, nomeadamente:
• Dispositivos mais baratos;
7 Historia RFID consultada em Shrouds of Time The history of RFID” from AIM (Association for automatic identification and Data Capture Tecnhologies) e http://pt.wikipedia.org/wiki/RFID
101
• Soluções flexíveis;
• Vantagens sobre as soluções de códigos de barras;
• Definições Standards;
Aplicações RFID
Nos últimos anos temos assistido a um crescimento rápido do número de implementações com a
tecnologia RFID. Algumas das áreas onde podemos ver uma implementação são:
• Transportes e logística: Rastreio de produtos
• Controlo de acesso e segurança8: Controlo de acesso a áreas restritas9, etc.
• Gestão de cadeia de fornecimento: Identificação de objetos, prevenção de roubos, etc.
• Aplicações na área médica e farmacêutica: controlo de contrafação de medicamentos,
localização dos pacientes, identificação dos pacientes e do staff do hospital, etc.
• Fabrico e processamento: linhas de produção, etc.
• Agricultura: Controlo de Qualidade, localização de animais, etc.
• Sector público: Identificação de pessoas10, transportes, bibliotecas, etc.
• Desporto11
8 Imobilizador no Toyota Prius http://www.artsautomotive.com/PriusRFIDKey.htm
9 Taiwan Ministry of Economic Affairs Industrial Development Bureau e IBM http://www-306.ibm.com/software/success/cssdb.nsf/CS/HSAZ-6QZ49N?OpenDocument&Site=default&cty=en_us
10 Identificação pessoal – SmartWear Technologies parceira do U.S. Department of Homeland Security. http://www.smartweartechnologies.com/
11 RFID na equitação http://www.rfidjournal.com/article/articleview/3583/1/1/
102
• Pagamentos móveis12
RFID – Funcionamento dos seus componentes
Fonte de energia – A energia necessária para enviar e ler a informação armazenada é obtida
do leitor, que transmite ondas eletromagnéticas. Estas ondas são intercetadas pela TAG e
convertidas em energia no Microchip, utilizando um mini-transformador. No entanto também
existem tags que possuem mini baterias para se auto alimentar e assim podem manter sempre
ativas, desta forma consegue-se aumentar o raio de transmissão.
Leitor – O leitor de RFID comunica com a TAG sem necessidade de contacto físico ou de
estarem em linha de visão. Estes interfaces processam os dados lidos da TAG e comunicam
com aplicações externas para fazer o tratamento da informação.
Modo de funcionamento das tags: Ativo-Passivo
Modo Ativo
O dispositivo possui uma bateria e não necessita de extrair energia do campo eletromagnético
• Maior campo de alcance
• Custo mais elevado
• Necessita de um leitor menos potente;
• Vida finita.
Passivo
O leitor fornece energia através do campo eletromagnético aos componentes da tag.
12 Visa Micro Tag http://usa.visa.com/personal/cards/paywave/micro_tag.html
103
• Tags mais pequenos, leves e baratos;
• Vida quase ilimitada;
• Necessitam de leitores mais potentes.
Classificação por frequência de banda
A frequência é o número de ciclos que um sinal periódico é executado numa unidade de tempo.
Todas as aplicações RFID funcionam numa determinada frequência e todos os componentes do
sistema estão sincronizados com esta frequência.
Figura 31-Banda de Frequência RFID
(Fonte: Apresentação da Sybase no congresso de RFID – Mobilidade empresarial, da IDC em Março de 2009)
104
Baixa frequência
A frequência baixa (30-300 KHZ) é usada em escalas próximas do acoplamento. Adequada para
distâncias dos tags -leitores a menos de 2cm. A frequência baixa requer leitores de baixo custo
que operam com um número limitado de tags ou informações.
Características
• Curto alcance de leitura
• Baixa velocidade de leitura
• Barato
Aplicações
• Cartões de Acesso Segurança
• Cartões de identificação pessoal
• Identificação de Animais
• Cartões Porta-moedas
Alta Frequência
A alta frequência (3-30MHZ) em longo alcance (0-20cm) e curto alcance (0-1m). Estas duas
escalas são as mais usadas em aplicações de tecnologia de radiofrequência.
Características
• Curto alcance de leitura
• Média velocidade de leitura
• Potencialmente dispendioso
105
Aplicações
Longo alcance:
• Cartões de acesso Segurança
• Cartões de Identificação Pessoal
Curto Alcance:
• Sem informação no TAG
o Segurança de Loja/Supermercado
o Deteção de Elemento/Produto
• Com informação no TAG
o Identificação de elementos
o Informação de Produtos
o Gestão de Manuseamento Produtos
Frequência ultra alta
A Frequência Ultra Alta (300-3000MHZ) é usada num alcance dos 0-6m. Nos UUA e na Europa
utilizam-se frequências diferentes; EUA (915 MHZ) e na Europa (868 MHZ), não existindo
compatibilidade de entre dispositivos dos dois continentes.
Aplicações
• Identificação e localização de objetos
• Controlo de objetivos em trânsito
• Gestão Manuseamento de Produto
106
• Identificação de Animais
• Produção e Manufatura
• Controlo e Rastreabilidade
• Controlo de Docas e Transporte
Características
• Médio alcance de leitura
• Média velocidade de leitura
• Dispendioso
Micro-Ondas
As Micro-Ondas (3-30GHz) são utilizadas em longo alcance (100m)
Características
• Longo alcance de leitura
• Alta velocidade de leitura
• Dispendioso
• Linha de Visualização
Aplicações
• Terminais de RF e Comunicações
• Identificação/localização de Objetos
• Controlo de produto em trânsito
107
• Gestão de manuseamento de produto
• Identificação de animais
• Produção e manufatura
• Controlo e Rastreabilidade
• Transporte/Distribuição de produtos
Características técnicas
Vantagens Desvantagens
Sistema de identificação automática Componentes dispendiosos
Captação de informação múltipla e em
simultâneo
Conhecimento técnico ainda precisa de ser
alargado e desenvolvido
Inexistência de contacto físico, utilização
de ondas rádio
Não é indicado para ambientes em presença
de água ou metal
Não é necessária visualização para
escrever ou ler informação
Ondas rádio de outros sistemas produzem
interferências
Diferentes alcances de leitura/escritas
disponíveis
108
Standards ISO
Os standards ISO são reconhecidos mundialmente e desenvolvidos para garantir a
inoperacionalidade dos transponders e dos leitores de diferentes produtos e marcas. Alguns
exemplos de standards aprovados são:
• ISO 10536 – Alcance de Leitura inferior a 2cm. Relacionado com os dispositivos de
proximidade, como cartões de identificação.
• ISO 1441 – Alcance de leitura até 20cm. Cartões/Dispositivos de proximidade.
• ISO 15693 – Alcance de leitura até 6m. Cartões/dispositivos vizinhança.
• ISO 18000- Protocolo de interface. Não define o conteúdo dos dados, a sua estrutura,
nem a sua implementação física.
[Fonte:International Organization for Standardization; http://www.iso.org]
EPC
O Código de Produto Eletrónico (EPC-Electronic Product Code) é um novo produto de numeração
padrão sob o desenvolvimento do UCC (Uniform Code Council) e EAN (European Article
Numbering) internacional. A Estrutura do código de EPC define um código de identificação único
para cada produto. Pode ser utilizado para detetar, controlar e rastrear itens e produtos através da
tecnologia RFID.
Esta iniciativa começou como um projeto de pesquisa dirigido a clientes finais pela AUTO-ID
Centre do MIT em Novembro de 2003 e recebeu o suporte da UCC/EAN para usar o código de
EPC como a “versão eletrónica” de identificação de produto da EAN/UCC. A especificação EPC
Gen2 UHF foi formalmente aprovada pelo fórum GS1 (EAN.UCC) em Bruxelas em 16 de
Fevereiro de 2005.
Rede EPC
109
Associados aos desenvolvimentos do EPC RFID, foi criado um novo serviço Internet que permite
o tracking global individual dos produtos e bens através da cadeia de fornecedores. Este sistema
de captura de dados conectado à internet é chamado “rede EPC”. Será um produto EAN e ECC,
assim provavelmente será um standard “de facto”.
MOBILE RFID
Mobile RFID13 é uma tecnologia convergente baseada no RFID e num telemóvel com acesso à
internet, é considerado como um campo dentro do RFID com mais potencial para acelerar a
resolução da ubiquidade.
Esta convergência de tecnologias, RFID e telemóvel, consiste em instalar um leitor de RFID em
miniatura no telemóvel, mantendo como principal foco do RFID na identificação de objeto mas
desta feita via telemóvel. O telemóvel acrescenta a mais-valia de permitir que se possa obter mais
informações sobre o objetivo lido, através do acesso à internet via GPRS/3G ou Wifi, por exemplo
ler informação de um TAG RFID de um poster de um filme14, o que invocaria um serviço no
telemóvel de forma a obter um trailer do filme ou poder adquirir bilhetes. A figura seguinte
apresenta o ambiente que envolvente ao Mobile RFID, sendo o telemóvel o ponto central e faz a
ponte entre a leitura da informação das tags dos objetivos com os sistemas dos fornecedores de
serviços e mais informações.
13 O ETRI (Electronics and Telecommunications Research Institute) da Korea tem feito os maiores desenvolvimentos nesta área, com a implementação desta tecnologia no dia-a-dia das pessoas. Capitulo baseado no white Paper “The Business Value of Mobile RFID Services in Korea” criados por investigadores do ETRI e da Universidade de Ciência e Tecnologia da Coreia. 14 Exemplo apresentado no white paper “An integrated mobile REID service architecture between B2B and B2C” criado por investigadores do ETRI.
110
Figura 32-Ambiente do Mobile RFID
(Fonte: ETRI)
A banda UHF é a mais comum no RFID, a tecnologia Mobile RFID na banda UHF é baseada na
norma ISO/IEC 18000-6C, mas pode ser utilizado em outras frequências.
Vantagens do Mobile Rfid
Uma das vantagens é o facto de partilhar a mesma banda das tags de RFID utilizadas na
logística e nas cadeias de fornecimento e pode assim evitar redundância de investimentos.
O seu raio de alcance pode ser ajustado, na frequência mais comum de 900Mhz é de
aproximadamente 1 metro mas o nível de potência pode ser alterado para aumentar ou diminuir
o raio de alcance que depende da aplicação que se pretende dar, por exemplo para operações
que se exige mais segurança como pagamento eletrónico, é adequado um menor raio de
alcance.
111
A convergência do RFID com o telemóvel e a sua facilidade de implementação é outra das
vantagens, fácil de criar novos serviços utilizando o leitor de RFID integrado no telemóvel.
Limitações mobile RFID
Esta é uma área ainda em desenvolvimento, mas o principal risco identificado tem relação com a
probabilidade de ocorrência de colisões entre vários telemóveis que possuam um leitor RFID
integrado.
Integração em rede B2B
A Coreia do Sul tem feito os maiores avanços nesta área, o ETRI em conjunto com os principais
operadores de telecomunicações realizaram várias implementações, como exemplos:
• Serviço de Portal Universitário
• Validação de genuinidade de medicamentos;
• Acesso a informação sobre produtos
• Compra de produtos no McDonald
• Serviço de identificação de livros no Museus.
Para que estas implementações sejam possíveis, é que necessário criar uma arquitectura que
façam a convergência entre a tecnologia RFID, uma rede de telecomunicações e os parceiros
empresariais, basicamente integração do Mobile RFID numa rede B2B e B2C.
Foram desenvolvidos standards que permitem que a cadeia de fornecimento de produtos e
serviços RFID se consiga integrar na rede Mobile RFID de forma comum, no entanto vários
fatores continuam a necessitar de ser considerados, nomeadamente:
• Associação de segurança entre as entidades B2B
112
• Organização de conteúdos. A devolução de informação sobre um objeto deverá cumprir
determinada estrutura comum e ter em consideração as limitações dos telemóveis em
termos de limitada capacidade computacional e de ecrã.
• Adaptação e modificação dos conteúdos: Os telemóveis possuem características e
limitações diferentes, o que implica uma conversão e modificação dos conteúdos para se
adaptarem ao telemóvel.
Estes fatores obrigam a que tenhamos que olhar para uma rede de RFID B2C e de forma isolada
uma B2B. Para que esta integração seja possível a arquitetura de rede terá que contemplar uma
Gateway que atue como um proxy ou um agente. Baseado num modelo proposto pela ETRI,
“service gateway15”A Figura seguinte apresenta de forma resumida a arquitetura sugerida que
será na dissertação.
Figura 33-Arquitectura de rede Mobile RFID com uma Gateway
(Fonte: ETRI)
15 Consultar white paper “An integrated mobile REID service architecture between B2B and B2C networks”criado pela ETRI.Disponivel via IEEE Explore.
113
Aplicações de mobile RFID
No ponto anterior foram apresentados alguns exemplos de implementação, apresentamos
exemplos concretos utilizados na Exibição de RFID em 2006 na Coreia do Sul.
Figura 34-Prova de vinhos, informação sobre o vinho
Figura 35-Informação sobre o BUS
114
Figura 36-Mais informação sobre um filme
115
Anexo 3 – TAGs NFC e a sua aplicação
Tabela 16 – Adequação de aplicações de acordo com o tipo de TAG
Fonte: NFC Forum – Innovision White paper
116
Anexo 4 – Código fonte O código fonte encontra-se disponivel para download através do endereço
http://db.tt/wL8IFJOn. Este documento apresenta o código das actividades principais e do
Manisfest File.
Class Scantag.java
package nfc.master;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
import android.nfc.tech.Ndef;
import android.nfc.tech.NfcA;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.io.IOException;
import java.util.ArrayList;
/**
* An {@link Activity} which handles a broadcast of a new tag that the device
* just discovered.
*/
public class Scantag extends Activity implements Runnable {
static final String TAG = "ViewTag";
/**
* This activity will finish itself in this amount of time if the user
* doesn't do anything.
*/
static final int ACTIVITY_TIMEOUT_MS = 1 * 1000;
TextView mTitle;
TagItem _tagitem=null;
LinearLayout mTagContent;
Intent intentglobal;
// NFC parts
private static NfcAdapter mAdapter;
private static PendingIntent mPendingIntent;
private static IntentFilter[] mFilters;
private static String[][] mTechLists;
public String[] mifare = new String[6];
public String[] ndef = new String[6];
117
public ArrayList<String> AlistTagUTF8;
public ArrayList<String> AlistTagHEX;
public ArrayList<String> AlistTagASCII;
ProgressDialog myProgressDialog = null;
public String action;
// Hex help
private static final byte[] HEX_CHAR_TABLE = { (byte) '0', (byte) '1',
(byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',
(byte) '7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B',
(byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' };
// Just for alerts
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scantag);
//resolveIntent(getIntent());
mAdapter = NfcAdapter.getDefaultAdapter(this);
// Create a generic PendingIntent that will be deliver to this
activity.
// The NFC stack
// will fill in the intent with the details of the discovered tag
before
// delivering to
// this activity.
mPendingIntent = PendingIntent.getActivity(this, 0, new
Intent(this,
getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
// Setup an intent filter for all MIME based dispatches
IntentFilter ndef = new
IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
IntentFilter tech = new
IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
IntentFilter tag = new
IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
mFilters = new IntentFilter[] { ndef, tech,tag, };
// Setup a tech list for all NfcF tags
mTechLists = new String[][] { new String[] { MifareClassic.class
.getName(),Ndef.class
.getName(),NfcA.class
.getName() } };
Intent intent = getIntent();
intentglobal=intent;
resolveIntent(intentglobal);
}
void resolveIntent(Intent intent) {
// Parse the intent
action = intent.getAction();
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
||NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
_tagitem = new TagItem();
118
//Toast.makeText(getApplicationContext(),"Tag
detected",Toast.LENGTH_LONG).show();
myProgressDialog = ProgressDialog.show(this,
"Please wait...", "Tag Detected,
reading...Please keep your phone in touch with the tag while is reading",
true,false);
//Toast.makeText(getApplicationContext(),"Activity will
continue2",Toast.LENGTH_LONG).show();
Thread thread = new Thread(this);
thread.start();
} else {
Log.e(TAG, "Unknown intent " + intent);
}
}
public void run() {
resolveIntentNdef(intentglobal);//get NDEF Parcebable data
resolveIntentMifare(intentglobal);//get tag details and
Intent displayinfo = new Intent(this, TagDetail.class);
Bundle b = _tagitem.toBundle();
displayinfo.putExtras(b);
startActivity(displayinfo);
handler.sendEmptyMessage(0);
}
public void resolveIntentNdef(Intent intent) {
Parcelable[] rawMsgs =
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
//Tag tagFromIntent =
intent.getParcelableExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
Tag tagFromIntent =
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Ndef _ndef = Ndef.get(tagFromIntent);
try {
_ndef.connect();
} catch (IOException e) {
Log.e(TAG, "Erro na ligação " + e.toString());
e.printStackTrace();
}
ndef[0]=_ndef.toString();
ndef[1]=Integer.toString(_ndef.hashCode());
ndef[2]=Integer.toString(_ndef.getMaxSize());
ndef[3]=_ndef.getType();
ndef[4]= new Boolean(_ndef.canMakeReadOnly()).toString();
ndef[5]= new Boolean(_ndef.isWritable()).toString();
try {
_ndef.close();
} catch (IOException e) {
e.printStackTrace();
}
_tagitem.ndefstring=ndef;
_tagitem.rawMsgs=rawMsgs;
NdefMessage[] msgs;
119
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
//_tagitem.message = msgs.;
} else {
// Unknown tag type
byte[] empty = new byte[] {};
NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN,
empty, empty, empty);
NdefMessage msg = new NdefMessage(new NdefRecord[]
{record});
msgs = new NdefMessage[] {msg};
}
}
public void resolveIntentMifare(Intent intent) {
Tag tagFromIntent =
intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
mifare = new String [6];
_tagitem.mTechList=tagFromIntent.getTechList();
_tagitem.tagid=tagFromIntent.getId().toString();
_tagitem.hashcode=Integer.toString(tagFromIntent.hashCode());
MifareClassic mfc = MifareClassic.get(tagFromIntent);
byte[] data;
try { // 5.1) Connect to card
mfc.connect();
mifare[0]=mfc.toString();
mifare[1]=Integer.toString(mfc.hashCode());
mifare[2]=Integer.toString(mfc.getSize());
mifare[3]=Integer.toString(mfc.getType());
mifare[4]=Integer.toString(mfc.getSectorCount());
mifare[5]=Integer.toString(mfc.getBlockCount());
_tagitem.mifare=mifare;
boolean auth = false;
boolean authDefault = false;
boolean authAppDirectory = false;
boolean authNFCForum = false;
AlistTagUTF8 = new ArrayList<String>();
AlistTagHEX = new ArrayList<String>();
AlistTagASCII = new ArrayList<String>();
String cardData = null;
// status_Data.setText("Authenticating the
Tag..");
// 5.2) and get the number of sectors this card has..and
loop thru these sectors
int secCount = mfc.getSectorCount();
int bCount = 0;
int bIndex = 0;
for(int j = 0; j < secCount; j++){
// 6.1) authenticate the sector
120
authDefault = mfc.authenticateSectorWithKeyA(j,
MifareClassic.KEY_DEFAULT);
if(!authDefault)
{
authAppDirectory =
mfc.authenticateSectorWithKeyA(j,
MifareClassic.KEY_MIFARE_APPLICATION_DIRECTORY);
if(!authAppDirectory)
{
authNFCForum =
mfc.authenticateSectorWithKeyA(j, MifareClassic.KEY_NFC_FORUM);
if(!authNFCForum)
{
auth=false;
}
else{
auth=true;
}
}else{
auth=true;
}
}else{
auth=true;
}
if(auth){
// 6.2) In each sector - get the block count
bCount = mfc.getBlockCountInSector(j);
bIndex = 0;
//Return the first block of a given sector.
bIndex = mfc.sectorToBlock(j);
for(int i = 0; i < bCount; i++){
// bIndex = mfc.sectorToBlock(j);
// 6.3) Read the block
data = mfc.readBlock(bIndex);
// 7) Convert the data into a string from
Hex format.
String sUTF8 = new String(data, "UTF-8");
String sASCII = new String(data, "US-
ASCII");
cardData = getHexString(data,
data.length);
Log.i(TAG, getHexString(data,
data.length));
if (cardData != null) {
AlistTagUTF8.add("Sector
"+Integer.toString(j+1)+ " block "+Integer.toString(i+1)+ " :"+sUTF8);
AlistTagHEX.add("Sector
"+Integer.toString(j+1)+ " block "+Integer.toString(i+1)+ " :"+ cardData);
AlistTagASCII.add("Sector
"+Integer.toString(j+1)+ " block "+Integer.toString(i+1)+ " :"+sASCII);
bIndex++;
} else {
121
bIndex++;
}
}
}
}
if(AlistTagUTF8.size()>0){
_tagitem.contentMifareUTF8=AlistTagUTF8;
_tagitem.contentMifareHEX=AlistTagHEX;
_tagitem.contentMifareASCII=AlistTagASCII;
}
}catch (IOException e) {
Log.e(TAG, e.getLocalizedMessage());
}
}
//read again the tag
@Override
public void onNewIntent(Intent intent) {
Log.i("Foreground dispatch", "Discovered tag with intent: " +
intent);
//setIntent(intent);
intentglobal=intent;
resolveIntent(intentglobal);
}
@Override
public void setTitle(CharSequence title) {
mTitle.setText(title);
}
@Override
public void onPause() {
super.onPause();
mAdapter.disableForegroundDispatch(this);
}
@Override
public void onResume() {
super.onResume();
mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters,
mTechLists);
}
//get hexadecimal from each block of each sector
public static String getHexString(byte[] raw, int len) {
byte[] hex = new byte[2 * len];
int index = 0;
int pos = 0;
for (byte b : raw) {
if (pos >= len)
break;
pos++;
int v = b & 0xFF;
hex[index++] = HEX_CHAR_TABLE[v >>> 4];
122
hex[index++] = HEX_CHAR_TABLE[v & 0xF];
}
return new String(hex);
}
//manage the progress bar
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
myProgressDialog.dismiss();
}
};
}
Class TagDetail.java
/*
*This class manages information from a a bundle which represents a object
from the class TagItem
*this information is assigned to UI fields
*
*/
package nfc.master;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.app.AlertDialog.Builder;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Parcelable;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
123
import nfc.master.ParsedNdefRecord;
import java.util.ArrayList;
import java.util.List;
/**
* An {@link Activity} which handles a broadcast of a new tag that the device
* just discovered.
*/
public class TagDetail extends TabActivity implements OnClickListener {
static final String TAG = "ViewTag";
private static final int NETWORK = 1;
private static final int OTHERS = 2;
private static final int NONETWORK = 3;
/**
* This activity will finish itself in this amount of time if the user
* doesn't do anything.
*/
static final int ACTIVITY_TIMEOUT_MS = 1 * 1000;
TagItem _tagitem=null;
//TAGinfo
TextView tagID_ti;
TextView hashCode_ti;
public ArrayList<String> listTag_ti;
private static ListView lvTag_ti;
LinearLayout mTagContent;
final int DOCALL = 1;//CONSTANT TO DEFINE EVENTS WHERE A CALL WILL BE
MADE
final int OPENBROWSER = 2;//CONSTANT TO DEFINE EVENTS WHERE A browser
will be open
final int SENDSMS = 3;//CONSTANT TO DEFINE EVENTS WHERE A SMS will be
sent
final int TEXT = 4;//CONSTANT TO DEFINE EVENTS WHERE A TEXT IS THE NDEF
RECORD
//Mifare tab
private static TextView technology_Data;
private static TextView hash_Data;
private static TextView size_Data;
private static TextView type_Data;
private static TextView sectors_Data;
private static TextView blocks_Data;
String[] mifare;
public ArrayList<String> AlistTag;
private static ListView lvTag;
// Hex help
//NDEF tab
TextView ndefname;
TextView hashCode_ndef;
TextView getMaxsize_ndef;
TextView messagesize_ndef;
TextView type_ndef;
TextView textrecord;
TextView recordtype;
124
TextView textrecord2;
TextView textrecord3;
CheckBox checkcanmakereadonly;
CheckBox checkiswritable;
Button scanBut;
Button bhex;
Button bascii;
Button butf8;
private static ListView lvTag_ndef;
ImageView imagerecord;
Resources resources;
Uri uriGlobal;
String textTypeOfrecord;
String textRecord;
// NFC parts
private static NfcAdapter mAdapter;
private static PendingIntent mPendingIntent;
private static IntentFilter[] mFilters;
private static String[][] mTechLists;
Bundle b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tag);
TabHost tabs = getTabHost();
//UI elements for tab info
tagID_ti = (TextView) findViewById(R.id.tagid_ti);
hashCode_ti = (TextView) findViewById(R.id.hashid_ti);
lvTag_ti = (ListView) findViewById(R.id.listtechsupported_ti);
//UI elements for ndef tab
ndefname=(TextView) findViewById(R.id.technology_data_ndef);
textrecord=(TextView) findViewById(R.id.textrecord);
textrecord2=(TextView) findViewById(R.id.textrecord2);
textrecord3=(TextView) findViewById(R.id.textrecord3);
recordtype=(TextView) findViewById(R.id.recordtype);
hashCode_ndef=(TextView) findViewById(R.id.Hash_ID_ndef);
getMaxsize_ndef=(TextView) findViewById(R.id.size_data_ndef);
messagesize_ndef=(TextView) findViewById(R.id.messagesize_ndef);
type_ndef=(TextView) findViewById(R.id.type_data_ndef);
checkcanmakereadonly=(CheckBox)
findViewById(R.id.checkBoxreadonly);
checkiswritable=(CheckBox) findViewById(R.id.CheckBoxIsWritable);
imagerecord = (ImageView)findViewById(R.id.imagerecord);
//lvTag_ndef = (ListView) findViewById(R.id.listndef);
textrecord.setOnClickListener((OnClickListener) this);
scanBut = (Button) findViewById(R.id.scan);
scanBut.setOnClickListener(this);
//UI elements for MIFARE TAB
technology_Data = (TextView) findViewById(R.id.technology_data);
hash_Data = (TextView) findViewById(R.id.Hash_ID);
size_Data = (TextView) findViewById(R.id.size_data);
type_Data = (TextView) findViewById(R.id.type_data);
sectors_Data = (TextView) findViewById(R.id.sectors_data);
125
blocks_Data = (TextView) findViewById(R.id.blocks_data);
lvTag = (ListView) findViewById(R.id.listTag);
bhex =(Button) findViewById(R.id.buttonhex);
bascii =(Button) findViewById(R.id.buttonascii);
butf8 =(Button) findViewById(R.id.buttonutf8);
bhex.setOnClickListener(this);
bascii.setOnClickListener(this);
butf8.setOnClickListener(this);
resources = getResources();
createTab(tabs);
Intent startingIntent = getIntent();
if (startingIntent != null) {
b = startingIntent.getExtras();
if (b == null) {
//Toast.makeText(getApplicationContext(),"Bad
Bundle",Toast.LENGTH_LONG).show();
} else {
_tagitem = TagItem.fromBundle(b);
populateTagInfo(_tagitem);//populate tab info with
overall information from the tag
populateTagNdef(_tagitem); //populate ndef tab with
detailed information from ndef record
populateMifare(_tagitem);//populate mifare tab with
detailed information from MIFARE record
performIntent();//read with type of NDEF record is
supported and prompts user if wants to perform intent
//Toast.makeText(getApplicationContext(),"Info
found",Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(),"Info not
found",Toast.LENGTH_LONG).show();
}
}
//textrecord click event, if customer press on textview will get the
intent and do something
@Override
public void onClick(View v) {
if(scanBut.getId()==v.getId())
{
backToScan();
}
if(textrecord.getId()==v.getId())
{
performIntent();
}
if(bhex.getId()==v.getId())
{
Intent displayinfo = new Intent(this, MifareRecord.class);
126
displayinfo.putExtra("tagitem",b);
displayinfo.putExtra("recordtype","hex");
startActivity(displayinfo);
}
if(bascii.getId()==v.getId())
{
Intent displayinfo = new Intent(this, MifareRecord.class);
displayinfo.putExtra("tagitem",b);
displayinfo.putExtra("recordtype","ascii");
startActivity(displayinfo);
}
if(butf8.getId()==v.getId())
{
Intent displayinfo = new Intent(this, MifareRecord.class);
displayinfo.putExtra("tagitem",b);
displayinfo.putExtra("recordtype","utf8");
startActivity(displayinfo);
}
}
//back to scan page
public void backToScan()
{
finish();
}
//if user click on ndef record, this call will perform the associated
action
public void performIntent()
{
if(textTypeOfrecord.contentEquals("URI"))
{
getIntentForUri(uriGlobal);
}else{
if(textTypeOfrecord.contentEquals("SmartPoster"))
{
getIntentForUri(uriGlobal);
}if(textTypeOfrecord.contentEquals("Text"))
{
openMyDialog(TEXT);
}
}
}
//assign name and icon to each tab
private void createTab(TabHost _tabs)
{
//access to our other application resources
_tabs.addTab(_tabs.newTabSpec("tag_info").setIndicator(getString(R.strin
g.taginfo),
127
resources.getDrawable(R.drawable.tab_tag)).setContent(R.id.taginfo));
_tabs.addTab(_tabs.newTabSpec("ndef").setIndicator(getString(R.string.nd
ef),
resources.getDrawable(R.drawable.tab_ndef)).setContent(R.id.ndef));
_tabs.addTab(_tabs.newTabSpec("mifare").setIndicator(getString(R.string.
mifare),
resources.getDrawable(R.drawable.tab_mifare)).setContent(R.id.mifare));
_tabs.setCurrentTab(0);
}
//populate information about the tag on the tab general info
private void populateTagInfo(TagItem _tagitem)
{
tagID_ti.setText(_tagitem.tagid);
hashCode_ti.setText(_tagitem.hashcode);
if(_tagitem.mTechList.length>0){
lvTag_ti.setAdapter(new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,_tagitem.mTechLi
st));
}
}
//populate mifare tab
private void populateMifare(TagItem _tagitem)
{
mifare = _tagitem.mifare;
technology_Data.setText(mifare[0]);
hash_Data.setText(mifare[1]);
size_Data.setText(mifare[2]);
type_Data.setText(mifare[3]);
sectors_Data.setText(mifare[4]);
blocks_Data.setText(mifare[5]);
}
//populate information about NDEF data
private void populateTagNdef(TagItem _tagitem)
{
Parcelable[] rawMsgs = _tagitem.rawMsgs;
String [] ndefstring=_tagitem.ndefstring;
ndefname.setText(ndefstring[0]);
hashCode_ndef.setText(ndefstring[1]);
getMaxsize_ndef.setText(ndefstring[2]);
type_ndef.setText(ndefstring[3]);
if(ndefstring[4].contentEquals("true"))
{
checkcanmakereadonly.setChecked(true);
}
if(ndefstring[5].contentEquals("true"))
128
{
checkiswritable.setChecked(true);
}
NdefMessage[] msgs;
NdefMessage msg2 = (NdefMessage) rawMsgs[0];
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
} else {
// Unknown tag type
byte[] empty = new byte[] {};
NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN,
empty, empty, empty);
NdefMessage msg = new NdefMessage(new NdefRecord[]
{record});
msgs = new NdefMessage[] {msg};
}
buildTagViews(msgs,msg2);
}
//open the ndef message and get the records
void buildTagViews(NdefMessage[] msgs,NdefMessage msg) {
String [] _records;
UriRecord _UriRecord;
TextRecord _TextRecord;
SmartPoster _SmartPoster;
String text;
if (msgs == null || msgs.length == 0) {
return;
}
// Build views for all of the sub records
List<ParsedNdefRecord> records = NdefMessageParser.parse(msgs[0]);
text = NdefMessageParser.typeOfRecord();
textTypeOfrecord=text;
final int size = records.size();
_records= new String[size];
if(text==null)
{
recordtype.setText("Unknown");
}else{
recordtype.setText(NdefMessageParser.typeOfRecord());
if(text.contentEquals("URI"))
{
_UriRecord= NdefMessageParser._UriRecord;
Uri uri=_UriRecord.getUri();
uriGlobal=uri;
String uritype = getUriString(uri);
messagesize_ndef.setText(Integer.toString(uri.toString().length()));
129
if(uritype.contentEquals("tel"))
{
//textTypeOfrecord="tel";
textrecord.setText(uri.toString());
imagerecord.setImageDrawable(resources.getDrawable(R.drawable.call));
}else{if(uritype.contentEquals("sms")){
//textTypeOfrecord="sms";
textrecord.setText(uri.toString());
imagerecord.setImageDrawable(resources.getDrawable(R.drawable.smsgreen))
;
}else{
//textTypeOfrecord="url";
textrecord.setText(uri.toString());
imagerecord.setImageDrawable(resources.getDrawable(R.drawable.web));
}
}
}else{ if(text.contentEquals("Text"))
{
_TextRecord =NdefMessageParser._TextRecord;
textRecord=_TextRecord.getText();
textrecord.setText(_TextRecord.getText());
messagesize_ndef.setText(Integer.toString(_TextRecord.getText().length()
));
imagerecord.setImageDrawable(resources.getDrawable(R.drawable.textred));
}else{
_SmartPoster = NdefMessageParser._SmartPoster;
_UriRecord=_SmartPoster.getUriRecord();
Uri uriSP=_UriRecord.getUri();
uriGlobal=uriSP;
if(_SmartPoster.getTitle()!=null){
textrecord.setText(uriSP.toString());
textrecord2.setText("Title"+_SmartPoster.getTitle().getText().toString()
);
textrecord3.setText("Action:"+_SmartPoster.mAction.toString());
messagesize_ndef.setText(Integer.toString(uriSP.toString().length()+_Sma
rtPoster.getTitle().getText().toString().length()));
}else{
textrecord.setText(uriSP.toString());
textrecord2.setText("Action:"+_SmartPoster.mAction.toString());
messagesize_ndef.setText(Integer.toString(uriSP.toString().length()));
}
130
imagerecord.setImageDrawable(resources.getDrawable(R.drawable.sp));
}
}
}
}
//get tel number from a URI record
public String getNumber(Uri uri)
{
String ssp = uri.getSchemeSpecificPart();
int offset = ssp.indexOf(':');
if (offset >= 0) {
ssp = ssp.substring(offset, ssp.length());
}
return ssp;
}
//get number and body of a SMS URI record
public String[] getSMS(Uri uri)
{
String ssp = uri.getSchemeSpecificPart();
String ssptemp;
String ssBody;
String [] smsdata = new String[2];
int offset; //= ssp.indexOf(':');
int offset2 = ssp.indexOf('?');
if (offset2 >= 0) {
ssptemp = ssp.substring(0, offset2);
offset = ssp.indexOf('=');
ssBody=ssp.substring(offset+1,ssp.length());
smsdata[0]=ssptemp;
smsdata[1]=ssBody;
}
return smsdata;
}
//get intent for each type of URI, send SMS, do a Call or open a browser
public void getIntentForUri(Uri mUri) {
String scheme = mUri.getScheme();
if(textTypeOfrecord.equals("Text"))
{
openMyDialog(TEXT);
}else{
if ("tel".equals(scheme)) {
if(isNetworkAvailable())
{
openMyDialog(DOCALL);
}else{
showAlert(NONETWORK);
}
//return new Intent(Intent.ACTION_CALL, mUri);
} else if ("sms".equals(scheme) || "smsto".equals(scheme)) {
131
//return new Intent(Intent.ACTION_SENDTO, mUri);
if(isNetworkAvailable())
{
openMyDialog(SENDSMS);
}else{
showAlert(NONETWORK);
}
//sendSMS(mUri);
} else {
if(isNetworkAvailable())
{
openMyDialog(OPENBROWSER);
}else{
showAlert(NONETWORK);
}
//return new Intent(Intent.ACTION_VIEW, mUri);
}
}
}
//gets the type of URI, tel, sms or url;
public String getUriString(Uri mUri) {
String scheme = mUri.getScheme();
boolean tel = "tel".equals(scheme);
boolean sms = "sms".equals(scheme) || "smsto".equals(scheme);
if (tel || sms) {
String ssp = mUri.getSchemeSpecificPart();
int offset = ssp.indexOf('?');
if (offset >= 0) {
ssp = ssp.substring(0, offset);
}
if (tel) {
return "tel";
// return context.getString(R.string.action_call,
// PhoneNumberUtils.formatNumber(ssp));
} else {
return "sms";
// return; //context.getString(R.string.action_text,
//PhoneNumberUtils.formatNumber(ssp));
}
} else {
return mUri.toString();
}
}
//opens the browser with the URL from the NDEF record
public void openURL(Uri mUri)
{
try {
Intent productURL = new
Intent("android.intent.action.VIEW",mUri
);
startActivity(productURL);
} catch (Exception ee) {
Log.e("Open URL", "Navigation Failed", ee);
}
132
}
//do a voice call
public void call(Uri mUri) {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(mUri);
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Call", "Call failed", activityException);
}
}
//send a SMS
public void sendSMS(Uri uri) {
try {
String[] numberbody = getSMS(uri);
Intent sendIntent = new Intent(Intent.ACTION_VIEW );
sendIntent.putExtra("address", numberbody[0]);
sendIntent.putExtra("sms_body", numberbody[1]);
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("SMS", "SMS failed", activityException);
}
}
//opens a dialog box
public void openMyDialog(int id) {
showDialog(id);
}
//creates a dialog box to prompt the user about the action to perfom
based on the NDEF record
@Override
protected Dialog onCreateDialog(int id) {
Builder builder = new AlertDialog.Builder(this);
boolean typeofmessage=true;
final int idfinal = id;
switch (idfinal) {
case DOCALL:
// Create out AlterDialog
String number = getNumber(uriGlobal);
builder.setMessage("The app read a phone number: "+number+"
from the tag. Do you want to do a call?");
typeofmessage=true;
break;
case OPENBROWSER:
// Create out AlterDialog
builder.setMessage("The app read a URL
"+uriGlobal.toString()+" from the tag. Do you want to open a browser?");
break;
case SENDSMS:
// Create out AlterDialog
String[] numberbody = getSMS(uriGlobal);
133
builder.setMessage("The app intercepted a SMS request. Do
you want to send a SMS to " +
""+numberbody[0]+" with the body\""
+numberbody[1]+"\" ?");
typeofmessage=true;
break;
case TEXT:
// Create out AlterDialog
builder.setMessage("The app intercepted a Text Record from
the tag with the content: \""+textRecord);
typeofmessage=false;
break;
}
if(typeofmessage)
{
builder.setCancelable(true);
builder.setPositiveButton("Yes", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//MainActivity.this.finish();
if(idfinal==DOCALL)
{
call(uriGlobal);
}
if(idfinal==OPENBROWSER)
{
openURL(uriGlobal);
}
if(idfinal==SENDSMS)
{
sendSMS(uriGlobal);
}
}
});
builder.setNegativeButton("No", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Toast.makeText(getApplicationContext(),"Activity
will continue",Toast.LENGTH_LONG).show();
}
});
}else{
builder.setPositiveButton("OK", new
DialogInterface.OnClickListener() {
// Save the data from the UI to the database - already
done
public void onClick(DialogInterface arg0, int arg1) {
}
});
}
AlertDialog dialog = builder.create();
134
dialog.show();
return super.onCreateDialog(id);
}
//Check if there is coverage
public boolean isNetworkAvailable() {
Context context = getApplicationContext();
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null, otherwise
check if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}else{
return false;
}
}
private void showAlert(int alertCase) {
// prepare the alert box
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
switch (alertCase) {
case NETWORK: // Communication Error
alertbox.setMessage("Tag reading error");
break;
case OTHERS: // Communication Error
alertbox.setMessage("Exection, see logs");
break;
case NONETWORK: // Communication Error
alertbox.setMessage("No Network available, check
connectivity on the wireless menu");
break;
}
// set a positive/yes button and create a listener
alertbox.setPositiveButton("OK", new
DialogInterface.OnClickListener() {
// Save the data from the UI to the database - already done
public void onClick(DialogInterface arg0, int arg1) {
startActivity(new
Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
});
// display box
alertbox.show();
}
}
135
Class MifareRecord.java
package nfc.master;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MifareRecord extends Activity{
public ArrayList<String> AlistTag;
private static ListView lvTag;
Bundle btagItem;
String recordtype;
TagItem _tagitem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mifarerecords);
lvTag = (ListView) findViewById(R.id.listTag);
Intent startingIntent = getIntent();
if (startingIntent != null) {
btagItem = startingIntent.getExtras().getBundle("tagitem");
recordtype
=startingIntent.getExtras().getString("recordtype");
if (btagItem== null || recordtype ==null) {
Toast.makeText(getApplicationContext(),"Bad
Bundle",Toast.LENGTH_LONG).show();
} else {
_tagitem = TagItem.fromBundle(btagItem);
populateListView(_tagitem);//populate mifare tab with
detailed information from MIFARE record
}
} else {
Toast.makeText(getApplicationContext(),"Info not
found",Toast.LENGTH_LONG).show();
}
}
//populate information from the mifare record in the listview
private void populateListView(TagItem _tagitem)
{
AlistTag = new ArrayList<String>();
if(recordtype.equals("hex"))
{
lvTag.setAdapter(new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,_tagitem.content
MifareHEX));
}else{if(recordtype.equals("utf8")){
lvTag.setAdapter(new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,_tagitem.content
MifareUTF8));
136
}else{
lvTag.setAdapter(new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,_tagitem.content
MifareASCII));
}
}
}
}
Class AndroidManisfest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionName="1.0" android:versionCode="1" package="nfc.master">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-feature android:name="android.hardware.nfc"
android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission android:name="android.permission.WRITE_SMS" />
<application android:name="NFCApplication"
android:configChanges="orientation|keyboardHidden|keyboard"
android:persistent="true"
android:theme="@android:style/Theme.Black"
android:allowClearUserData="true" android:label="@string/app_name"
android:icon="@drawable/vodafoneicon">
<activity android:name=".Scantag"
android:configChanges="orientation|keyboardHidden|keyboard">
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action
android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action
android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<intent-filter>
137
<action
android:name="android.nfc.action.TAG_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/tagtec" />
</activity>
<activity android:name=".Splash"
android:configChanges="orientation|keyboardHidden|keyboard">
<intent-filter>
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard"
android:label="@string/app_name">
<intent-filter>
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".TagDetail"
android:configChanges="orientation|keyboardHidden|keyboard">
<intent-filter android:label="@string/view_mifareclassic">
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".MifareRecord"
android:configChanges="orientation|keyboardHidden|keyboard">
<intent-filter android:label="@string/view_mifareclassic">
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>