sistema movel baseado em android-nfc para...
TRANSCRIPT
0
UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA
ESCOLA SUPERIOR DE TECNOLOGIA
ENGENHARIA DE COMPUTACAO
ANDRE LIRA MOREIRA
SISTEMA MOVEL BASEADO EM ANDROID-NFC
PARA CONEXAO AUTONOMA EM HOTSPOTS
Manaus
2013
ANDRE LIRA MOREIRA
SISTEMA MOVEL BASEADO EM ANDROID-NFC PARA CONEXAO
AUTONOMA EM HOTSPOTS
Trabalho de Conclusao de Curso apresentado
a banca avaliadora do Curso de Engenharia
de Computacao, da Escola Superior de
Tecnologia, da Universidade do Estado do
Amazonas, como pre-requisito para obtencao
do tıtulo de Engenheiro de Computacao.
Orientador: Prof. Dr. Carlos Maurıcio Serodio Figueiredo
Manaus
2013
ii
Universidade do Estado do Amazonas - UEA
Escola Superior de Tecnologia - EST
Reitor:
Cleinaldo de Almeida Costa
Vice-Reitor:
Raimundo de Jesus Teixeira Barradas
Diretor da Escola Superior de Tecnologia:
Me. Cleto Cavalcante de Souza Leal
Coordenador do Curso de Engenharia de Computacao:
Dr. Raimundo Correa de Oliveira
Coordenador da Disciplina Projeto Final:
Me. Tiago Eugenio de Melo
Banca Avaliadora composta por: Data da Defesa: 27/11/2013.
Prof. Dr. Carlos Maurıcio Serodio Figueiredo (Orientador)
Prof. Dr. Raimundo Correa de Oliveira
Prof. Dr. Jucimar Maia da Silva Junior
CIP - Catalogacao na Publicacao
M835s MOREIRA, Andre
Sistema Movel baseado em Android-NFC para conexao autonoma em Hots-
pots / Moreira Andre; [orientado por] Prof. Dr. Carlos Maurıcio Serodio Fi-
gueiredo - Manaus: UEA, 2013.
240 p.: il.; 30cm
Inclui Bibliografia
Trabalho de Conclusao de Curso (Graduacao em Engenharia de Computa-
cao. Universidade do Estado do Amazonas, 2013.
CDU: 004.45
iii
ANDRE LIRA MOREIRA
SISTEMA MOVEL BASEADO EM ANDROID-NFC PARA
AUTENTICACAO EM HOTSPOTS
Trabalho de Conclusao de Curso apre-
sentado a banca avaliadora do Curso de
Engenharia de Computacao, da Escola
Superior de Tecnologia, da Universidade do
Estado do Amazonas, como pre-requisito
para obtencaoo do tıtulo de Engenheiro de
Computacao.
Aprovado em: 27/11/2013BANCA EXAMINADORA
Prof. Carlos Maurıcio Serodio Figueiredo, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS
Prof. Jucimar Maia da Silva Junior, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS
Prof. Raimundo Correa de Oliveira, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS
v
Agradecimentos
Ao final desta importante etapa, torna-se di-
fıcil fazer agradecimentos sem poder citar to-
das as pessoas que me influenciaram ao longo
do desenvolvimento deste projeto, por isso
dedico a concretizacao deste sonho a todos.
E com um carinho especial, agradeco a Deus,
agradeco a minha famılia por amor e seu
crenca em minhas conquistas. A meu irmao
Andre Portela, por sua genialidade contagi-
ante, por seu apoio e amizade. A Priscilla Pe-
res, por sua cumplicidade, amizade e amor.
A meu orientador Maurıcio e aos demais ami-
gos professores, por sua dedicacao ao ensinar,
por sua paciencia e ajuda em momentos de
crise. Por fim ao INdT, ambiente onde ad-
quiri grandes amizades e conhecimentos.
vi
Resumo
Este projeto tem como objetivo apresentar todos os passos efetuados com no desenvol-
vimento de um sistema movel baseado em Android-NFC, capaz de realizar conexoes sem
fio entre smartphones Android e hotspots Wi-Fi, ao receber seus parametros de configura-
cao atraves de eventos Tap em Tags NFC. Esperando que estas informacoes esclarecam a
comunidade desenvolvedora de software do Estado do Amazonas sobre as comodidades e
possibilidades em automacao providas pela utilizacao correta da tecnologia NFC. Todas as
questoes referentes a sua modelagem conceitual, arquitetura de sistema e implementacao
serao abordadas e explicadas.
Palavras Chave: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC,
Hotspot, smartphone
vii
Abstract
This project has the purpose to present all the steps taken on the creation of an Android-
NFC technology based mobile system, capable of performing wireless connections between
a Android smart-phones device and Wi-Fi hotspots by receiving their configuration pa-
rameters from a Tap event on a NFC TAG. Hopping that these information provides
enlightening to the Amazon software developer community about the commodities and
automation possibilities provided by the use right use of NFC technology. All matters
regarding its conceptual design, system architecture and implementation will be concerned
and therefore explained.
Key-words: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC, Hotspot,
smartphone
viii
Sumario
Lista de Tabelas xi
Lista de Figuras xii
Lista de Codigos xiii
1 Introducao 1
1.1 Contextualizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Descricao do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2 Objetivos Especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Referencial teorico e trabalhos relacionados 6
2.1 Decisoes Tecnologicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Tecnologia Near Field Communication - NFC . . . . . . . . . . . . 7
2.1.1.1 Definicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1.2 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1.3 Formas de utilizacao . . . . . . . . . . . . . . . . . . . . . 8
2.1.1.4 Especificacoes essenciais . . . . . . . . . . . . . . . . . . . 8
2.1.1.5 Aplicacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1.6 Elementos NFC Passivos - Tags . . . . . . . . . . . . . . . 11
2.1.1.6.0.1 Definicao . . . . . . . . . . . . . . . . . . . 11
2.1.1.6.0.2 Composicao . . . . . . . . . . . . . . . . . 12
2.1.1.6.0.3 Tipos . . . . . . . . . . . . . . . . . . . . . 13
2.1.1.7 Dispositivos Celulares Suportados . . . . . . . . . . . . . . 14
ix
2.1.1.8 Estimativas futuras . . . . . . . . . . . . . . . . . . . . . . 17
2.1.2 Ecossistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.2.1 Windows Phone 7 . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2.2 Symbiam OS . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2.3 Meego OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2.4 Android OS . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2.5 Windows Phone 8 . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3 NFC Forum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3.1 Historia do NFC Forum . . . . . . . . . . . . . . . . . . . 19
2.1.3.2 Padronizacao Ndef por NFC forum . . . . . . . . . . . . . 20
2.2 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1.1 android.net.wifi . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1.2 android.nfc . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Eclipse IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Desenvolvimento Tecnico 24
3.1 Especificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.0.1 Definicao de solucao . . . . . . . . . . . . . . . . . . . . . 24
3.1.0.2 Identificacao de Hotsposts . . . . . . . . . . . . . . . . . . 26
3.1.0.3 Estruturacao de dados em Tags NFC - Ndef . . . . . . . 28
3.1.0.4 Acoes definidas . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.0.5 Arquitetura de solucao . . . . . . . . . . . . . . . . . . . . 30
3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1 Metodologia de desenvolvimento . . . . . . . . . . . . . . . . . . . . 35
3.3 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.1 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2 Etapa NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2.1 NFC Foreground Dispacher . . . . . . . . . . . . . . . . . 39
3.3.2.2 Classe NfcDefaultProcessor . . . . . . . . . . . . . . . . . 41
3.3.2.2.0.4 Escrita de Tag NFC . . . . . . . . . . . . 42
3.3.2.2.0.5 Leitura de Tag NFC . . . . . . . . . . . . 43
3.3.3 Etapa Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxo completo. . . . . 47
3.3.4.1 NfcWriterActivity . . . . . . . . . . . . . . . . . . . . . . 47
3.3.4.2 MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . 48
x
3.4 Conclusoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4 Testes e Avaliacao 52
4.1 Material Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Casos de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2.1 Gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2.2 Fluxo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Avaliacao de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5 Conclusao 60
5.1 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Referencias Bibliograficas 63
xi
Lista de Tabelas
2.1 Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao
as suas especificacoes tecnicas. [NXP2009] . . . . . . . . . . . . . . . . . . 14
2.2 Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao
as suas aplicacoes. [NXP2009] . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1 Product Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
xii
Lista de Figuras
2.1 Modulo leitor NFC gerando campo eletromagnetico incidente sobre um ele-
mento NFC passivo. [S.A. and M.2010] . . . . . . . . . . . . . . . . . . . . 9
2.2 Um modulo leitor RFID atuando sobre um elemento RFID passivo possui
as mesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum
et al.2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Possıveis Aplicacoes da tecnologia NFC segundo [Forum2013]. . . . . . . . 11
2.4 Tag NFC tipo 1 em relacao a seu tamanho. . . . . . . . . . . . . . . . . . 12
2.5 Raio X de uma Tag NFC composta por circuito ASIC e antena. . . . . . . 12
2.6 Raio X de um Smartcard NFC por [Coshum et al.2013] . . . . . . . . . . . 13
2.7 Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013] . 16
2.8 PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia -
[UOL2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1 Disposicao de redes sem fio em uma localidade . . . . . . . . . . . . . . . . 25
3.2 Proposta de solucao Utilizando Tags NFC . . . . . . . . . . . . . . . . . . 26
3.3 Campos identificadores Wi-Fi armazenados em TAG NFC . . . . . . . . . 27
3.4 Fluxo gerados eventos de leitura de Tags NFC em sistema operacional An-
droid . [Developer2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 Estrutura de mensagem Ndef. [Developer2007] . . . . . . . . . . . . . . . . 29
3.6 Ideia inicial de funcionamento do aplicativo. . . . . . . . . . . . . . . . . . 31
3.7 Diagrama de sequencia do modulo write NFC . . . . . . . . . . . . . . . . 32
3.8 Diagrama de sequencia do modulo responsavel pela conexao WiFi e . . . . 32
3.9 Diagrama de navegacao do aplicativo . . . . . . . . . . . . . . . . . . . . . 33
3.10 Diagrama de classes do projeto. . . . . . . . . . . . . . . . . . . . . . . . . 34
3.11 Packet NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.12 Packet wifiController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.13 Tela de gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 48
xiii
4.1 Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC . . . . . . 54
4.2 Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC . . . 55
4.3 Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC . . . 56
4.4 Gravacao dos parametros handover Wi-Fi de uma rede valida em uma Tag
NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5 Desativacao manual do adaptador de rede seguido por ativacao automatica
via Tap em Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6 Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot 58
4.7 Eventos Tap NFC em Tags NFC distintas, com parametros distintos . . . 59
xiv
Lista de Codigos
3.3.1 Arquivo Android Manifest (xml) . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.2 Implementacao da interface Foreground Dispatcher . . . . . . . . . . . . . 41
3.3.3 Instanciacao, habilitacao e desativacao do modo Foreground Dispacher . . 42
3.3.4 Implementacao de escrita em formato Ndef em Tag NFC . . . . . . . . . . 43
3.3.5 Criando NdefRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.6 Leitura de Tag NFC e extracao de records SSID Password. . . . . . . . . 44
3.3.7 Implementacao WiFiController . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.8 Implementacao WiFiConfigurator . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.1 Implementacao e processo de conexao Wi-Fi via Tag NFC . . . . . . . . . 50
3.4.2 Implementacao de acao realizada no layout de gravacao de Tags NFC . . . 51
Capıtulo 1
Introducao
1.1 Contextualizacao
Segundo [Forum2013], o ecossistema ambientado pela tecnologia Near Field Communi-
cation-NFC encontra-se plenamente desenvolvido e difuso dentre os paıses que compoem
os continentes Europeu, Asiatico, Oceania e Norte Americano. No entanto, esta nao e
a realidade do cenario atual brasileiro, cujos benefıcios sao pouco conhecidos, tanto pelos
usuarios de smartphones como pela comunidade de desenvolvedores de software embarcado,
resultando em um ecossistema imaturo ainda em fase de desenvolvimento.
A razao para tal deve-se principalmente ao fato de que a partir de sua data de de-
senvolvimento, ano de 2002, a tecnologia NFC foi disponibilizada em poucos modelos de
dispositivos moveis direcionados ao mercado brasileiro conforme pode ser visualizado na
referencia [Arena2013]. Alem disso, estes eram classificados como smartphones high-end,
cujo publico-alvo destina-se a um mercado especıfico com consumidores de grande poder
aquisitivo, segundo [Sharma2011] e [Guy2009], este fato dificultou a popularizacao da tec-
nologia entre as massas de baixa renda.
Segundo [Arena2013] e [Agar2004], os smartphones ganharam popularidade, o que era
tendencia se tornou uma hegemonia, chegando a ocorrer muitos casos onde os usuarios
substituiram seuspersonal computers - PCs por smartphones. A quantidade de dispositivos
no mercado atual brasileiro passou a ser expressiva e os consumidores se tornaram cada
Descrição do Problema 2
vez mais exigentes, gerando grande concorrencia entre empresas montadoras de telefonia
celular: Samsung, Apple, Nokia, HTC, Motorola, Sony e etc.
Isso levou ao desenvolvimento de dispositivos celulares com especificacoes de hardware
adequadas as necessidades de cada tipo de usuario consumidor e aos requisitos exigidos
pelos ecossistemas de software utilizados. Estes ecossistemas sao constituıdos e suportados
pelas plataformas utilizadas: Android, Windows Phone, IOS, Meego, entre outras.
Segundo [Coshum et al.2013], [Hessel et al.2011] e [Forum2013], parte do ecossistema
NFC esta voltado para aplicacoes embarcadas independentes do ecossistema de telefonia
movel, agregando valor a tecnologia.
1.2 Descricao do Problema
Durante a ultima decada, houveram saltos evolutivos significativos em todas as areas
tecnologicas. Abordando como escopo a area de tecnologia de telecomunicacoes, pode-se
ressaltar o surgimento e aplicacao de diversos componentes de hardware, como processa-
dores dual-core e quad-core, modulos de memoria RAM, modulos de conectividade sem
fio, displays touchscreen, entre outros que possibilitaram a compilacao de dispositivos de
telefonia movel muito mais potentes e com maior desempenho.
Estas novas possibilidades em hardware necessitaram do suporte de sistemas operacio-
nais embarcados robustos com conceitos inovadores em usabilidade e passıveis de conexao
com a internet, criando infinitas possibilidades de servicos ao usuario, podendo-se citar
como principais o acesso a redes sociais, servicos de geo-localizacao , streaming de vıdeos,
chamadas de voz por IP, jogos e entretenimento.
Tao logo o usuario experimentou tais novidades, surgio a necessidade de se permane-
cer online permanentemente, com a maior largura de banda para transferencia de dados
possıvel. Com a finalidade de sanar tal necessidade, muitos administradores de localidades
- Centros medicos, aeroportos, Shopping centers, ambientes domesticos e corporativos -
decidiram disponibilizar internet aos seus visitantes e/ou colaboradores, de forma gratuita
ou nao, por meio de hotspots, que sao nada mais que pontos de acesso Wi -Fi.
Para que a conexao seja concluıda com sucesso, deve-se executar uma serie de passos
de configuracao entre o dispositivo movel e a rede desejada. Buscando prover comodidade
Objetivos 3
e praticidade ao usuario e uma melhor distribuicao do servico oferecido, eis que surge a ne-
cessidade de automatizar o processo de conexao entre o smartphone e o hotspot, atenuando
a interacao do usuario tanto com seu dispositivo quanto com os agentes responsaveis por
fornecer as configuracoes do hotspot alvo. Confome pode ser visto [Forum2013] e [Coshum
et al.2013], pode-se adequar conceitos tecnologicos aos requisitos de qualidade de forma
eficiente quando utilizando a tecnologia Near Field Communication-NFC como recurso
provedor de automacao, por abranger quantidade significativas de possibilidades em solu-
coes.
1.3 Objetivos
1.3.1 Objetivos Gerais
Esta monografia tem como objetivo apresentar a comunidade academica da Universi-
dade do Estado do Amazonas uma solucao ao problema descrito na secao anterior, uti-
lizando a tecnologia NFC como base para automatizar processos de conexao entre um
dispositivo movel e redes Wi -Fi, mostrando a padronizacao criada por NFC Forum - (Ndef
- que permite a utilizacao da tecnologia NFC de forma simples e portavel para diversos
sistemas operacionais.
1.3.2 Objetivos Especıficos
• Apresentar uma solucao que atenda aos requisitos de automatizacao utilzando Tags
NFC.
• Utilizar a padronizacao internacional -Ndef - da tecnologia NFC .
• Utilizar APIs disponıveis para S.O. Android versao 4.0 ou superior.
• Identificar as etapas efetuadas pelo usuario ao iniciar um processo de conexao Wi -Fi
e possıvel pontos para automatizacao.
• Desenvolver um prototipo de aplicativo para S.O. Android 4.1.
Justi�cativa 4
1.4 Justificativa
A tecnologia NFC, vem acompanhando nativamente diversos modelos de Smartphones
produzidos na atualidade. Empresas renomadas no ramo de telecomunicacao movel, como
Samsung, Nokia, Motorola e Sony, tem investido nesta tecnologia, disponibilizando APIs
de desenvolvimento para seus respectivos ambientes. E conforme mencionado, a tecno-
logia NFC encontra-se pouco difundida no Brasil, porem segundo [Brasil2013], ela vem
gradativamente ganhando notoriedade. Reduzindo a abrangencia desta afirmacao para um
escopo ainda mais focalizado referenciando apenas o desenvolvimento da tecnologia NFC
no Estado do Amazonas, pode ser observado o surgimento de uma tendencia por parte dos
institutos de PD, como o Instituto Nokia de Tecnologia - IndT [Developer2012], a desen-
volver projetos, visando proporcionar ao usuario de smartphones experiencias mostrando
as diversas facilidades previstas pela tecnologia.
No entanto, falta muito para que a tecnologia NFC alcance um alto nıvel de populariza-
cao entre os usuarios finais de smarthphones no estado do Amazonas, tornado importante
desenvolver uma cultura que vise diminuir esse deficit de utilizacao.
Por se tratar de uma tecnologia Open Source, pode ser implementada gratuitamente
por quaisquer desenvolvedores de software, livre dos custos gerados pela compra de licencas
de utilizacao e desenvolvimento ou pagamentos de royalties aos proprietarios de patentes.
E uma tecnologia com grandes possibilidades de crescimento, baixo custo de implantacao
e de facil desenvolvimento tecnico, alem de atuar como fonte de incentivo a inovacao.
A escolha de utilizacao de Near Field Communication - NFC em Sistema Operacio-
nal Android deve-se principalmente ao fato de ser o ambiente de telefonia movel de maior
popularidade nos dias atuais conforme citado em [Terra2013] e que seus concorrentes: Sym-
bian(Nokia), Meego(Nokia), WindowsPhone(Nokia, Samsung) e IOS(Apple)) apresentam
problemas como descontinuidade, imaturidade ou ausencia de dispositivos portadores de
hardware NFC. Conforme pode ser visto em [Developer2013a] e [Developer2008], o sistema
operacional Android possui uma API de desenvolvimento bem documentada, provida de
diversos exemplos de codificacao, permitindo um facil esclarecimento de duvidas e aplica-
Estrutura do Documento 5
coes de Design Patterns ;
Essa tecnologia em conjunto com o sistema operacional Android permitem a utilizacao
de linguagem de programacao Java para o desenvolvimento de aplicativos e nao mostra
fatores negativos realmente fortes que motivem desenvolvedores de software a nao aplica-los
quando possivel.
1.5 Estrutura do Documento
Esta monografia esta organizada da seguinte forma: O capıtulo 2 apresenta conceitual-
mente as tecnologias utilizadas no decorrer do desenvolvimento do projeto, assim como as
APIs e ferramentas utilizadas e trabalhos relacionados; no capıtulo 3 e abordada a totali-
dade do desenvolvimento tecnico do projeto, incluindo especificacoes tecnicas, arquitetura
e implementacao; o capıtulo 4 apresenta um descricao dos casos de testes realizados e re-
sultados obtidos. Por fim sao apresentadas no capıtulo 5 as consideracoes finais, onde sao
incluıdos a apresentacao de resultados e possıveis trabalhos futuros.
Capıtulo 2
Referencial teorico e trabalhos
relacionados
Este capıtulo aborda em detalhes as referencias teoricas tecnologicas e ferramentas uti-
lizadas durante a fase de desenvolvimento do projeto (capıtulo 3). Serao apresentados
conceitos, especificacoes e sera respondido o porque de sua utilizacao no projeto tendo em
vista a vasta quantidade de opcoes em tecnologias disponıveis atualmente.
2.1 Decisoes Tecnologicas
A maior decisao tecnologica neste projeto foi a escolha da tecnologia NFC como solucao
base desde o momento de sua concepcao, concretizando seu objetivo de apresentar suas po-
tencialidades e utilizacao pratica por meio de sua aplicacao na elaboracao uma arquitetura
de solucao viavel e satisfatoria.Devera tambem ser mencionada a escolha da padronizacao
internacional Ndef para a utilizacao da tecnologia NFC, e do ecossistema Android como
ambiente operacional para a solucao.
Decisões Tecnológicas 7
2.1.1 Tecnologia Near Field Communication - NFC
Conforme sera observado no capıtulo 3, a tecnologia NFC nao sera utilizada em sua
totalidade neste projeto. Sua utilizacao foi desenvolvida a partir do conceito de conexao
entre um elemento NFC ativo e um passivo. No entanto, por ser uma tecnologia pouco
conhecida, e interessante que seja abordada alem dos requisitos utilizados por carater de
conhecimento.
2.1.1.1 Definicao
Segundo [Hessel et al.2011], [Dias2010], [S.A. and M.2010] e [Coshum et al.2013] -
Near Field Communication ou Comunicacao de Campo Proximo refere-se a uma tecnologia
desenvolvida a partir de estudos provenientes da tecnologia Radio-Frequency Identification
- RFID, que possibilita trocar de informacoes entre dispositivos compatıveis sem o auxılio
de fiacao, de forma segura e rapida, contanto que os dispositivos sejam aproximados e
mantidos dentro de um limite mınimo para que a comunicacao ocorra com sucesso.
Assim que os dispositivos estejam suficientemente proximos, a comunicacao entre eles
e estabelecida automaticamente, sem necessidade de configuracoes adicionais, pareamento
ou autenticacao de usuario.
2.1.1.2 Funcionamento
Conforme mencionado em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013], a tec-
nologia NFC e fundamentada pelo princıpio fısico de inducao magnetica, onde a incidencia
de um campo magnetico sobre um circuito eletrico (espira) torna possıvel produzir uma
corrente eletrica induzida.Sendo que a ativacao de um modulo NFC ocorre quando ondas
eletromagneticas, geradas por um segundo modulo, sao captadas por suas antenas criando
canais de comunicacao, podendo ser de uma via, contando com um modulo transmissor e
um modulo receptor, ou de duas vias (peer-to-peer) contando com dois modulos transmis-
sores/receptores.
Decisões Tecnológicas 8
2.1.1.3 Formas de utilizacao
Um sistema NFC pode possuir dois tipos de elementos que podem ser ativos ou passivos.
Um dispositivo passivo e constituıdo por um modulo incapaz de gerar sinais de conexao,
enquanto o ativo possui tal capacidade sendo capaz de enviar, receber e interpretar sinais
eletromagneticos. Vale lembrar que uma conexao NFC so pode ser efetuada entre dois
modulos por vez. Dito isto, podem-se obter tres formas de utilizacao conforme citadas
em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013]:
1. Modo Read/Write - Leitura ou alteracao de dados em um dispositivo NFC passivo.
2. Modo Card Emulation - Dispositivo movel pode simular um smart card, no entanto
requer este possua um chip programavel dedicado a criptografia.
3. Modo Peer-to-Peer - Comunicacao entre dois dispositivos NFC ativos.
As figuras 2.1 e 2.2 mostram a criacao de um canal com uma via de comunicacao
onde o leitor NFC em conjunto com sua antena representam um modulo NFC embarcado
que pode estar presente em diversos dispositivos moveis. Este modulo gera um campo
magnetico que incide sobre um modulo NFC passivo nao alimentado retratado como Tag
NFC.
O princıpio de inducao magnetica faz com que este campo induza a criacao de uma
corrente eletrica que percorre o circuito do objeto passivo, alimentando-o. Uma vez que
o circuito esteja alimentado e funcional, ocorre o processo de leitura/escrita de dados na
Tag.
Ainda contemplando a figura 2.1, pode-se afirmar que se a Tag NFC fosse substituıda
por um modulo ativo, composto por outro conjunto de leitor e antena NFC,mo sistema seria
formado por dois modulos que captariam e interpretariam as ondas magneticas geradas
por cada ponta estabelecendo uma conexao Peer-to-Peer (P2P), onde ambos os modulos
enviam e recebem mensagens.
2.1.1.4 Especificacoes essenciais
Em comparacao as demais tecnologias sem fio, a tecnologia Near Field Communication
- NFC possui um campo de conexao com alcance extremamente curto. O campo magnetico
Decisões Tecnológicas 9
Figura 2.1: Modulo leitor NFC gerando campo eletromagnetico incidente sobre um ele-mento NFC passivo. [S.A. and M.2010]
gerado pelas antenas NFC presente em dispositivos moveis possui, em teoria, ate 10 cm
de alcance. No entanto, em meios praticos, este e reduzido para uma valor que oscila em
uma faixa de 1 a 4 centımetros conforme visto em: [Coshum et al.2013] e [Forum2013].
Devido a limitacao de comprimento de campo magnetico, para que uma conexao NFC
seja bem sucedida e necessario que os dispositivos transmissores/receptores sejam aproxi-
mados um do outro. Este procedimento intitula-se Tap, proveniente da lıngua inglesa que
segundo o dicionario [Michaelis2008], significa bater/encostar.
A tecnologia opera em uma faixa de frequencia de 13.56 MHz definida pela padronizacao
internacional ISO/IEC 18000-3 publicada no ano de 2004, mantendo taxas de transferencia
de dados variaveis dentro de uma faixa correspondente a 106 a 424 kbit/s de acordo com
as definicoes impostas pela padronizacao internacional ISO/IEC 18092:2013 em [Coshum
et al.2013], que especifica esquemas de modularizacao e taxas de transferencia de dados.
Esta taxa de transferencia pode ser considerada baixa, se comparada a prevista por
Decisões Tecnológicas 10
Figura 2.2: Um modulo leitor RFID atuando sobre um elemento RFID passivo possui asmesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum et al.2013]
tecnologias como Bluetooth ou Wi-Fi. No entanto, obtem-se um ganho consideravel em
economia de energia e em velocidade de conexao entre dispositivos chegando a ser menor
que - 0,1 s - segundo [Coshum et al.2013], caracterıstica que permite sua utilizacao como
bootstrap para a inicializacao de conexao atraves de protocolos sem fio mais robustos,
conforme informado na referencia [NXP2009].
2.1.1.5 Aplicacoes
Segundo [Coshum et al.2013] por fazer parte de sua natureza promover automatizacao
de tarefas realizadas por um sistema embarcado, a tecnologia NFC pode ser aproveitada
em uma grande quantidade de casos de uso.
Conforme pode ser visto na figura 2.3 seu leque de utilizacao varia desde a ativacao
e configuracao de dispositivos moveis a servicos ligados recursos ligados a automatizacao
residencial onde este atuaria em conjunto com um sistema micro processado para efetuar
acoes como: abertura de fechaduras e ativacao de perifericos gerais como lampadas e
eletrodomesticos.
Podendo afirmar que se os procedimentos de ativacao e desativacao de uma atividade
podem ser automatizados, esta automatizacao pode ser realizada atraves da utilizacao
Decisões Tecnológicas 11
correta da tecnologia NFC .
Figura 2.3: Possıveis Aplicacoes da tecnologia NFC segundo [Forum2013].
2.1.1.6 Elementos NFC Passivos - Tags
A figura 2.4 mostra um modulo NFC passivo, conhecido como Tag ou tarja NFC em
comparacao de tamanho em relacao a uma moeda. Esta abordagem mostra que e possıvel
utilizar a tecnologia NFC mesmo em casos que tenham como requisito a ocupacao de
um espaco fısico e peso reduzidos. Importante salientar que este item - Tag NFC - foi
essencial na elaboracao da solucao apresentada nesta monografia, sua importancia dentro
deste projeto sera apresentada na sessao de arquitetura de solucao no capitulo 3.
2.1.1.6.0.1 Definicao Tag NFC retrata um elemento NFC passivo, um modulo
capaz de reagir aos campos eletromagneticos gerados por dispositivos NFC ativos possibi-
litando que estes insiram novos dados para armazenagem ou extraia um conteudo previa-
mente armazenado conforme dito em [NXP2009] e [Coshum et al.2013].
Decisões Tecnológicas 12
Figura 2.4: Tag NFC tipo 1 em relacao a seu tamanho.
2.1.1.6.0.2 Composicao Analisando as figuras 2.5 e 2.6, podem-se identificar os
componentes que formam uma Tag NFC. Estes componentes sao uma antena NFC e um
circuito ASIC projetado exclusivamente para possibilitar os processos de leitura e escrita
de dados.
Nota-se tambem a similaridade entre Tags NFC e Smartcards, no entando a composicao
do circuito e diferenciada permitindo ao Smart Card possuir maior quantidade de memoria
e realizar operacoes com diferentes tipos de dados. Em ambos os casos tem-se a ausencia de
fontes de alimentacao, conforme mencionado anteriormente toda a energizacao do circuito
sera realizada por inducao magnetica.
As antenas /emphNFC presentes em elementos passivos nao sao capazes de gerar cam-
pos eletromagneticos, apenas os captam e reagem a seus estımulos. Por fim, o circuito
/emphASIC (circuito produzido com uma finalidade especıfica) e responsavel por interpre-
tar informacoes captadas pelas antenas e trata-las de forma adequada.
Figura 2.5: Raio X de uma Tag NFC composta por circuito ASIC e antena.
Decisões Tecnológicas 13
Figura 2.6: Raio X de um Smartcard NFC por [Coshum et al.2013]
2.1.1.6.0.3 Tipos Com a finalidade de nao subutilizar recursos, foram desenvolvi-
dos diversos modelos de TagAGs NFC, onde cada modelo visa alcancar uma adequacao
maxima ao tipo especıfico de utilizacao-alvo. Este estudo aborda informacoes relativas
apenas aos tipos de Tag que seguem ou que sao compatıveis com a padronizacao Ndef :
• Tipo 1 - Tag produzida em formatacao Ndef com 96 bytes de memoria.
• Tipo 2 - Tag produzida em formatacao Ndef com 48 ou 144 bytes de memoria.
• Tipo 3 - Tag produzida em formatacao Ndef com 1, 4 ou 9 kilobytes de memoria,
possuindo um valor monetario mais elevado que as de tipo 1 ou 2.
• Tipo 4 - Tag produzida em formatacao Ndef com 4 ou 32 kilobytes de memoria,
possuindo o maior custo monetario entre os demais tipos. Importante ressaltar que
este modelo permite a gravacao de conteudo ativo.
• MIFARE Classic - Tag compatıvel com formatacao Ndef, possuindo 0.192, 0.768 ou
3.584 kilobytes de memoria.
Ao planejar sua utilizacao em um projeto, deve-se estudar com cuidado as informacoes
apresentadas nas tabelas 2.1 e 2.2, afim de reconhecer qual o tipo mais adequando para
servir adequadamente como solucao, tendo em vista os requisitos do projeto em relacao
Decisões Tecnológicas 14
ao tamanho do espaco disponıvel para armazenamento de dados nas Tags, tipo de dados,
custo benefıcio, modo de utilizacao e suporte.
Tabela 2.1: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao assuas especificacoes tecnicas. [NXP2009]
2.1.1.7 Dispositivos Celulares Suportados
A porcao do ecossistema NFC voltada para telefonia movel e suportada por sua im-
plantacao em diversos dispositivos celulares produzidos pelos mais variados fabricantes.
Diferentemente de como ocorria no passado, onde a marca do fabricante em conjunto com
o hardware utilizado em cada um de seus dispositivos definiam as funcionalidades disponi-
bilizadas no aparelho, hoje o usuario consumidor de smartphones busca por servicos e isso
torna mais importante para o sucesso de um dispositivo o ecossistema operacional no qual
Decisões Tecnológicas 15
Tabela 2.2: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao assuas aplicacoes. [NXP2009]
ele opera e nao sua marca.
Incorporando a tecnologia NFC neste contexto, torna-se mais importante dizer em
quais sistemas operacionais ela esta presente e operante do que citar especificamente em
quais modelos de dispositivos ela se encontra.
Segundo [Arena2013], website internacional especializado em realizar comparativos en-
Decisões Tecnológicas 16
tre especificacoes de smartphones, podem ser encontrados mais de 250 modelos de celulares
de diferentes fabricantes, que utilizam a tecnologia NFC. A figura 2.7 mostra o resultado
de uma busca realizada no website, com a finalidade de coletar aparelhos que possuam NFC
e maior ranking de popularidade mundial.
Figura 2.7: Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013]
Decisões Tecnológicas 17
2.1.1.8 Estimativas futuras
O autor de [Hessel et al.2011], estima que a tecnologia NFC estara presente em 80 por
cento dos smartphones produzidos para o mercado Norte Americano. No entanto ainda nao
ha uma estimativa especıfica para o nicho brasileiro, mas observando sua difusao ao redor
do mundo e os incentivos relacionados ao seu desenvolvimento por parte dos fabricantes
de smartphones pode-se inferir que seu crescimento no Brasil e promissor e merecedor de
atencao.
2.1.2 Ecossistemas Operacionais
Durante a concepcao do projeto surgiu uma grande pergunta: Qual ecossistema ope-
racional utilizar para a implementacao da solucao? Esta pergunta resultou na escolha
e utilizacao do sistema operacional Android. No entanto, nao foi uma escolha aleatoria,
pois varios fatores influenciaram tal decisao. A princıpio, foram levantados os principais
sistemas operacionais utilizados em smartphones, o que resultou em:
• IOS - Apple Inc
• Windows Phone 7 - Nokia/Samsung
• Android OS - Samsung/HTC/Google/Sony
• Symbiam OS - Nokia
• Meego OS - Nokia
A partir desta lista, foram selecionados os sistemas operacionais que possuıam APIs que
permitissem a utilizacao de NFC em seus dispositivos. Esta etapa excluiu apenas o IOS
pertencente a Apple Inc., pois este ate o momento nao aderiu a utilizacao da tecnologia
NFC em seus smartphones.
A partir deste ponto, os sistemas operacionais restantes foram estudados individual-
mente com a finalidade de selecionar o que oferecesse maior suporte ao projeto. Apesar de
a escolha final ter preferenciado o ecossistema Android, seus concorrentes merecem mencao.
Decisões Tecnológicas 18
2.1.2.1 Windows Phone 7
Um sistema operacional promissor utilizado em smartphones Nokia (Linha Lumia) e
Samsung. No entanto, ainda encontrava-se em fase de amadurecimento, sendo o desenvol-
vimento de suas APIs e utilizacao de seus dispositivos de hardware por software, restritos a
desenvolvedores autorizados Nokia e Microsoft [Developer2013d]. Estes fatores motivaram
o descarte deste sistema operacional para o desenvolvimento do projeto.
2.1.2.2 Symbiam OS
Desenvolvido pela empresa Nokia e mantido pela empresa Accenture, foi bastante utili-
zado em smartphones Nokia. Sua ( API NFC) prove grande suporte ao desenvolvimento de
aplicativos baseados na tecnologia [Developer2013c]. No entanto seu descarte do projeto
ocorreu devido ao difıcil acesso a referencias de suporte a utilizacao de seu componente
Wi-Fi, onde, segundo a arquitetura da solucao presente no capitulo 3, devera ser utilizado
em conjunto com a tecnologia NFC.
2.1.2.3 Meego OS
Sistema operacional baseado em QT, desenvolvido em codigo aberto com kernel Linux,
pelas empresas Nokia e Intel com a finalidade de utilizacao em smartphones. Conforme
pode ser verificado em [Developer2013b] , possui APIs de controle de componentes NFC e
de conectividade Wi-Fi bem documentadas e de facil utilizacao, no entanto foi descartado
deste projeto por ter sido descontinuado em 2011, perdendo potencial de mercado para
solucoes pudessem ser implementadas.
2.1.2.4 Android OS
Atualmente e o sistema operacional de maior popularidade no mercado, foi desenvolvido
por Open Handset Alliance, liderada pelo Google. E utilizado em larga escala por varios
fabricantes de celulares como: HTC, Samsung, Sony, Motorola, LG e Positivo Informatica.
Sua popularidade e APIs bem documentadas serviram como incentivo a sua utilizacao
neste projeto. Porem, e importante mencionar que conforme pode ser visto em [Coshum
et al.2013] e [Developer2013a], a API de controleNFC so foi disponibilizada a partir de
Decisões Tecnológicas 19
sua versao 2.6.
2.1.2.5 Windows Phone 8
Sistema operacional criado pela Microsoft, utilizado em smartphones Nokia, nao entrou
como possıvel solucao ao projeto apenas por ter sido lancado posteriormente a finalizacao
da etapa de desenvolvimento do mesmo, entretanto merece mencao nesta monografia por
possuir APIs de desenvolvimento NFC e Wi-Fi bem documentadas, por constituir um
sistema operacional robusto e por ter um status de popularidade emergente, tendo potencial
para alcancar uma posicao de destaque no mercado.
2.1.3 NFC Forum
2.1.3.1 Historia do NFC Forum
Conforme abertamente divulgado por NFC Forum [Forum2013], em 2004 tres grandes
empresas fabricantes de eletronicos, Sony, Nokia e Philips se uniram e criaram um forum de
discursao para tratar das melhores formas de desenvolvimento da recem criada tecnologia
NFC, com as seguintes metas:
• Definir um padrao internacional de protocolos e parametros a serem seguidos em
projetos que envolvam a arquitetura de NFC.
• Incentivar o desenvolvimento da tecnologia e a utilizacao de dispositivos compatıveis.
• Trabalhar para garantir que os dispositivos NFC sigam todas as normas e especifica-
coes do forum.
• Criar uma cultura mundial de utilizacao da tecnologia por meio da disseminacao de
seu conhecimento.
Atualmente o NFC Forum conta com a participacao de mais de 170 empresas e cola-
boradores ao redor do mundo conforme [Forum2013].
Ferramentas 20
2.1.3.2 Padronizacao Ndef por NFC forum
A padronizacao internacional Ndef criada pelo NFC Forum constitui uma parte im-
portante do ecossistema NFC, pois e uma normalizacao internacional e multi-plataforma
de formas de melhor utilizacao da tecnologia. Diversas APIs relacionadas a sistemas ope-
racionais implementam as definicoes impostas pela formatacao Ndef, entre elas a API
Android.nfc conforme informacoes divulgadas por [Developer2013a].
O acronimo Ndef representa NFC Data Exchange Format ou Formatacao de troca de
dados NFC, importante mencionar que esta formatacao segue todos os requisitos impostos
pelas padronizacoes ISO que envolvem a tecnologia NFC. Detalhes mais profundos desta
padronizacao serao mencionados no decorrer desta monografia.
2.2 Ferramentas
Durante o processo de codificacao do projeto foram utilizadas ferramentas de suporte
ao desenvolvimento de software. Essas ferramentas auxiliam o desenvolvedor em questoes
referentes a utilizacao de APIs, indentacao de codigo e simulacao de testes. Em geral,
cada desenvolvedor de software utiliza um conjunto personalizado de ferramentas. Neste
projeto, com excecao do pacote de ferramentas Android SDK e APIs de desenvolvimento,
todas as outras podem ser substituıdas de modo a prover maior conforto aos seus usuarios.
2.2.1 Android SDK
Android Software Development Kit ou Android kit de desenvolvimento de software e
composto por diversas ferramentas voltadas para o desenvolvimento de aplicativos em pla-
taforma Android. Esta coletanea inclui um depurador, bibliotecas, um simulador, exemplos
de documentacao, de codigos e tutoriais [Developer2011]. Apesar da tecnologia NFC estar
presente desde a versao 2.6 do sistema operacional Android, para este projeto foi utilizada
a versao 4.1 - representada pela API 16 - onde podem ser encontrados recursos tais como:
android.net.wifi e android.nfc.
Trabalhos Relacionados 21
2.2.1.1 android.net.wifi
Esta API prove meios pelos quais as aplicacoes conseguem se comunicar com a ca-
mada de baixo nıvel controladora Wi-Fi. Permite as aplicacoes executarem comandos
de inicializacao, configuracao e finalizacao de conexoes sem fio, conforme informado na
referencia [Developer2008].
2.2.1.2 android.nfc
Esta API prove acesso as funcionalidades NFC de um dispositivo sob plataforma An-
droid, permite que os aplicativos manipulem mensagem com padronizacao Ndef gravadas
em Tags NFC ou dispositivos em modo Card Emullation, conforme informado na referen-
cia [Developer2013a].
2.2.2 Eclipse IDE
Toda a codificacao deste trabalho foi desenvolvida por meio da utilizacao da IDE Eclipse
distribuicao Indigo atualizado com um plugin Android SDK. Esta ferramenta e poderosa
quando se diz respeito a edicao de texto, permite uma codificacao rapida ao permitir na-
vegacao entre funcoes, APIs, documentacoes e ferramentas de depuracao. Alem de ser
altamente personalizavel de modo a permitir maior flexibilidade ao desenvolvedor de soft-
ware.
2.3 Trabalhos Relacionados
A inspiracao inicial deste projeto surgiu apos o conhecimentos das facilidades concedi-
das pela implementacao da tecnologia NFC em diversos casos de uso. Grande parte dessas
aplicacoes sao disponibilizadas em lojas virtuais pertencentes a cada ecossistema operaci-
onal, tais como: Android-Market para Android OS, Ovi-Store para Symbian OS e Meego
OS e Microsoft-Store para Windows Phone.
Seguindo pela linha de automacao, existem diversas implementacoes que utilizam a
tecnologia NFC como base para automatizar procedimentos e processos, destacando-se
servicos de compartilhamento de dados, onde o NFC e utilizado para prover uma conexao
Trabalhos Relacionados 22
rapida entre dispositivos moveis, enquanto a transferencia de dados e realizada por proto-
colos sem fio mais robustos como o Bluetooth ou o Wi-Fi, visto que estes possuem bandas
mais largas para transferencias de dados e atuam a longa distancia.
Pode-se afirmar que esta forma de utilizacao e bastante util, sendo implementada tanto
em aplicativos-padrao do Sistema Operacional Android, utilizados para troca de imagens
e dados entre dispositivos, como em jogos que requeiram interacao de multiplos usuarios.
Verifica-se em [UOL2012], a utilizacao do NFC em aplicativos desenvolvidos por empre-
sas privadas e institutos de pesquisa, tal como mostrado na figura 2.8, o PagSeguro-NFC
desenvolvido pelo Instituto Nokia de Tecnologia - INdT com o intuito de proporcionar
solucoes em pagamentos via dispositivos moveis de forma simples, rapida e com seguranca
garantida aos usuarios.
Pode-se mencionar tambem a adesao a tecnologia NFC por aplicativos multi-plataforma
ja consagrados no mercado, como o LinkedIn e o Foursquare. No caso do Foursquare, se-
gundo material de disponıvel em sua API oficial [Foursquare2013], foi criada uma area na
documentacao de sua API para auxiliar os desenvolvedores de software no desenvolvimento
de aplicativos clientes ao Foursquare que utilizem a tecnologia NFC para disparar eventos
de check in. Ja o aplicativo oficial Linkedin para sistema operacional Symbiam, disponi-
bilizado em [LinkedIn2011] -Nokia Store- sofreu atualizacoes de modo a possibilitar que
os dados de perfil de usuario sejam exportados para uma Tag NFC, permitindo assim a
visualizacao automatica dos perfis armazenados em cada Tag.
Trabalhos Relacionados 23
Figura 2.8: PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia - [UOL2012]
Capıtulo 3
Desenvolvimento Tecnico
Este capıtulo aborda todas as etapas relacionadas ao desenvolvimento tecnico do projeto,
desde suas especificacoes mais basicas de solucao ate a finalizacao de sua codificacao e
release do aplicativo prototipo NFC-WiFi.
3.1 Especificacao
Esta sessao aborda todos os aspectos relacionados a definicao da solucao definida. Mos-
trando conceitos inicias de como a ideia foi concebida e estruturada. Mostra tambem di-
agramas tecnicos que foram criados com base nos requisitos especificados ao analisar o
contexto do problema.
3.1.0.1 Definicao de solucao
Analisando o problema proposto no capıtulo 1, pode-se visualizar um cenario corres-
pondente a distribuicao e influencia de redes Wi-Fi dentro de determinada localidade, e
atraves de uma analise detalhada deste cenario e do problema proposto, e possıvel tra-
balhar na elaboracao de uma arquitetura de solucao. Conforme pode ser observado na
figura 3.1, as redes Wi-Fi possuem areas de atuacao variaveis e independentes umas das
outras, mesmo que presentes em um mesmo espaco fısico. Os principais responsaveis por
essa variacao de area de atuacao sao o hardware utilizado e as configuracoes definidas no
Especi�cação 25
momento de criacao e manutencao de cada hotspot Wi-Fi. Tirando como base o com-
portamento apresentado e a disposicao das redes Wi-Fi no mundo real, foi definido como
melhor solucao ao problema - levando em consideracao fatores como custo de producao e
satisfacao dos usuarios - a utilizacao de Tags NFC como forma de disseminacao de pontos
de acesso Wi-Fi. Cada Tag deve conter campos dos quais advenham meios de identifica-
cao de uma rede sem fio, para que desse modo um dispositivo movel celular possa receber
o conteudo armazenado, identificar e conectar-se a uma rede-alvo. A figura 3.1 mostra
uma visualizacao de como podem ser utilizadas inumeras Tags NFC para prover pontos
de acesso de diversificadas redes Wi-Fi atuantes dentro de uma mesma localidade, tendo
como unica dependencia para que seja obtido um funcionamento adequado. Sua utilizacao
em um local abrangido pelo sinal emitido por seu hotspot Wi-Fi correspondente.
Figura 3.1: Disposicao de redes sem fio em uma localidade
Especi�cação 26
Figura 3.2: Proposta de solucao Utilizando Tags NFC
3.1.0.2 Identificacao de Hotsposts
Redes Wi-Fi possuem um Identificador padrao chamado Service Set Identifier (SSID),
que corresponde a um conjunto de ate 32 caracteres case sensitive [Developer2008]. O SSID
e defino no momento de criacao de uma rede Wi-Fi e e altamente configuravel, podendo
ser customizado de acordo com a preferencia do gestor da rede. Comumente e constituıdo
por nomes que indiquem seu proprietario. Para ser bem sucedido em uma tentativa de
conexao Wi-Fi, e essencial que se conheca o SSID. No entanto, este nao e o unico parametro
necessario para concretizar uma conexao. Nao e surpresa encontrar uma rede Wi-Fi que
Especi�cação 27
requeira uma senha de acesso valida. Para estes casos devem-se considerar os campos
PWD acronimo para Password referente a senha e o protocolo de criptografia utilizado se
aplicavel, estes sao nomeados por WEP, WPA, WPA2, WPA-PSK e WPA2-PSK. Seguindo
esse raciocınio, infere-se que devem ser armazenados pelo menos tres informacoes relativas
a rede Wi-Fi em uma Tag NFC para conseguir automatizar o processo de conexao: o SSID,
a Password e a criptografia. Esta inferencia estaria absolutamente correta se nao houvesse
uma forma alternativa de se conhecer o protocolo de criptografia de rede utilizado. Ao
consultar um SSID e retornado o tipo de criptografia empregado, logo foi possıvel definir
para este projeto o uso de apenas dois campos em uma Tag NFC conforme mostra a figura
3.3.
• Exemplos de SSIDs:
– AndreMoreiraNetwork
– UniversidadeAuditorio
– AaxWRZtxY478T20 (Improvavel entre usuarios comuns)
Figura 3.3: Campos identificadores Wi-Fi armazenados em TAG NFC
A acao de obter a criptografia por meio de consulta diretamente na rede Wi-Fi pode vir
a diminuir a performance do aplicativo, porem ha de se convir que existe a possibilidade
de utilizar TAGs NFC que carecam de espaco de armazenamento onde a gravacao de um
campo a mais poderia ser a diferenca entre sucesso e falha.
Especi�cação 28
3.1.0.3 Estruturacao de dados em Tags NFC - Ndef
A utilizacao de Tags NFC como solucao neste projeto ocorreu seguindo o formato
de troca de mensagens NDEF ou NFC Data Exchange Format criado pelo NFC Forum,
implementado e disponibilizado pela API android.nfc para desenvolvimento em sistema
operacional Android. Conforme pode ser visto na figura 3.5, uma Ndef Message e composta
por varios records ou registros, que por sua vez sao compostos por dois campos: Header -
Cabecalho da mensagem e Payload - Corpo ou carga, area reservada ao dado [Forum2006].
Enquanto a figura 3.4 mostra como ocorre o processo de identificacao de uma Tag NFC
no sistema operacional Android. A formatacao Ndef disponibiliza RDTs ou Record Type
Definitions, que representam definicoes de tipos de registros que compoem mensagens Ndef.
Atraves dessas definicoes chegamos os TNFs ou Type Name Formats que sao de fato os
tipos de registros formados a partir das definicoes [Forum2006] [NXP2009] .
• Dentre os tipos de registros disponibilizados vale mencionar: [NXP2009]
– MIME (Multipurpose Internet Mail Extensions
∗ Imagens png, gif, ...
∗ Texto simples, html, javascript, ...
∗ Video mpeg, quicktime, ..
– Absolute URIs (Uniform Resource Identifier)
∗ URLs
∗ Contatos de agenda telefonica
∗ Mensagens SMS
– NFC Well Known Type
∗ Texto
∗ Parametros de Handover (PIN, Endereco Bluetooth)
3.1.0.4 Acoes definidas
Para criar uma arquitetura robusta para o projeto foram definidas acoes, as quais o
aplicativo deveria cumprir para atingir o nivel de qualidade esperado.
Especi�cação 29
Figura 3.4: Fluxo gerados eventos de leitura de Tags NFC em sistema operacional Android. [Developer2007]
Figura 3.5: Estrutura de mensagem Ndef. [Developer2007]
• Ler dados de uma Tag NFC.
• Escrever dados em uma Tag NFC.
• Suportar formatacao NDEF.
• Controlar hardware.
• Configurar uma conexao Wi-Fi.
Especi�cação 30
• Criar uma conexao Wi-Fi.
• Conter tela de informacoes.
• Prover a menor interacao possıvel com o usuario.
• Funcionar com a menor quantidade de toques no display touchscreen.
3.1.0.5 Arquitetura de solucao
Apos ter sido concretizada uma analise conceitual do problema, levantado os requisi-
tos funcionais prioritarios e elaborado um modelo de solucao viavel e de baixo custo, foi
constituıda uma ideia para inicial para o fluxo de funcionamento da solucao, essa ideia e
representada pela figura 3.6 mostrando que no momento da ocorrencia de um evento Tap
com uma Tag NFC, o smartphone devera colher desta os parametros de identificacao de
uma rede sem fio gerada por um hotspot Wi-Fi e iniciar os processos de configuracao e
inicializacao de conexao.
A obtencao de um conceito de solucao geral permitiu idealizar um possıvel fluxo para
o projeto de aplicativo, conforme pode ser visto na figura 3.9. O diagrama de navegacao
mostra a sequencia de passos decorrentes da utilizacao do aplicativo a partir de sua tela
inicial, assim como as possıveis acoes de tomada de decisao por parte do usuario. Ao
analisar mais a fundo este diagrama, nota-se que as acoes de escrita em Tag NFC e Lei-
tura/conexao em hotspot Wi-Fi ocorrem/atuam de forma isolada e independentes entre
si, permitindo que sejam separadas e encaradas como dois aplicativos distintos especıficos
para cada funcao.
Essa condicao tambem pode ser visualizada nas figuras 3.7 e 3.8. No entanto, a
abordagem de criacao de dois aplicativos nao foi aplicada neste projeto. Mantendo como
decisao arquitetural criar um unico aplicativo que cumprisse com ambas as atividades,
conforme apresentado no diagrama de classes exposto pela figura 3.10.
• Funcionalidades principais do sistema.
– Escrita de parametros de configuracao em Tag NFC.
– Obtencao dos parametros escritos em Tag NFC.
Especi�cação 31
Figura 3.6: Ideia inicial de funcionamento do aplicativo.
– Processo de conexao em hotspot Wi-Fi.
– Visualizacao de tela de informacoes.
Especi�cação 32
Figura 3.7: Diagrama de sequencia do modulo write NFC
Figura 3.8: Diagrama de sequencia do modulo responsavel pela conexao WiFi e
Projeto 35
3.2 Projeto
Para um melhor gerenciamento deste projeto, de forma a mante-lo sempre dentro dos
prazos de entrega de funcionalidades, de acordo com os padroes de qualidade exigidos,
foram adotados pontos de controle como:
• Metodologia agil Scrum para projetos de desenvolvimento de software.
• Elaboracao de um cronograma de desenvolvimento.
• Elaboracao de lista de etapas de desenvolvimento.
• Elaboracao de lista de itens fora de escopo.
3.2.1 Metodologia de desenvolvimento
Ao inıcio do projeto foi adotada a metodologia agil de desenvolvimento de software
SCRUM, que ajudou a manter o foco na conclusao de forma ordenada de atividades de
pesquisa, codificacao, refatoracao e testes de acordo com suas respectivas prioridades em
funcao da disponibilidade de tempo. Foram adotadas seis sprints de quinze dias cada,
totalizando tres meses de desenvolvimento tecnico, realizando todas as atividades descritas
no product backlog composto pela tabela 3.1.
Implementação 37
3.3 Implementacao
A implementacao do aplicativo prototipo NFC-Wi-Fi versao final foi dividida em etapas
com o proposito de manter o codigo organizado e criar uma modularizacao de componentes
funcionais.
• Etapa NFC - Esta etapa consistiu em codificar um componente isolado cuja funcio-
nalidades fossem:
– Gravar dados em uma Tag NFC.
– Ler dados de uma Tag NFC.
– Teste funcional
• Etapa Wi-Fi - Esta etapa consistiu em codificar um componente isolado cuja funci-
onalidades fossem:
– Inicializar hardware Wi-Fi do dispositivo.
– Iniciar descoberta de redes Wi-Fi
– Consultar hardware Wi-Fi em busca de redes disponıveis.
– Configurar uma conexao de rede Wi-Fi em dispositivo Android.
– Iniciar processo de conexao com uma rede Wi-Fi
– Teste funcional
• Etapa de integracao NFC e Wi-Fi - Esta etapa consistiu na integracao de ambos os
modulos citados focando na obtencao do fluxo previsto na arquitetura do projeto.
– Inicializar dispositivo Wi-Fi
– Identificar rede Wi-Fi utilizando parametros de conexao (SSID Password) ar-
mazenados em Tag NFC.
– Identificar protocolo de criptografia de rede utilizado
– Iniciar processo de conexao
• Etapa de refatoracao de codigo - Esta etapa consiste na criacao de layouts para o
prototipo verificacao e busca por areas passiveis a melhorias.
Implementação 38
3.3.1 AndroidManifest.xml
Ao iniciar o desenvolvimento de um aplicativo que utilize funcionalidades pertencentes
a um ou mais dispositivos de um smartphone Android, deve-se, primeiramente, gerar per-
missoes de utilizacao de cada dispositivo, requerer sua utilizacao e indicar o nıvel de API
Android no qual o aplicativo devera ser instalado. Sem as devidas permissoes, o aplicativo
nao conseguira efetuar nenhuma requisicao de servico. Todas as permissoes de utilizacao
de hardwares especıficos, requerimentos de features e declaracoes de Activities devem ser
adicionadas ao arquivo AndroidManifest.xml automaticamente gerado em projetos Android
pelo SDK. Este projeto utiliza os dispositivos de hardware NFC e Wi-Fi, assim como duas
Activities principais. O codigo 3.3.1 representa o arquivo AndroidManifest.xml e sua ex-
plicacao ocorrera de acordo com as linhas do arquivo. Linhas 5, 6 e 7 - definem o nıvel
de API requisitado para a instalacao da App e o nıvel ao qual ela e indicada. Para este
caso, targetSdkVersion=15 indica que esta App esta apta a funcionar corretamente desde a
versao Android 4.0 ICE-CREAM-SANDWICH, no entanto minSdkVersion=16 indica que
sua instalacao devera ser disponibilizada para dispositivos rodando sistema operacional
Android 4.1 JELLY-BEAN ou superior. Vale mencionar que a API relativa ou uso de
NFC so foi disponibilizada a partir da versao Android 2.3 GINGER-BREAD ou API level
9. Linhas 9 a 13 - conferem a App, permissoes para utilizacao Wi-Fi, de redes e de Internet.
Linha 14 - confere a App permissao para utilizacao de NFC. Linhas 16 e 17 - indicam que
a disponibilidade de features NFC e Wi-Fi em dispositivo devem ser obrigatorias para o
funcionamento adequando. Linhas 23 e 32 - referem-se as Activities utilizadas no projeto.
3.3.2 Etapa NFC
O pacote NFC, conforme ilustrado na figura 3.11, e formado por quatro source files
compostos de duas interfaces e duas classes que as implementam.
• Interface 1: ForegroundDispatcher.java
– Implementacao: NfcForegroundDispatcher.java
• Interface 2: NFC.java
– Implementacao: NfcDefaultProcessor.java
Implementação 39
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"2 package="com.example.prototypenfc_wifi"3 android:versionCode="1"4 android:versionName="1.0" >5 <uses-sdk6 android:minSdkVersion="16"7 android:targetSdkVersion="15" />8
9 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>10 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>11 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>12 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>13 <uses-permission android:name="android.permission.INTERNET"/>14 <uses-permission android:name="android.permission.NFC" />15
16 <uses-feature android:name="android.hardware.nfc" android:required="true" />17 <uses-feature android:name="android.hardware.wifi" android:required="true"/>18
19 <application android:label="@string/app_name">20 android:icon="@drawable/ic_launcher"21 android:label="@string/app_name"22 android:theme="@style/AppTheme" >23 <activity24 android:name=".MainActivity"25 android:label="@string/app_name" >26 <intent-filter>27 <action android:name="android.intent.action.MAIN" />28 <category android:name="android.intent.category.LAUNCHER" />29 </intent-filter>30 </activity>31
32 <activity android:name=".NfcWriterActivity"33 android:label="@string/app_name">34 <intent-filter>35 <action android:name="android.intent.action.MAIN" />36 <category android:name="android.intent.category.LAUNCHER" />37 </intent-filter>38 </activity>39
40 </application>41 </manifest>
Codigo 3.3.1: Arquivo Android Manifest (xml)
Figura 3.11: Packet NFC.
3.3.2.1 NFC Foreground Dispacher
A interface ForegroundDispacher.java disponibiliza a ativacao ou desativacao do modo
de processamento em primeiro plano para NFC, ou seja, a ativacao deste modo impede que o
Implementação 40
sistema operacional busque em background por aplicativos aptos ao tratamento de eventos
NFC, indicando assim que todos as intents contendo eventos gerados pelo hardware NFC
deverao ser tratados diretamente pela API NFC e nao pelo sistema operacional. Dito isso,
pode-se garantir que enquanto o aplicativo estiver aberto em primeiro plano, nao sofrera
interferencia de aplicativos externos relacionados a eventos NFC.
O modo ForegroundDispacher e diretamente ligado as Activities do projeto sendo ne-
cessario instancia-lo no metodo OnCreate, ativa-lo no metodo OnResume e desativa-lo no
metodo OnPause de cada Activity onde se deseje o tratamento de eventos NFC, conforme
pode ser verificado no codigo 3.3.3, linhas 12, 24 e 31.
O codigo 3.3.2 mostra a implementacao da interface ForegroundDispacher.java. A classe
que a implementa e composta por um construtor e dois metodos, enable (ativa)e disable
(desativa). Ao momento em que um objeto pertencente a esta classe e instanciado, seu
construtor salva a referencia da Activity que o instanciou (linha 17 e 18). Seguido pela
inicializacao do adaptador NFC para esta Activity (linha 19) e pelo informativo ao sistema
operacional de que as proximas intents geradas e devem ser passadas pertencem a esta
Activity (linha 20). Importante mencionar que intents correspondem a um formato de
dados que trafega entre o sistema operacional Androide seus aplicativos. O metodo enable
-linhas 24 a 29- tem seu funcionamento da seguinte forma: primeiramente cria-se um filtro
de intents para coletar conteudos relacionados a descoberta de Tags NFC (linha). Em
seguida cria uma lista de filtros vazia e atribui a esta lista um unico filtro, o de decorbeta
de Tags NFC (linha). Por fim, ativa o modo ForegroundDispacher, ou seja, o adaptador
NFC recebera e tratara as proximas intents geradas na Activity a qual foi instanciado,
contanto que estas intents sejam resultados filtrados pela lista de filtros atribuıda. Logo,
so serao validas intents que possuam conteudo relativo a deteccao de Tags NFC.
Implementação 41
1 package nfcController;2
3 import android.app.Activity;4 import android.app.PendingIntent;5 import android.content.Intent;6 import android.content.IntentFilter;7 import android.nfc.NfcAdapter;8 import android.util.Log;9
10 public class NfcForegroundDispatcher implements ForegroundDispatcher {11
12 private static final String TAG = "NfcForegroundDispatcher";13 private final NfcAdapter nfcAdapter;14 private final PendingIntent nfcPendingIntent;15 private final Activity receivedActivity;16
17 public NfcForegroundDispatcher(Activity activity) {18 receivedActivity = activity;19 nfcAdapter = NfcAdapter.getDefaultAdapter(activity);20 nfcPendingIntent = PendingIntent.getActivity(activity, 0,21 new Intent(activity, activity.getClass()).addFlags(Intent.22 FLAG_ACTIVITY_SINGLE_TOP), 0);23 }24 public void enable() {25 Log.d(TAG, "enableForegroundMode");26 IntentFilter tagDetected = new IntentFilter(NfcAdapter.\27 ACTION_TAG_DISCOVERED);28 IntentFilter[] TagFilters = new IntentFilter[] { tagDetected };29 nfcAdapter.enableForegroundDispatch(receivedActivity,30 nfcPendingIntent, TagFilters, null);31 }32 public void disable() {33 Log.d(TAG, "disableForegroundMode");34 nfcAdapter.disableForegroundDispatch(receivedActivity);35 }36 }
Codigo 3.3.2: Implementacao da interface Foreground Dispatcher
3.3.2.2 Classe NfcDefaultProcessor
A Classe NfcDefaultProcessor implementa quatro metodos publicos:
• public String getSSID()
• public String getPWD()
• public void readNdefTag(Intent intent) - Leitura de Tag NFC
• public void writeNdefTag(Tag tag, String ssid, String password) ? Escrita em Tag
NFC.
Os dois primeiros estao diretamente ligados a aquisicao de parametros de configuracao
Wi-Fi gravados em uma Tag NFC. Apos ser realizada a leitura da Tag, esses metodos
Implementação 42
1 package com.example.prototypenfc_wifi;2
3 import java.io.IOException;4
5 public class NfcWriterActivity extends Activity{6
7 @Override8 public void onCreate(Bundle savedInstanceState) {9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.nfc_tag_writer);11 foregroundDispatcher = new NfcForegroundDispatcher(this);12 }13
14 @Override15 public void onNewIntent(Intent intent) {16
17 }18
19 @Override20 public void onResume() {21 Log.d(TAG, "onResume");22 super.onResume();23 foregroundDispatcher.enable();24 }25
26 @Override27 public void onPause() {28 Log.d(TAG, "onPause");29 super.onPause();30 foregroundDispatcher.disable();31 }32 }
Codigo 3.3.3: Instanciacao, habilitacao e desativacao do modo Foreground Dispacher
podem ser invocados de diferentes partes do codigo que possam lhes oferecer alguma uti-
lidade. Os demais metodos serao explanados individualmente sob forma de subitens desta
sessao.
3.3.2.2.0.4 Escrita de Tag NFC O metodo writeNdefTag (Tag tag, String ssid,
String Password) mostrado no codigo 3.3.4 permite a gravacao de Tags NFC contendo um
record SSID e um Record Password. Caso os campos contendo as informacoes requisitadas
estejam vazios ou nulos, uma excecao e lancada, resultando em falha de gravacao (Linhas
03, 06, 09,12). Na linha 15, pode-se observar a criacao de uma lista onde serao inseridos
NdefRecords. Conforme definido na arquitetura do projeto, nesta lista constarao apenas
dois records tipo texto correspondentes as configuaracoes da rede Wi-Fi alvo. Cada um
e criado com auxılio do metodo privado private NdefRecord createNdefRecord(String text).
Conforme consta no codigo 3.3.5, este metodo recebe um texto por parametro e retorna
um NdefRecord gerado. Depois que a lista de NdefRecords estiver concluıda, todos os
Implementação 43
records passam a compor uma NdefMessage (linha 16, codigo 3.3.4). O processo continua
com a selecao da Tag detectada(linha 17), seguida pela abertura de uma conexao(linha
18, gravacao de dados(linha 19) e fechamento da Tag (linha 20). Ao final deste metodo
passamos a possuir uma Tag NFC contendo os parametros desejados.
1 public void writeNdefTag(Tag tag, String ssid, String password)2 throws UnsupportedEncodingException, IOException, FormatException {3 if (ssid == null){4 throw new IllegalArgumentException();5 }6 if (ssid.isEmpty()){7 throw new IllegalArgumentException();8 }9 if (password == null){
10 throw new IllegalArgumentException();11 }12 if (password.isEmpty()){13 throw new IllegalArgumentException();14 }15 NdefRecord[] records = { createNdefRecord(ssid),16 createNdefRecord(password) };17 NdefMessage message = new NdefMessage(records);18 Ndef ndef = Ndef.get(tag);19 ndef.connect();20 ndef.writeNdefMessage(message);21 ndef.close();22 }23 }
Codigo 3.3.4: Implementacao de escrita em formato Ndef em Tag NFC
1 private NdefRecord createNdefRecord(String text) throws2 UnsupportedEncodingException {3 byte[] payload = text.getBytes();4 NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,5 NdefRecord.RTD_TEXT, null, payload);6 return ndefRecord;7 }
Codigo 3.3.5: Criando NdefRecord
3.3.2.2.0.5 Leitura de Tag NFC O codigo 3.3.6 transcreve o metodo utilizado
para ler uma Tag NFC que contenha payloads referentes ao SSID e Password de uma rede
Wi-Fi e realizar a extracao dessas informacoes. Este metodo recebe por parametro uma
intent referente a acao de Tap NFC, e atraves dessa intente podera ser feita a interpretacao
do conteudo da Tag NFC. Observando a linha 04 verificamos que se a acao presente na
intent for a mesma realizada por acao de descoberta de Tag NFC, significa que temos a
correta. Logo, seu conteudo devera resgatado e listado - linha 07 -, em seguida convertido
Implementação 44
para formatacao Ndef Message linha 09, e cada mensagem convertida devera ter seus records
analisados em busca de payloads que sejam iniciados por tags SSID : e PWD : (linhas 11,
13 e 18). Apos encontrados, deverao ter suas tags identificadoras removidas e o conteudo
restante atribuıdo a variaveis privadas da classe networkSSID e networkPWD - linhas 15 e
20 -. Ao finalizar este processo tem-se os identificadores de rede Wi-Fi salvos em variaveis,
podendo ser acessadas atraves dos metodos getSSID() e getPWD().
1 public void readNdefTag(Intent intent) {2 networkPWD = null;3 networkSSID = null;4 if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {5 Parcelable[] messages;6 try {7 messages = intent.getParcelableArrayExtra(NfcAdapter.8 EXTRA_NDEF_MESSAGES);9 for (Parcelable message : messages) {
10 NdefMessage msg = (NdefMessage) message;11 for (NdefRecord record : msg.getRecords()) {12 String tagPayload = new String(record.getPayload());13 if (tagPayload.startsWith(SSID)) {14 Log.d(TAG, "Retriving Network SSID");15 networkSSID = tagPayload.replaceFirst(SSID, "");16 }17 if (tagPayload.startsWith(PWD)) {18 Log.d(TAG, "Retriving Network Password");19 networkPWD = tagPayload.replaceFirst(PWD, "");20 }21 }22 }23 } catch (Exception e) {24 e.printStackTrace();25 Log.d(TAG, e.getMessage());26 }27 } else {28 Log.d(TAG, "UNEXPECTED ACTION - " + intent.getAction());29 Toast.makeText(this, "Unexpected Action - " + intent.getAction(),30 Toast.LENGTH_LONG).show();31 }32 }
Codigo 3.3.6: Leitura de Tag NFC e extracao de records SSID Password.
3.3.3 Etapa Wi-Fi
O pacote Wi-Fi e composto por tres arquivos JAVA conforme demonstrado na figura
3.12, sendo distribuıdos da seguinte forma:
• Interface 1: WIFI.java
– Implementacao: WiFiController.java
Implementação 45
Figura 3.12: Packet wifiController
• Classe independente: WiFiConfigurator.java enditemize
A interface WIFI.java disponibiliza de metodos de controle de adaptador Wi-Fi re-
quisitados para a realizacao de todas as acoes deste projeto.
– boolean checkWifiEnabled()- Checa se o adaptador Wi-Fi esta ativo.
– boolean setWifiEnabled(boolean enable)- Ativa o adaptador Wi-Fi.
– boolean startWifiScan()- Inicia busca por conexoes Wi-Fi.
– void addWifiNetwork(WiFiConfigurator wifiConfigurator)- Prepara rede confi-
gurada para conexao .
– void enableNetwork(int id)- Confere permissao de conexao.
– void connect()- Inicia processo de conexao.
– void disconnect() throws RuntimeException- Termina Conexao.
– List<ScanResult> getScanResults()- Lista as redes encontradas pelo adaptador
de rede.
– List<WifiConfiguration> getConfiguredNetworks()- Lista as redes configuradas.
Conforme mencionado, a implementacao destes metodos ocorre na classe WiFiCon-
troller de acordo com o codigo 3.3.7. O SDK possui uma APIs relativa a utilizacao
de adaptores Wi-Fi realmente bem documentados e de facil entendimento. O esforco
maior dessa fase de desenvolvimento foi escolher quais metodos deveriam ser utiliza-
dos dentre todas as possibilidades disponıveis. Conforme pode ser visto nas linhas
6, 7 e 8, foram necessarias tres derivacoes da API android.wifi para preencher todos
os requisitos deste projeto. O codigo 3.3.8 mostra a implementacao da classe Wifi-
Configurator, utilizar esta derivacao da API provou-se igualmente simples merecendo
Implementação 46
poucos pontos de destaque. No entanto vale a pena citar que nas linhas 12, 15 e 18
e necessario que ao inıcio e ao final de cada string, sejam inseridas aspas duplas.
1 package wifiController;2
3 import java.util.List;4 import android.app.Activity;5 import android.content.Context;6 import android.net.wifi.ScanResult;7 import android.net.wifi.WifiConfiguration;8 import android.net.wifi.WifiManager;9 import android.util.Log;
10 import android.widget.Toast;11
12 public class WiFiController extends Activity implements WIFI{13 private WifiManager wifiManager;14
15 public WiFiController(Context context){16 wifiManager = (WifiManager)context.getSystemService(Context.17 WIFI_SERVICE);18 }19 public boolean checkWifiEnabled(){20 return wifiManager.isWifiEnabled();21 }22 public boolean setWifiEnabled(boolean enable)23 {24 return wifiManager.setWifiEnabled(enable);25 }26 public boolean startWifiScan(){27 return wifiManager.startScan();28 }29 public List<ScanResult> getScanResults(){30 return wifiManager.getScanResults();31 }32 public WifiManager getWifiManager(){33 return wifiManager;34 }35 public void disconnect() throws RuntimeException{36 try{37 wifiManager.disconnect();38 }catch (Exception e) {39 e.printStackTrace();40 Log.d("disconnect failure", e.getMessage());41 }42 }43 public void connect() {44 wifiManager.reconnect();45 }46 public void addWifiNetwork(WiFiConfigurator wifiConfigurator) {47 wifiManager.addNetwork(wifiConfigurator.getWifiConfiguration());48 }49 public void enableNetwork(int id) {50 wifiManager.enableNetwork(id, true) ;51 }52 public List<WifiConfiguration> getConfiguredNetworks(){53 return wifiManager.getConfiguredNetworks();54 }55 }
Codigo 3.3.7: Implementacao WiFiController
Implementação 47
1 package wifiController;2
3 import android.net.wifi.WifiConfiguration;4
5 public class WiFiConfigurator{6 private WifiConfiguration wifiConfiguration;7
8 public WiFiConfigurator(){9 wifiConfiguration = new WifiConfiguration();
10 }11 public void configureSSID(String ssid){12 wifiConfiguration.SSID = ("\"" + ssid + "\"");13 }14 public void configureWpaPassword(String password){15 wifiConfiguration.preSharedKey = ("\"" + password + "\"");16 }17 public void setWepPassword(String password){18 wifiConfiguration.wepKeys[0] = ("\"" + password + "\"");19 wifiConfiguration.wepTxKeyIndex = 0;20 wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.21 KeyMgmt.NONE);22 wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.23 GroupCipher.WEP40);24 }25 public void setOpenNetworkPassword(){26 wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.27 KeyMgmt.NONE);28 }29 public WifiConfiguration getWifiConfiguration(){30 return wifiConfiguration;31 }32 }
Codigo 3.3.8: Implementacao WiFiConfigurator
3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxocompleto.
Nesta etapa sera mostrado detalhes da implementacao das funcionalidades NFC e
Wi-Fi para a obtencao do prototipo de solucao final. Para alcancar o fluxo de ativi-
dades desejado, conforme mostrado na sessao arquitetura de solucao, foram criadas
duas: Activity (conjunto formado por uma tela e todas a ela relacionadas), Nfc-
WriterActivity (Atividade de escrita NFC ) e MainActivity (Atividade principal). A
Activity NfcWriterActivity trata exclusivamente da escrita de parametros Wi-Fi em
uma Tag NFC, enquanto a MainActivity referente a leitura de Tag NFC para obten-
cao de parametros Wi-Fi e procedimentos de conexao com a rede correta.
3.3.4.1 NfcWriterActivity
Conforme pode ser visualizado na figura 3.13, esta Activity possui em seu layout dois
campos de entrada de dados: SSID e PWD (password). Cada um desses campos
Implementação 48
representa um record que devera compor uma Ndef Message, apos seu preenchimento
pode-se realizar um evento Tap em Tag NFC para gravar a Ndef Message criada.
codigo 3.4.2 - Os procedimentos para se efetuar a gravacao de uma Tag NFC : Na
linha 22 e 23 verifica-se que ao ser criada uma nova intent (evento Tap NFC ), ocorre
a estruturacao de um objeto que representa a Tag lida pelo adaptador NFC. Nas linha
24-27 sao recuperados o SSID e o Password definidos pelo usuario, e concatenado,
ao inıcio de cada texto, uma string responsavel por distinguir os campos e evitando
problemas quando for realizado o processo de leitura. Por fim na linha 29 o processo
de gravacao e efetivado.
Figura 3.13: Tela de gravacao de Tag NFC
3.3.4.2 MainActivity
A principal prevista para esta Activity sao referentes a conexao Wi-Fi atraves de
leitura de Tag NFC. Ao ser detectado um evento de Tap NFC, e iniciado o processo de
extracao de conteudo, analise de parametros de rede e conexao com a rede Wi-Fi alvo.
O codigo 3.4.1 mostra todo o trajeto percorrido desde a leitura da Tag NFC ate a
efetivacao da conexao. Ao receber uma nova intent e necessario que seja garantido que
Conclusões 49
os parametros de configuracao nao sejam poluıdos por dados previamente salvos, logo
as variaveis globais que guardam esses valores devem ser limpas recebendo conteudo
nulo (linhas 03 e 04), para que assim o adaptador possa efetuar a leitura da Tag
(linha 05) e extrair um novo conteudo -linhas 07 e 08-. Se os campos tiverem sido
recebidos com sucesso -linha 12-, e realizada uma verificacao se a placa Wi-Fi do
dispositivo esta ativada, caso contrario e feita a ativacao -linhas 14 e 15-, lembrando
que se deve disponibilizar tempo para que o hardware inicialize antes de prosseguir
-linha 19-. Seguindo adiante, e feita uma busca pelas redes Wi-Fi capturadas pelo
adaptador -linha 25- e verificado se alguma delas refere-se ao SSID recebido pela Tag
-linha 28-. Em caso de sucesso e requisitado tipo de criptografia atuante na rede
-linha 30- e uma nova configuracao de rede e criada utilizando os parametros SSID e
Password recebidos por NFC em conjunto com o tipo de criptografia recebido pela
rede Wi-Fi (linhas 31 e 35). Finalmente e realizada uma busca entre as conexoes
configuradas, em busca da configuracao recem criada - linha 48 - e, ao encontra-la
(linha 49), iniciasse um processo de desconexao Wi-Fi, ativacao da rede configurada
e conexao (linhas 51 a 53).
3.4 Conclusoes
A implementacao deste projeto acarretou valiosos conhecimentos quanto a integracao
de multiplos dispositivos de hardware em um aplicativo, houve grande utilizacao de
APIs de controle disponibilizadas pelo sistema operacional, possibilitando a aquisicao
experiencias. Ao desenvolver este software de forma modular, pode-se verificar que
cada dispositivo adaptador de hardware possui procedimentos especıficos de ativacao
e controle. No entanto, verifica-se que as APIs trabalham de forma a padronizar
tais procedimentos, possibilitando notar similaridades de utilazacao entre os varios
dispositivos facilitando a compreensao. Ao desenvolver o modulo Wi-Fi percebeu-se
uma grande semelhanca entre as funcoes de controle de seu adaptador e suas funcoes
de configuracao e por esta razao o desenvolvimento fluiu com maior agilidade.
Conclusões 50
1 public void onNewIntent(Intent intent) {2 Log.d(TAG, onNewIntent);3 collectedSSID = null;4 collectedPWD = null;5 nfc.readNdefTag(intent);6 if (nfc.getSSID() != null) {7 collectedSSID = nfc.getSSID();8 collectedPWD = nfc.getPWD();9 } else {
10 Toast.makeText(this, ssidNotFound, Toast.LENGTH_LONG).show();11 }12 if(collectedSSID != null & collectedPWD != null){13
14 if(!wifi.checkWifiEnabled()){15 wifi.setWifiEnabled(true);16 Toast.makeText(this, wifiEnabler, Toast.LENGTH_LONG).show();17 Log.d(TAG, wifiEnabled );18 try {19 Thread.sleep(3000);20 } catch (InterruptedException e) {21 e.printStackTrace();22 }23 }24 try {25 scanResultList = wifi.getScanResults();26 boolean networkFound = false;27 for( ScanResult incResulList : scanResultList ) {28 if(collectedSSID.equals(incResulList.SSID)){29 networkFound = true;30 collectedEncryptionType = incResulList.capabilities;31 wifiConfigurator = new WiFiConfigurator();32 wifiConfigurator.configureSSID(collectedSSID);33
34 if (collectedEncryptionType.contains(encryptionTagWpa)){35 wifiConfigurator.configureWpaPassword(collectedPWD);36 Log.d(TAG, wpa);37 }else if(collectedEncryptionType.38 contains(encryptionTagWep)){39 wifiConfigurator.setWepPassword(collectedPWD);40 Log.d(TAG, wep);41 }else{42 wifiConfigurator.setOpenNetworkPassword();43 Log.d(TAG, openNetwork);44 }45 wifi.addWifiNetwork(wifiConfigurator);46 Log.d(TAG, addNetwork);47 for( WifiConfiguration configuredNetworkList : wifi.48 getConfiguredNetworks()) {49 if(configuredNetworkList.SSID.equals("\"" +50 collectedSSID + "\"")) {51 Log.d(TAG, attemptingConnection);52 wifi.disconnect();53 wifi.enableNetwork(configuredNetworkList.54 networkId);55 wifi.connect();56 }57 }58 }59 }60 if (!networkFound ) {61 Toast.makeText(this, networkNotFound, Toast.LENGTH_LONG).show();62 }63 }catch (Exception e) {64 Log.d(TAG, e.getMessage());65 Toast.makeText(this, e + noWifi, Toast.LENGTH_LONG).show();66 }67 }68 }
Codigo 3.4.1: Implementacao e processo de conexao Wi-Fi via Tag NFC
Conclusões 51
1 package com.example.prototypenfc_wifi;2
3 import java.io.IOException;4 import java.io.UnsupportedEncodingException;5 import nfcController.ForegroundDispatcher;6 import nfcController.NFC;7 import nfcController.NfcDefaultProcessor;8 import nfcController.NfcForegroundDispatcher;9 import android.app.Activity;
10 import android.content.Intent;11 import android.nfc.FormatException;12 import android.nfc.NfcAdapter;13 import android.nfc.Tag;14 import android.os.Bundle;15 import android.util.Log;16 import android.view.View;17 import android.widget.Button;18 import android.widget.EditText;19 import android.widget.Toast;20
21 public class NfcWriterActivity extends Activity{22
23 private String TAG = "nfc_writer_activity";24 private String SSID;25 private String PASSWORD;26 private NFC nfc;27 private ForegroundDispatcher foregroundDispatcher;28
29 @Override30 public void onCreate(Bundle savedInstanceState) {31 super.onCreate(savedInstanceState);32 setContentView(R.layout.nfc_tag_writer);33 foregroundDispatcher = new NfcForegroundDispatcher(this);34 nfc = new NfcDefaultProcessor();35 }36
37 @Override38 public void onNewIntent(Intent intent) {39 Tag newTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);40 EditText editSsid = (EditText) this.findViewById(R.id.nfc_writer_ssid);41 SSID = "ssid:" + editSsid.getText().toString();42 EditText editPwd = (EditText) this.findViewById(R.id.nfc_writer_pwd);43 PASSWORD = "pwd:" + editPwd.getText().toString();44 try {45 nfc.writeNdefTag(newTag, SSID, PASSWORD);46 Toast.makeText(this, "Tag written", Toast.LENGTH_LONG).show();47 } catch (UnsupportedEncodingException e) {48 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();49 } catch (IOException e) {50 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();51 } catch (FormatException e) {52 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();53 }54 }55 @Override56 public void onResume() {57 Log.d(TAG, "onResume");58 super.onResume();59 foregroundDispatcher.enable();60 }61 @Override62 public void onPause() {63 Log.d(TAG, "onPause");64 super.onPause();65 foregroundDispatcher.disable();66 }67 }
Codigo 3.4.2: Implementacao de acao realizada no layout de gravacao de Tags NFC
Capıtulo 4
Testes e Avaliacao
Este capıtulo aborda como foram realizados testes funcionais e mostra seu compor-
tamento em resposta a cada cenario de teste. Esta etapa deve ser considerada ex-
tremamente importante pois evidencia bugs ou excecoes nao planejadas, assim como
possibilita a formacao de uma documentacao completa.
4.1 Material Utilizado
– Smartphone Samsung Galaxy SIII GT-I9300
– Sistema Operacional Android 4.1.2
– Roteador motorola SVG1202 Wireless
– Smartphone Nokia Lumia 720
– Smartphone Nokia N9
– Tag NFC MIFARE Classic 4k
– Tag NFC Type 1 - 120 Bytes
4.2 Casos de teste
O aplicativo foi colocado a prova passando pela bateria de testes descrita nesta sessao,
tendo resultados satisfatorios na maioria dos casos. Importante relatar que apenas o
smartphone Samsung Galaxy SIII foi utilizado com portador do aplicativo, os demais
listados na sessao anterior foram utilizados como provedores de ponto de acesso Wi-Fi
em adicao ao roteador Motorola tambem listado.
Casos de teste 53
4.2.1 Gravacao de Tag NFC
Este teste consiste em gravar dados referentes ao SSID e Password do hotspot alvo
em uma Tag NFC. Foram testados quantidades distintas de caracteres em ambos os
campos afim de encontrar limitacoes que pudessem inviabilizar o aplicativo. Para
este teste foram utilizados os dois modelos de Tag NFC - Tag Type 1 e Tag MIFARE
Classic 4k. E importante ressaltar que a quantidade de caracteres indicada em cada
teste refere-se a quantidade inserida pelo usuario, nao estando inclusos os 9 caracteres
de controle concatenados a cada campo de forma transparente ao usuario: pwd: e e
ssid:
20 caracteres
Foram inseridos 10 caracteres em cada record e todas as Tags alcancaram resultados
positivos efetuando a gravacao com sucesso sem mostrar perda de dados. A figura
4.1 mostra a gravacao de 20 caracteres alfanumericos em uma Tag NFC MIFARE
Classic
50 caracteres
Foram inseridos 25 caracteres em cada record e todas as Tags alcancaram resultados
positivos, no entanto houveram casos em que se pode notar uma leve diminuicao na
velocidade de escrita da Tag Type 1, mesmo assim as tentativas foram bem sucedidas
e sem perdade dados. A figura 4.2 mostra a gravacao de 50 caracteres alfanumericos
em uma Tag NFC MIFARE Classic
300 caracteres
Foram inseridos 150 caracteres em cada record e apenas a Tag MIFARE Classic con-
seguiu consegiu realizar a tarefa com sucesso e sem perda de dados. A Tag Type
1 tornou-se inacessıvel em todos os casos, mesmo assim a aplicacao nao se mostrou
instavel. Este acontecimento deve-se ao fato da Tag Type 1 nao possuir memoria
suficiente para armazenar esta quantidade de caracteres, por este motivo a Tag MI-
FARE foi escolhida para efetuar os testes de fluxo completo do aplicativo. A figura
Casos de teste 54
Figura 4.1: Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC
4.3 mostra a gravacao de 300 caracteres alfanumericos em uma Tag NFC MIFARE
Classic de 4kb
4.2.2 Fluxo completo
O teste de fluxo completo consiste em gravar os dados de handover Wi-Fi em uma
Tag NFC e de forma subsequente fazer sua leitura para iniciar o processo de conexao.
A figura 4.4 mostra a gravacao dos parametros de handover Wi-Fi pertencentes a
uma rede sem fio valida. Esta etapa corresponde ao inıcio do teste de fluxo completo.
Sendo o proximo passo mostrado na figura 4.5, onde caso o adaptador de rede Wi-
Fi esteja desativado, este devera ser ativado automaticamente apos um evento Tap
NFC. Por fim, a figura ?? mostra o indicacao de conexao bem sucedida com a rede
alvo. Este teste foi repetido sob condicoes distintas descritas no decorrer desta secao.
Casos de teste 55
Figura 4.2: Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC
Influencia de um unico hotspot
Este caso de teste foi ambientado com influencia de apenas um hotspot e utilizado
um unico modelo de Tag NFC, o MIFARE Classic.
– Curta distancia em relacao ao ponto de acesso (3m)
∗ Conexao realizada com sucesso.
– Media distancia em relacao ao ponto de acesso (10-15m)
∗ Conexao realizada com sucesso.
– longa distancia em relacao ao ponto de acesso (aprox. 40m - sinal fraco)
∗ Conexao realizada com sucesso.
Casos de teste 56
Figura 4.3: Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC
Influencia de multiplos hotspots
Este caso de teste foi ambientado com influencia de tres pontos de acesso Wi-Fi
apenas um hotspot e utilizado um unico modelo de Tag NFC, o MIFARE Classic.
– Curta distancia entre hotspots (1m)
∗ Conexao nao realizada, houve interferencia e nenhuma conexao foi efetivada.
– Media distancia entre hotspots (5-15m)
∗ Conexao realizada com sucesso.
– longa distancia entre hotspots (aprox. 40m - sinal fraco)
∗ Conexao realizada com sucesso.
Casos de teste 57
Figura 4.4: Gravacao dos parametros handover Wi-Fi de uma rede valida em uma TagNFC
Figura 4.5: Desativacao manual do adaptador de rede seguido por ativacao automatica viaTap em Tag NFC
Hotspots com o mesmo SSID
Foram criados hotsposts distintos mas que utilizavam o mesmo SSID. Houve incompa-
tibilidade de redes mesmo antes de utilizar o aplicativo, nao podendo ter um resultado
Casos de teste 58
Figura 4.6: Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot
satisfatorio.
Multiplos Taps em Tags NFC distintas
Este teste consistiu em efetuar multiplos Taps NFC em Tags com parametros refe-
rentes a 3 redes sem fio distintas, notou-se que a cada Tap o processo retornava ao
estado inical, logo ao efetuar o ultimo Tap a conexao se realizava com sucesso. A
figura 4.7 representa o estresse que o aplicativo sofreu ao serem realizados diversos
eventos de Tap NFC, onde a Tag NFC da direita representa a rede correta e esquerda
represena uma Tag NFC com SSID invalido
Avaliação de Resultados 59
Figura 4.7: Eventos Tap NFC em Tags NFC distintas, com parametros distintos
4.3 Avaliacao de Resultados
Com bases nos teste realizados pode-se concluir que o Aplicativo funcionou de forma
esperada, sem a presenca de excecoes que por ventura o tornassem inacessıvel. Tanto
o fuxo de gravacao de Tag NFC, como o fluxo de leitura e conexao ocorrem conforme
o planejado mostrando que o sistema efetuou todos os passos de conexao de forma
ordenada e correta. Portando vale afirmar que a prototipagem manteve-se dentro das
especificacoes mantendo os padroes de qualidade definidos anteriormente no projeto.
Capıtulo 5
Conclusao
5.1 Consideracoes Finais
Ao encerar a etapa de desenvolvimento alcancou-se o objetivo tecnico final do projeto,
a criacao de um sistema movel capaz de automatizar o processo de conexoes entre
smartphones Android e hotspots Wi-Fi utilizando a tecnologia NFC como base.
A tarefa de automatizar procedimentos nem sempre e simples, deve-se primeiramente
estudar com cuidado em quais etapas se deve realmente retirar o controle do usuario
e proceder sem sua interferencia.
E importante lembrar que pessoas gostam de comodidade, mas isso nao e suficiente
para atingir as metas de qualidade esperadas. A grande dificuldade em projetos de
automacao nao esta em apenas descobrir e prover opcoes faceis para a realizacao
uma determinada tarefa, alem disso o sistema precisa ser adaptativo as vontades do
usuario, tendo em vista que haverao momentos em que o usuario pode decidir por
mudar o comportamento do sistema, mesmo que este esteja realizando uma operacao
autonoma. As principais acoes que geram mudancas de estado nos sistemas sao
reiniciar, pausar, interromper e terminar um procedimento ou o sistema como um
todo.
Ao utilizar Tags NFC como disparadores do processo de conexao Wi-Fi entre o
dispositivo movel e o hotspot, da-se ao usuario total controle do momento em que se
deve iniciar ou reiniciar o processo, pois realizacao de um evento Tap NFC depende
inteiramente de uma interacao ativa entre o ser humano e seu dispositivo movel com
Trabalhos Futuros 61
a Tag NFC. Por tanto, para este sistema pode-se afirmar que a cada evento Tap, o
sistema retornara para seu estado inicial e um novo processo de conexao sera iniciado.
Conforme pode ser verificado na etapa de testes (Capitulo 4), o sistema mostrou
que possui flexibilidade suficiente para nao sofrer perdas performance ou sucumbir a
falhas crıticas mesmo que estressado com incessantes modificacoes de comportamento
representados por eventos Tap em distintas Tags NFC.
Sabe-se entao, que as escolhas tecnologicas definidas para este projeto em conjunto
com a arquitetura de solucao adotada possibilitaram a obtencao de um produto que
alcanca resultados satisfatorios, permitindo que a conexao seja efetuada rapidamente,
sem esforco e sem se deixar atrelar a gargalos fısicos, que por ventura possam dificultar
o acesso a identificacao do hotspot desejado.
O prototipo NFC-WiFi cumpre os requisitos definidos na sessao de arquitetura desta
monografia, permitindo que os usuarios gravem suas proprias Tags NFC identificando
redes sem fio privadas ou que efetuem leitura de Tags gravadas por terceiros com o
objetivo de realizar conexao automatica com as redes nelas definidas. Esta solucao
possibilita o acesso rapido e descomplicado a redes Wi-Fi, tendo sua utilizacao ideal
em localidades publicas com shoppings, parques, aeroportos ou em estabelecimen-
tos comerciais como restaurantes e lojas, alem de poder ser integrado a aplicacoes
mais robustas que utilizem-no como facilitador de disponibilizacao de outros servicos,
podendo tambem ser utilizado com finalidades didaticas.
Espera-se que este projeto cause grande impacto as pessoas que visem trabalhar com
tecnologias novas e/ou alternativas para automatizacao de tarefas, como a tecnologia
NFC. Independentemente de casos de uso ou de metodologias de desenvolvimento
de software, deve-se ter em mente que uma engenharia adequada da solucao e fator
responsavel pelo sucesso da criacao de um produto.
5.2 Trabalhos Futuros
Existe muitas possibilidades de utilizacao para a tecnologia NFC. No entanto pode-se
sugerir que este sistema possa ser evoluıdo para os casos de uso listados abaixo.
Trabalhos Futuros 62
– Utilizar procedimentos de conexao com hotspots via Tag NFC como base para:
∗ Criar testes de performance de conexao.
∗ Realiazar leitura de parametros de configuracao via NFC p2p.
∗ Testar a utilizacao de Tags de tipos incompatıveis com Ndef .
∗ Implementacao de NFC Card Emulation.
∗ Tratamento de funcionalidades aplicativo via conexao com back-end do sis-
tema.
∗ Controle de sistemas microprocessados.
∗ Autenticacao de usuario com sistemas localizados na Web ou em redes pri-
vadas.
∗ Acionamento e desativacao de dispositivos a distancia.
∗ Efetivacao de recrusos via leitura de coordenadas GPS.
Referencias Bibliograficas
[Agar2004] Agar, J. (2004). Constant Touch: A Global History of the Mobile Phone.
Totem Books.
[Arena2013] Arena, G. (2013). Gsm arena. www.gsmarena.com. website internacio-
nal especializado em comparativos de telefonia celular, acesso em 01-12-2013.
[Brasil2013] Brasil, N. (2013). Nfc brasil. http://nfcbrasil.wordpress.com/. website
informativo, acesso em 01-12-2013.
[Coshum et al.2013] Coshum, V., Ok, K., and Ozdenizci, B. (2013). Professional
NFC Application Development for Android. John Wiley and Sons.
[Developer2008] Developer, A. (2008). Wifi android api guide.
developer.android.com/reference/android/net/wifi/package-summary.html. Offi-
cial Android Developer website, acesso em 01-12-2013.
[Developer2011] Developer, A. (2011). Developer tools.
http://developer.android.com/tools/index.html. Official Android Developer
website, acesso em 01-12-2013.
[Developer2013a] Developer, A. (2013a). Near field communication android api
guide. developer.android.com/guide/topics/connectivity/nfc/index.html. Official
Android Developer website, acesso em 01-12-2013.
[Developer2007] Developer, N. (2007). Understanding
nfc data exchange format (ndef) messages. develo-
per.nokia.com/Community/Wiki/Understanding NFC Data Exchange Format (NDEF) messages.
Official website, acesso em 01-12-2013.
[Developer2012] Developer, N. (2012). Indt desenvolve primeira solucao de paga-
mento via nfc do brasil. www.indt.org. official website, acesso em 01-12-2013.
REFERÊNCIAS BIBLIOGRÁFICAS 64
[Developer2013b] Developer, N. (2013b). Nokia developer qt. develo-
per.nokia.com/qt. official website, acesso em 01-12-2013.
[Developer2013c] Developer, N. (2013c). Nokia developer symbian c++. deve-
loper.nokia.com/Develop/Featured Technologies/Symbian C++. official website,
acesso em 01-12-2013.
[Developer2013d] Developer, N. (2013d). Nokia developer windows phone. develo-
per.nokia.com/Develop/Windows Phone. official website, acesso em 01-12-2013.
[Dias2010] Dias, R. (2010). RFID Implementation. RFID Center of Exellence.
[Forum2006] Forum, N. (2006). Nfc data exchange format (ndef) - technical specifi-
cation. www.nfc-forum.org/specs. Official website, acesso em 01-12-2013.
[Forum2013] Forum, N. (2013). Nfc forum. www.nfc-forum.org/home. Official web-
site, acesso em 01-12-2013.
[Foursquare2013] Foursquare (2013). Offical foursquare api - client resources. deve-
loper.foursquare.com/resources/client. Acesso em 01-12-2013.
[Guy2009] Guy, R. (2009). The Evolution of Mobile Teaching and Learning. Infor-
ming Science Press.
[Hessel et al.2011] Hessel, F., Villar, R., Dias, R., and Baladei, S. (2011). Implemen-
tando RFID na Cadeia de Negocios. ediPUCRS, segunda edition.
[LinkedIn2011] LinkedIn (2011). Linkedin for symbiam.
store.ovi.com/content/121603?clickSource=search&pos=1. Acesso em 01-12-
2013.
[Michaelis2008] Michaelis (2008). Dicionario Escolar Ingles, Ingles-portugues - Nova
Ortografia. Melhoramentos.
[NXP2009] NXP (2009). Nfc forum type tags white paper v1.0. www.nfc-
forum.org/specs. acesso em 01-12-2013.
[S.A. and M.2010] S.A., A. and M., I. (2010). RFID Handbook: Applications, Tech-
nology, Security, and Privacy. Taylor and Francis.
[Sharma2011] Sharma, C. (2011). How mobile will change the way we spend. Mobile
Future FORWARD.
REFERÊNCIAS BIBLIOGRÁFICAS 65
[Terra2013] Terra, P. (2013). Idc: Android domina mercado de
smartphones e windows avanca. tecnologia.terra.com.br/negocios-
e-ti/idc-android-domina-mercado-de-smartphones-e-windows-
avanca,2d28edf6cad42410VgnCLD2000000ec6eb0aRCRD.html. NotAcia rela-
cionada a venda de smartphones, acesso em 01-12-2013.
[UOL2012] UOL (2012). pagseguro nfc. www.pagseguronfc.uol.com.br. Uol pagse-
guro NFC - official website, acesso em 01-12-2013.