Você está na página 1de 80

0

UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA


ESCOLA SUPERIOR DE TECNOLOGIA

ENGENHARIA DE COMPUTAC
AO

LIRA MOREIRA
ANDRE

SISTEMA MOVEL
BASEADO EM ANDROID-NFC
AUTONOMA

PARA CONEXAO
EM HOTSPOTS

Manaus
2013

LIRA MOREIRA
ANDRE

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 ttulo de Engenheiro de Computacao.

Orientador: Prof. Dr. Carlos Maurcio 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 Corr
ea de Oliveira
Coordenador da Disciplina Projeto Final:
Me. Tiago Eug
enio de Melo
Banca Avaliadora composta por:

Data da Defesa: 27/11/2013.

Prof. Dr. Carlos Maurcio Ser


odio Figueiredo (Orientador)
Prof. Dr. Raimundo Corr
ea de Oliveira
Prof. Dr. Jucimar Maia da Silva J
unior

CIP - Catalogac
ao na Publicac
ao
M835s

MOREIRA, Andre
Sistema Movel baseado em Android-NFC para conexao autonoma em Hotspots / Moreira Andre; [orientado por] Prof. Dr. Carlos Maurcio Serodio Figueiredo - Manaus: UEA, 2013.
240 p.: il.; 30cm
Inclui Bibliografia
Trabalho de Conclusao de Curso (Graduacao em Engenharia de Computacao. Universidade do Estado do Amazonas, 2013.
CDU: 004.45

iii
LIRA MOREIRA
ANDRE

SISTEMA MOVEL
BASEADO EM ANDROID-NFC PARA
EM HOTSPOTS
AUTENTICAC
AO

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 obtencaoo do ttulo de Engenheiro de
Computacao.

Aprovado em: 27/11/2013


BANCA EXAMINADORA

Prof. Carlos Maurcio Ser


odio Figueiredo, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS

Prof. Jucimar Maia da Silva J


unior, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS

Prof. Raimundo Corr


ea de Oliveira, Doutor
UNIVERSIDADE DO ESTADO DO AMAZONAS

iv

Agradecimentos
Ao final desta importante etapa, torna-se difcil fazer agradecimentos sem poder citar todas 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 famlia por amor e seu
crenca em minhas conquistas. A meu irmao
Andre Portela, por sua genialidade contagi` Priscilla Peante, por seu apoio e amizade. A
res, por sua cumplicidade, amizade e amor.
A meu orientador Maurcio e aos demais amigos professores, por sua dedicacao ao ensinar,
por sua paciencia e ajuda em momentos de
crise. Por fim ao INdT, ambiente onde adquiri grandes amizades e conhecimentos.

vi

Resumo

Este projeto tem como objetivo apresentar todos os passos efetuados com no desenvolvimento 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 configuracao 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 AndroidNFC technology based mobile system, capable of performing wireless connections between
a Android smart-phones device and Wi-Fi hotspots by receiving their configuration parameters 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

Sum
ario
Lista de Tabelas

xi

Lista de Figuras

xii

Lista de C
odigos

xiii

1 Introduc
ao
1.1 Contextualizacao . . . . . .
1.2 Descricao do Problema . . .
1.3 Objetivos . . . . . . . . . .
1.3.1 Objetivos Gerais . .
1.3.2 Objetivos Especficos
1.4 Justificativa . . . . . . . . .
1.5 Estrutura do Documento . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

2 Referencial te
orico e trabalhos relacionados
2.1 Decisoes Tecnologicas . . . . . . . . . . . . . . . . . .
2.1.1 Tecnologia Near Field Communication - NFC
2.1.1.1 Definicao . . . . . . . . . . . . . . .
2.1.1.2 Funcionamento . . . . . . . . . . . .
2.1.1.3 Formas de utilizacao . . . . . . . . .
2.1.1.4 Especificacoes essenciais . . . . . . .
2.1.1.5 Aplicacoes . . . . . . . . . . . . . . .
2.1.1.6 Elementos NFC Passivos - Tags . . .
2.1.1.6.0.1
Definicao . . . . . . .
2.1.1.6.0.2
Composicao . . . . .
2.1.1.6.0.3
Tipos . . . . . . . . .
2.1.1.7 Dispositivos Celulares Suportados . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

1
1
2
3
3
3
4
5

.
.
.
.
.
.
.
.
.
.
.
.

6
6
7
7
7
8
8
10
11
11
12
13
14

ix

2.2

2.3

2.1.1.8 Estimativas futuras . . . . .


2.1.2 Ecossistemas Operacionais . . . . . .
2.1.2.1 Windows Phone 7 . . . . .
2.1.2.2 Symbiam OS . . . . . . . .
2.1.2.3 Meego OS . . . . . . . . . .
2.1.2.4 Android OS . . . . . . . . .
2.1.2.5 Windows Phone 8 . . . . .
2.1.3 NFC Forum . . . . . . . . . . . . . .
2.1.3.1 Historia do NFC Forum . .
2.1.3.2 Padronizacao Ndef por NFC
Ferramentas . . . . . . . . . . . . . . . . . .
2.2.1 Android SDK . . . . . . . . . . . . .
2.2.1.1 android.net.wifi . . . . . . .
2.2.1.2 android.nfc . . . . . . . . .
2.2.2 Eclipse IDE . . . . . . . . . . . . . .
Trabalhos Relacionados . . . . . . . . . . . .

. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
forum
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

3 Desenvolvimento T
ecnico
3.1 Especificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.0.1 Definicao de solucao . . . . . . . . . . . . . . . . .
3.1.0.2 Identificacao de Hotsposts . . . . . . . . . . . . . .
3.1.0.3 Estruturacao de dados em Tags NFC - Ndef . . .
3.1.0.4 Acoes definidas . . . . . . . . . . . . . . . . . . . .
3.1.0.5 Arquitetura de solucao . . . . . . . . . . . . . . . .
3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Metodologia de desenvolvimento . . . . . . . . . . . . . . . .
3.3 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Etapa NFC . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2.1 NFC Foreground Dispacher . . . . . . . . . . . . .
3.3.2.2 Classe NfcDefaultProcessor . . . . . . . . . . . . .
3.3.2.2.0.4
Escrita de Tag NFC . . . . . . . .
3.3.2.2.0.5
Leitura de Tag NFC . . . . . . . .
3.3.3 Etapa Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxo completo.
3.3.4.1 NfcWriterActivity . . . . . . . . . . . . . . . . . .
3.3.4.2 MainActivity . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

17
17
18
18
18
18
19
19
19
20
20
20
21
21
21
21

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

24
24
24
26
28
28
30
35
35
37
38
38
39
41
42
43
44
47
47
48

x
3.4

Conclusoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Testes e Avaliac
ao
4.1 Material Utilizado . . . .
4.2 Casos de teste . . . . . .
4.2.1 Gravacao de Tag
4.2.2 Fluxo completo .
4.3 Avaliacao de Resultados

49

.
.
.
.
.

52
52
52
53
54
59

5 Conclus
ao
5.1 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60
60
61

Refer
encias Bibliogr
aficas

63

. . .
. . .
NFC
. . .
. . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

xi

Lista de Tabelas
2.1
2.2

3.1

Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao


a`s suas especificacoes tecnicas. [NXP2009] . . . . . . . . . . . . . . . . . .
Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao
a`s suas aplicacoes. [NXP2009] . . . . . . . . . . . . . . . . . . . . . . . . .
Product Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14
15
36

xii

Lista de Figuras
2.1
2.2

2.3
2.4
2.5
2.6
2.7
2.8

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13

Modulo leitor NFC gerando campo eletromagnetico incidente sobre um elemento NFC passivo. [S.A. and M.2010] . . . . . . . . . . . . . . . . . . . .
Um modulo leitor RFID atuando sobre um elemento RFID passivo possui
as mesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum
et al.2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Possveis Aplicacoes da tecnologia NFC segundo [Forum2013]. . . . . . . .
Tag NFC tipo 1 em relacao a seu tamanho. . . . . . . . . . . . . . . . . .
Raio X de uma Tag NFC composta por circuito ASIC e antena. . . . . . .
Raio X de um Smartcard NFC por [Coshum et al.2013] . . . . . . . . . . .
Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013] .
PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia [UOL2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Disposicao de redes sem fio em uma localidade . . . . . . . . . . . . . . . .
Proposta de solucao Utilizando Tags NFC . . . . . . . . . . . . . . . . . .
Campos identificadores Wi-Fi armazenados em TAG NFC . . . . . . . . .
Fluxo gerados eventos de leitura de Tags NFC em sistema operacional Android . [Developer2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estrutura de mensagem Ndef. [Developer2007] . . . . . . . . . . . . . . . .
Ideia inicial de funcionamento do aplicativo. . . . . . . . . . . . . . . . . .
Diagrama de sequencia do modulo write NFC . . . . . . . . . . . . . . . .
Diagrama de sequencia do modulo responsavel pela conexao WiFi e . . . .
Diagrama de navegacao do aplicativo . . . . . . . . . . . . . . . . . . . . .
Diagrama de classes do projeto. . . . . . . . . . . . . . . . . . . . . . . . .
Packet NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Packet wifiController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tela de gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . .

10
11
12
12
13
16
23
25
26
27
29
29
31
32
32
33
34
39
45
48

xiii
4.1
4.2
4.3
4.4
4.5
4.6
4.7

Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC . . . . . .


Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC . . .
Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC . . .
Gravacao dos parametros handover Wi-Fi de uma rede valida em uma Tag
NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Desativacao manual do adaptador de rede seguido por ativacao automatica
via Tap em Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot
Eventos Tap NFC em Tags NFC distintas, com parametros distintos . . .

54
55
56
57
57
58
59

xiv

Lista de C
odigos
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

Captulo 1
Introdu
c
ao
1.1

Contextualizac
ao

Segundo [Forum2013], o ecossistema ambientado pela tecnologia Near Field Communication-NFC encontra-se plenamente desenvolvido e difuso dentre os pases que compoem
os continentes Europeu, Asiatico, Oceania e Norte Americano. No entanto, esta nao e
a realidade do cenario atual brasileiro, cujos benefcios 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 desenvolvimento, 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 p
ublico-alvo destina-se a um mercado especfico com consumidores de grande poder
aquisitivo, segundo [Sharma2011] e [Guy2009], este fato dificultou a popularizacao da tecnologia 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

Descrio do Problema

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 constitudos 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

Descric
ao do Problema

Durante a u
ltima 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 processadores 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 operacionais embarcados robustos com conceitos inovadores em usabilidade e passveis 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 vdeos,
chamadas de voz por IP, jogos e entretenimento.
Tao logo o usuario experimentou tais novidades, surgio a necessidade de se permanecer online permanentemente, com a maior largura de banda para transferencia de dados
possvel. 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 concluda com sucesso, deve-se executar uma serie de passos
de configuracao entre o dispositivo movel e a rede desejada. Buscando prover comodidade

Objetivos

e praticidade ao usuario e uma melhor distribuicao do servico oferecido, eis que surge a necessidade 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 solucoes.

1.3

Objetivos

1.3.1

Objetivos Gerais

Esta monografia tem como objetivo apresentar a` comunidade academica da Universidade do Estado do Amazonas uma solucao ao problema descrito na secao anterior, utilizando 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 Especficos

Apresentar uma solucao que atenda aos requisitos de automatizacao utilzando Tags
NFC.
Utilizar a padronizacao internacional -Ndef - da tecnologia NFC .
Utilizar APIs disponveis para S.O. Android versao 4.0 ou superior.
Identificar as etapas efetuadas pelo usuario ao iniciar um processo de conexao Wi -Fi
e possvel pontos para automatizacao.
Desenvolver um prototipo de aplicativo para S.O. Android 4.1.

Justicativa

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 tecnologia 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 desenvolver 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 nvel de popularizacao 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.
uma tecnologia com grandes possibilidades de crescimento, baixo custo de implantacao
E
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 Operacional 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: Symbian(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 d
uvidas e aplica-

Estrutura do Documento

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 captulo 2 apresenta conceitualmente as tecnologias utilizadas no decorrer do desenvolvimento do projeto, assim como as
APIs e ferramentas utilizadas e trabalhos relacionados; no captulo 3 e abordada a totalidade do desenvolvimento tecnico do projeto, incluindo especificacoes tecnicas, arquitetura
e implementacao; o captulo 4 apresenta um descricao dos casos de testes realizados e resultados obtidos. Por fim sao apresentadas no captulo 5 as consideracoes finais, onde sao
includos a apresentacao de resultados e possveis trabalhos futuros.

Captulo 2
Referencial te
orico e trabalhos
relacionados
Este captulo aborda em detalhes as referencias teoricas tecnologicas e ferramentas utilizadas durante a fase de desenvolvimento do projeto (captulo 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 disponveis atualmente.

2.1

Decis
oes Tecnol
ogicas

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 potencialidades 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.

Decises Tecnolgicas

2.1.1

Tecnologia Near Field Communication - NFC

Conforme sera observado no captulo 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

Definic
ao

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 compatveis sem o auxlio
de fiacao, de forma segura e rapida, contanto que os dispositivos sejam aproximados e
mantidos dentro de um limite mnimo 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` tecnologia NFC e fundamentada pelo princpio fsico de inducao magnetica, onde a incidencia
de um campo magnetico sobre um circuito eletrico (espira) torna possvel 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 transmissores/receptores.

Decises Tecnolgicas

2.1.1.3

Formas de utilizac
ao

Um sistema NFC pode possuir dois tipos de elementos que podem ser ativos ou passivos.
Um dispositivo passivo e constitudo 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 princpio 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 substituda
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

Especificaco
es essenciais

Em comparacao a`s demais tecnologias sem fio, a tecnologia Near Field Communication
- NFC possui um campo de conexao com alcance extremamente curto. O campo magnetico

Decises Tecnolgicas

Figura 2.1: Modulo leitor NFC gerando campo eletromagnetico incidente sobre um elemento 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 centmetros 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 aproximados um do outro. Este procedimento intitula-se Tap, proveniente da lngua 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

Decises Tecnolgicas

10

Figura 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]
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], caracterstica 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

Aplicaco
es

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

Decises Tecnolgicas

11

correta da tecnologia NFC .

Figura 2.3: Possveis 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 possvel
utilizar a tecnologia NFC mesmo em casos que tenham como requisito a ocupacao de
um espaco fsico 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

Definic
ao Tag NFC retrata um elemento NFC passivo, um modulo

capaz de reagir aos campos eletromagneticos gerados por dispositivos NFC ativos possibilitando que estes insiram novos dados para armazenagem ou extraia um conte
udo previamente armazenado conforme dito em [NXP2009] e [Coshum et al.2013].

Decises Tecnolgicas

12

Figura 2.4: Tag NFC tipo 1 em relacao a seu tamanho.


2.1.1.6.0.2

Composic
ao 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 campos eletromagneticos, apenas os captam e reagem a seus estmulos. Por fim, o circuito
/emphASIC (circuito produzido com uma finalidade especfica) e responsavel por interpretar 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.

Decises Tecnolgicas

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 especfico de utilizacao-alvo. Este estudo aborda informacoes relativas
apenas aos tipos de Tag que seguem ou que sao compatveis 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 conte
udo ativo.
MIFARE Classic - Tag compatvel 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

Decises Tecnolgicas

14

ao tamanho do espaco disponvel para armazenamento de dados nas Tags, tipo de dados,
custo benefcio, modo de utilizacao e suporte.

Tabela 2.1: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao a`s
suas especificacoes tecnicas. [NXP2009]

2.1.1.7

Dispositivos Celulares Suportados

A porcao do ecossistema NFC voltada para telefonia movel e suportada por sua implantacao 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 disponibilizadas 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

Decises Tecnolgicas

15

Tabela 2.2: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao a`s
suas 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-

Decises Tecnolgicas

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]

Decises Tecnolgicas

2.1.1.8

17

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 especfica 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 operacional 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 princpio, 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 possuam 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 individualmente 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.

Decises Tecnolgicas

2.1.2.1

18

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 desenvolvimento 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 utilizado 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 difcil 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


utilizado em larga escala por varios
por Open Handset Alliance, liderada pelo Google. E
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

Decises Tecnolgicas

19

sua versao 2.6.


2.1.2.5

Windows Phone 8

Sistema operacional criado pela Microsoft, utilizado em smartphones Nokia, nao entrou
como possvel 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 F
orum

2.1.3.1

Hist
oria 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 compatveis.
Trabalhar para garantir que os dispositivos NFC sigam todas as normas e especificacoes 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 colaboradores ao redor do mundo conforme [Forum2013].

Ferramentas

2.1.3.2

20

Padronizac
ao Ndef por NFC f
orum

A padronizacao internacional Ndef criada pelo NFC Forum constitui uma parte importante do ecossistema NFC, pois e uma normalizacao internacional e multi-plataforma
de formas de melhor utilizacao da tecnologia. Diversas APIs relacionadas a sistemas operacionais 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 substitudas 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 plataforma 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

2.2.1.1

21

android.net.wifi

Esta API prove meios pelos quais as aplicacoes conseguem se comunicar com a camada de baixo nvel 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 a`s funcionalidades NFC de um dispositivo sob plataforma Android, permite que os aplicativos manipulem mensagem com padronizacao Ndef gravadas
em Tags NFC ou dispositivos em modo Card Emullation, conforme informado na referencia [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 navegacao entre funcoes, APIs, documentacoes e ferramentas de depuracao. Alem de ser
altamente personalizavel de modo a permitir maior flexibilidade ao desenvolvedor de software.

2.3

Trabalhos Relacionados

A inspiracao inicial deste projeto surgiu apos o conhecimentos das facilidades concedidas pela implementacao da tecnologia NFC em diversos casos de uso. Grande parte dessas
aplicacoes sao disponibilizadas em lojas virtuais pertencentes a cada ecossistema operacional, 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 protocolos 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 u
til, 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 m
ultiplos usuarios.
Verifica-se em [UOL2012], a utilizacao do NFC em aplicativos desenvolvidos por empresas 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, segundo material de disponvel 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, disponibilizado 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]

Captulo 3
Desenvolvimento T
ecnico
Este captulo 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

Especificac
ao

Esta sessao aborda todos os aspectos relacionados a definicao da solucao definida. Mostrando conceitos inicias de como a ideia foi concebida e estruturada. Mostra tambem diagramas tecnicos que foram criados com base nos requisitos especificados ao analisar o
contexto do problema.
3.1.0.1

Definic
ao de soluc
ao

Analisando o problema proposto no captulo 1, pode-se visualizar um cenario correspondente `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 possvel trabalhar 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 fsico. Os principais responsaveis por
essa variacao de area de atuacao sao o hardware utilizado e as configuracoes definidas no

Especicao

25

momento de criacao e manutencao de cada hotspot Wi-Fi. Tirando como base o comportamento 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 identificacao de uma rede sem fio, para que desse modo um dispositivo movel celular possa receber
o conte
udo armazenado, identificar e conectar-se a uma rede-alvo. A figura 3.1 mostra
uma visualizacao de como podem ser utilizadas in
umeras Tags NFC para prover pontos
de acesso de diversificadas redes Wi-Fi atuantes dentro de uma mesma localidade, tendo
como u
nica 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

Especicao

26

Figura 3.2: Proposta de solucao Utilizando Tags NFC


3.1.0.2

Identificac
ao 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 constitudo
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 u
nico parametro
necessario para concretizar uma conexao. Nao e surpresa encontrar uma rede Wi-Fi que

Especicao

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 raciocnio, 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 possvel 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.

Especicao

3.1.0.3

28

Estruturac
ao 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

Aco
es 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.

Especicao

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.

Especicao

30

Criar uma conexao Wi-Fi.


Conter tela de informacoes.
Prover a menor interacao possvel com o usuario.
Funcionar com a menor quantidade de toques no display touchscreen.
3.1.0.5

Arquitetura de soluc
ao

Apos ter sido concretizada uma analise conceitual do problema, levantado os requisitos funcionais prioritarios e elaborado um modelo de solucao viavel e de baixo custo, foi
constituda 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 possvel 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 possveis 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 Leitura/conexao em hotspot Wi-Fi ocorrem/atuam de forma isolada e independentes entre
si, permitindo que sejam separadas e encaradas como dois aplicativos distintos especficos
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 u
nico aplicativo que cumprisse com ambas a`s 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.

Especicao

31

Figura 3.6: Ideia inicial de funcionamento do aplicativo.


Processo de conexao em hotspot Wi-Fi.
Visualizacao de tela de informacoes.

Especicao

32

Figura 3.7: Diagrama de sequencia do modulo write NFC

Figura 3.8: Diagrama de sequencia do modulo responsavel pela conexao WiFi e

Especicao

33

Figura 3.9: Diagrama de navegacao do aplicativo

Figura 3.10: Diagrama de classes do projeto.

Especicao
34

Projeto

3.2

35

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 incio 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.

Tabela 3.1: Product Backlog

Projeto
36

Implementao

3.3

37

Implementac
ao

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 funcionalidades 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 funcionalidades fossem:
Inicializar hardware Wi-Fi do dispositivo.
Iniciar descoberta de redes Wi-Fi
Consultar hardware Wi-Fi em busca de redes disponveis.
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 ) armazenados 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.

Implementao

3.3.1

38

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 permissoes de utilizacao de cada dispositivo, requerer sua utilizacao e indicar o nvel 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 especficos, 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 explicacao ocorrera de acordo com as linhas do arquivo. Linhas 5, 6 e 7 - definem o nvel
de API requisitado para a instalacao da App e o nvel 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 a`s 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

Implementao

1
2
3
4
5
6
7
8

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.prototypenfc_wifi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.NFC" />

9
10
11
12
13
14
15
16

<uses-feature android:name="android.hardware.nfc" android:required="true" />


<uses-feature android:name="android.hardware.wifi" android:required="true"/>

17
18

<application android:label="@string/app_name">
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

19
20
21
22
23
24
25
26
27
28
29
30
31
32

<activity android:name=".NfcWriterActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

33
34
35
36
37
38
39
40
41

39

</application>
</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

Implementao

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 a`s Activities do projeto sendo necessario 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 Android e seus aplicativos. O metodo enable
-linhas 24 a 29- tem seu funcionamento da seguinte forma: primeiramente cria-se um filtro
de intents para coletar conte
udos relacionados `a descoberta de Tags NFC (linha). Em
seguida cria uma lista de filtros vazia e atribui a esta lista um u
nico 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 atribuda. Logo,
so serao validas intents que possuam conte
udo relativo a deteccao de Tags NFC.

Implementao

1
2
3
4
5
6
7
8
9
10
11

package nfcController;
import
import
import
import
import
import

android.app.Activity;
android.app.PendingIntent;
android.content.Intent;
android.content.IntentFilter;
android.nfc.NfcAdapter;
android.util.Log;

public class NfcForegroundDispatcher implements ForegroundDispatcher {


private
private
private
private

12
13
14
15
16

static final String TAG = "NfcForegroundDispatcher";


final NfcAdapter nfcAdapter;
final PendingIntent nfcPendingIntent;
final Activity receivedActivity;

public NfcForegroundDispatcher(Activity activity) {


receivedActivity = activity;
nfcAdapter = NfcAdapter.getDefaultAdapter(activity);
nfcPendingIntent = PendingIntent.getActivity(activity, 0,
new Intent(activity, activity.getClass()).addFlags(Intent.
FLAG_ACTIVITY_SINGLE_TOP), 0);
}
public void enable() {
Log.d(TAG, "enableForegroundMode");
IntentFilter tagDetected = new IntentFilter(NfcAdapter.\
ACTION_TAG_DISCOVERED);
IntentFilter[] TagFilters = new IntentFilter[] { tagDetected };
nfcAdapter.enableForegroundDispatch(receivedActivity,
nfcPendingIntent, TagFilters, null);
}
public void disable() {
Log.d(TAG, "disableForegroundMode");
nfcAdapter.disableForegroundDispatch(receivedActivity);
}

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

41

Codigo 3.3.2: Implementacao da interface Foreground Dispatcher


3.3.2.2

Classe NfcDefaultProcessor

A Classe NfcDefaultProcessor implementa quatro metodos p


ublicos:
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

Implementao

1
2
3
4
5
6

package com.example.prototypenfc_wifi;
import java.io.IOException;
public class NfcWriterActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nfc_tag_writer);
foregroundDispatcher = new NfcForegroundDispatcher(this);
}

7
8
9
10
11
12
13
14

@Override
public void onNewIntent(Intent intent) {

15
16

17
18
19

@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
foregroundDispatcher.enable();
}

20
21
22
23
24
25
26
27

@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
foregroundDispatcher.disable();
}

28
29
30
31
32

42

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 utilidade. 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 auxlio 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 concluda, todos os

Implementao

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.
public void writeNdefTag(Tag tag, String ssid, String password)
throws UnsupportedEncodingException, IOException, FormatException {
if (ssid == null){
throw new IllegalArgumentException();
}
if (ssid.isEmpty()){
throw new IllegalArgumentException();
}
if (password == null){
throw new IllegalArgumentException();
}
if (password.isEmpty()){
throw new IllegalArgumentException();
}
NdefRecord[] records = { createNdefRecord(ssid),
createNdefRecord(password) };
NdefMessage message = new NdefMessage(records);
Ndef ndef = Ndef.get(tag);
ndef.connect();
ndef.writeNdefMessage(message);
ndef.close();
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Codigo 3.3.4: Implementacao de escrita em formato Ndef em Tag NFC

1
2
3
4
5
6
7

private NdefRecord createNdefRecord(String text) throws


UnsupportedEncodingException {
byte[] payload = text.getBytes();
NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_TEXT, null, payload);
return ndefRecord;
}

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 conte
udo 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 conte
udo devera resgatado e listado - linha 07 -, em seguida convertido

Implementao

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 conte
udo
restante atribudo 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

public void readNdefTag(Intent intent) {


networkPWD = null;
networkSSID = null;
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
Parcelable[] messages;
try {
messages = intent.getParcelableArrayExtra(NfcAdapter.
EXTRA_NDEF_MESSAGES);
for (Parcelable message : messages) {
NdefMessage msg = (NdefMessage) message;
for (NdefRecord record : msg.getRecords()) {
String tagPayload = new String(record.getPayload());
if (tagPayload.startsWith(SSID)) {
Log.d(TAG, "Retriving Network SSID");
networkSSID = tagPayload.replaceFirst(SSID, "");
}
if (tagPayload.startsWith(PWD)) {
Log.d(TAG, "Retriving Network Password");
networkPWD = tagPayload.replaceFirst(PWD, "");
}
}
}
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, e.getMessage());
}
} else {
Log.d(TAG, "UNEXPECTED ACTION - " + intent.getAction());
Toast.makeText(this, "Unexpected Action - " + intent.getAction(),
Toast.LENGTH_LONG).show();
}
}

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 distribudos da seguinte forma:
Interface 1: WIFI.java
Implementacao: WiFiController.java

Implementao

45

Figura 3.12: Packet wifiController


Classe independente: WiFiConfigurator.java enditemize
A interface WIFI.java disponibiliza de metodos de controle de adaptador Wi-Fi requisitados 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 configurada 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 WiFiController 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 utilizados dentre todas as possibilidades disponveis. 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 WifiConfigurator, utilizar esta derivacao da API provou-se igualmente simples merecendo

Implementao

46

poucos pontos de destaque. No entanto vale `a pena citar que nas linhas 12, 15 e 18
e necessario que ao incio e ao final de cada string, sejam inseridas aspas duplas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14

package wifiController;
import
import
import
import
import
import
import
import

public class WiFiController extends Activity implements WIFI{


private WifiManager wifiManager;
public WiFiController(Context context){
wifiManager = (WifiManager)context.getSystemService(Context.
WIFI_SERVICE);
}
public boolean checkWifiEnabled(){
return wifiManager.isWifiEnabled();
}
public boolean setWifiEnabled(boolean enable)
{
return wifiManager.setWifiEnabled(enable);
}
public boolean startWifiScan(){
return wifiManager.startScan();
}
public List<ScanResult> getScanResults(){
return wifiManager.getScanResults();
}
public WifiManager getWifiManager(){
return wifiManager;
}
public void disconnect() throws RuntimeException{
try{
wifiManager.disconnect();
}catch (Exception e) {
e.printStackTrace();
Log.d("disconnect failure", e.getMessage());
}
}
public void connect() {
wifiManager.reconnect();
}
public void addWifiNetwork(WiFiConfigurator wifiConfigurator) {
wifiManager.addNetwork(wifiConfigurator.getWifiConfiguration());
}
public void enableNetwork(int id) {
wifiManager.enableNetwork(id, true) ;
}
public List<WifiConfiguration> getConfiguredNetworks(){
return wifiManager.getConfiguredNetworks();
}

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

java.util.List;
android.app.Activity;
android.content.Context;
android.net.wifi.ScanResult;
android.net.wifi.WifiConfiguration;
android.net.wifi.WifiManager;
android.util.Log;
android.widget.Toast;

Codigo 3.3.7: Implementacao WiFiController

Implementao

1
2
3
4
5
6

package wifiController;
import android.net.wifi.WifiConfiguration;
public class WiFiConfigurator{
private WifiConfiguration wifiConfiguration;

7
8

public WiFiConfigurator(){
wifiConfiguration = new WifiConfiguration();
}
public void configureSSID(String ssid){
wifiConfiguration.SSID = ("\"" + ssid + "\"");
}
public void configureWpaPassword(String password){
wifiConfiguration.preSharedKey = ("\"" + password + "\"");
}
public void setWepPassword(String password){
wifiConfiguration.wepKeys[0] = ("\"" + password + "\"");
wifiConfiguration.wepTxKeyIndex = 0;
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.
KeyMgmt.NONE);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.
GroupCipher.WEP40);
}
public void setOpenNetworkPassword(){
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.
KeyMgmt.NONE);
}
public WifiConfiguration getWifiConfiguration(){
return wifiConfiguration;
}

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

47

Codigo 3.3.8: Implementacao WiFiConfigurator

3.3.4 Etapa de integrac


ao NFC-WiFi - Criac
ao de fluxo
completo.
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 atividades desejado, conforme mostrado na sessao arquitetura de solucao, foram criadas
duas: Activity (conjunto formado por uma tela e todas a ela relacionadas), NfcWriterActivity (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 obtencao 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

Implementao

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 incio 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 conte
udo, 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

Concluses

49

os parametros de configuracao nao sejam poludos por dados previamente salvos, logo
as variaveis globais que guardam esses valores devem ser limpas recebendo conte
udo
nulo (linhas 03 e 04), para que assim o adaptador possa efetuar a leitura da Tag
(linha 05) e extrair um novo conte
udo -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

Conclus
oes

A implementacao deste projeto acarretou valiosos conhecimentos quanto `a integracao


de m
ultiplos 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 especficos 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.

Concluses

1
2
3
4
5
6
7
8
9
10
11
12
13

50

public void onNewIntent(Intent intent) {


Log.d(TAG, onNewIntent);
collectedSSID = null;
collectedPWD = null;
nfc.readNdefTag(intent);
if (nfc.getSSID() != null) {
collectedSSID = nfc.getSSID();
collectedPWD = nfc.getPWD();
} else {
Toast.makeText(this, ssidNotFound, Toast.LENGTH_LONG).show();
}
if(collectedSSID != null & collectedPWD != null){
if(!wifi.checkWifiEnabled()){
wifi.setWifiEnabled(true);
Toast.makeText(this, wifiEnabler, Toast.LENGTH_LONG).show();
Log.d(TAG, wifiEnabled );
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
scanResultList = wifi.getScanResults();
boolean networkFound = false;
for( ScanResult incResulList : scanResultList ) {
if(collectedSSID.equals(incResulList.SSID)){
networkFound = true;
collectedEncryptionType = incResulList.capabilities;
wifiConfigurator = new WiFiConfigurator();
wifiConfigurator.configureSSID(collectedSSID);

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

if (collectedEncryptionType.contains(encryptionTagWpa)){
wifiConfigurator.configureWpaPassword(collectedPWD);
Log.d(TAG, wpa);
}else if(collectedEncryptionType.
contains(encryptionTagWep)){
wifiConfigurator.setWepPassword(collectedPWD);
Log.d(TAG, wep);
}else{
wifiConfigurator.setOpenNetworkPassword();
Log.d(TAG, openNetwork);
}
wifi.addWifiNetwork(wifiConfigurator);
Log.d(TAG, addNetwork);
for( WifiConfiguration configuredNetworkList : wifi.
getConfiguredNetworks()) {
if(configuredNetworkList.SSID.equals("\"" +
collectedSSID + "\"")) {
Log.d(TAG, attemptingConnection);
wifi.disconnect();
wifi.enableNetwork(configuredNetworkList.
networkId);
wifi.connect();
}
}

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

}
}
if (!networkFound ) {
Toast.makeText(this, networkNotFound, Toast.LENGTH_LONG).show();
}
}catch (Exception e) {
Log.d(TAG, e.getMessage());
Toast.makeText(this, e + noWifi, Toast.LENGTH_LONG).show();
}

60
61
62
63
64
65
66
67
68

}
}

Codigo 3.4.1: Implementacao e processo de conexao Wi-Fi via Tag NFC

Concluses

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

package com.example.prototypenfc_wifi;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import

java.io.IOException;
java.io.UnsupportedEncodingException;
nfcController.ForegroundDispatcher;
nfcController.NFC;
nfcController.NfcDefaultProcessor;
nfcController.NfcForegroundDispatcher;
android.app.Activity;
android.content.Intent;
android.nfc.FormatException;
android.nfc.NfcAdapter;
android.nfc.Tag;
android.os.Bundle;
android.util.Log;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.Toast;

public class NfcWriterActivity extends Activity{


private
private
private
private
private

23
24
25
26
27
28
29
30

String TAG = "nfc_writer_activity";


String SSID;
String PASSWORD;
NFC nfc;
ForegroundDispatcher foregroundDispatcher;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nfc_tag_writer);
foregroundDispatcher = new NfcForegroundDispatcher(this);
nfc = new NfcDefaultProcessor();
}

31
32
33
34
35
36
37
38

@Override
public void onNewIntent(Intent intent) {
Tag newTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
EditText editSsid = (EditText) this.findViewById(R.id.nfc_writer_ssid);
SSID = "ssid:" + editSsid.getText().toString();
EditText editPwd = (EditText) this.findViewById(R.id.nfc_writer_pwd);
PASSWORD = "pwd:" + editPwd.getText().toString();
try {
nfc.writeNdefTag(newTag, SSID, PASSWORD);
Toast.makeText(this, "Tag written", Toast.LENGTH_LONG).show();
} catch (UnsupportedEncodingException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
} catch (FormatException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
foregroundDispatcher.enable();
}
@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
foregroundDispatcher.disable();
}

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

51

Codigo 3.4.2: Implementacao de acao realizada no layout de gravacao de Tags NFC

Captulo 4
Testes e Avalia
c
ao
Este captulo aborda como foram realizados testes funcionais e mostra seu comportamento em resposta a cada cenario de teste. Esta etapa deve ser considerada extremamente 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

4.2.1

53

Grava
c
ao 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
importante ressaltar que a quantidade de caracteres indicada em cada
Classic 4k. E
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 conseguiu consegiu realizar a tarefa com sucesso e sem perda de dados. A Tag Type
1 tornou-se inacessvel 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 MIFARE 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 incio do teste de fluxo completo.
Sendo o proximo passo mostrado na figura 4.5, onde caso o adaptador de rede WiFi 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

Influ
encia de um u
nico hotspot
Este caso de teste foi ambientado com influencia de apenas um hotspot e utilizado
um u
nico 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

Influ
encia de m
ultiplos hotspots
Este caso de teste foi ambientado com influencia de tres pontos de acesso Wi-Fi
apenas um hotspot e utilizado um u
nico 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 Tag
NFC

Figura 4.5: Desativacao manual do adaptador de rede seguido por ativacao automatica via
Tap em Tag NFC

Hotspots com o mesmo SSID


Foram criados hotsposts distintos mas que utilizavam o mesmo SSID. Houve incompatibilidade 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.

M
ultiplos Taps em Tags NFC distintas
Este teste consistiu em efetuar m
ultiplos Taps NFC em Tags com parametros referentes a 3 redes sem fio distintas, notou-se que a cada Tap o processo retornava ao
estado inical, logo ao efetuar o u
ltimo 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

Avaliao de Resultados

59

Figura 4.7: Eventos Tap NFC em Tags NFC distintas, com parametros distintos

4.3

Avaliac
ao 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 inacessvel. 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.

Captulo 5
Conclus
ao
5.1

Considerac
oes 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.
importante lembrar que pessoas gostam de comodidade, mas isso nao e suficiente
E
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 a`s 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 crticas 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 fsicos, 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 p
ublicas com shoppings, parques, aeroportos ou em estabelecimentos 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 a`s 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 evoludo 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 incompatveis com Ndef .
Implementacao de NFC Card Emulation.
Tratamento de funcionalidades aplicativo via conexao com back-end do sistema.
Controle de sistemas microprocessados.
Autenticacao de usuario com sistemas localizados na Web ou em redes privadas.
Acionamento e desativacao de dispositivos a` distancia.
Efetivacao de recrusos via leitura de coordenadas GPS.

Refer
encias Bibliogr
aficas
[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 internacional 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).

http://developer.android.com/tools/index.html.

Developer

tools.

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,
nfc

data

exchange

N.

(2007).

format

(ndef)

Understanding
messages.

develo-

per.nokia.com/Community/Wiki/Understanding NFC Data Exchange Format (NDEF) messa


Official website, acesso em 01-12-2013.
[Developer2012] Developer, N. (2012). Indt desenvolve primeira solucao de pagamento via nfc do brasil. www.indt.org. official website, acesso em 01-12-2013.

REFERNCIAS BIBLIOGRFICAS

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. developer.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 specification. www.nfc-forum.org/specs. Official website, acesso em 01-12-2013.
[Forum2013] Forum, N. (2013). Nfc forum. www.nfc-forum.org/home. Official website, acesso em 01-12-2013.
[Foursquare2013] Foursquare (2013). Offical foursquare api - client resources. developer.foursquare.com/resources/client. Acesso em 01-12-2013.
[Guy2009] Guy, R. (2009). The Evolution of Mobile Teaching and Learning. Informing Science Press.
[Hessel et al.2011] Hessel, F., Villar, R., Dias, R., and Baladei, S. (2011). Implementando RFID na Cadeia de Negocios. ediPUCRS, segunda edition.
[LinkedIn2011] LinkedIn

(2011).

Linkedin

store.ovi.com/content/121603?clickSource=search&pos=1.

for

symbiam.

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, Technology, Security, and Privacy. Taylor and Francis.
[Sharma2011] Sharma, C. (2011). How mobile will change the way we spend. Mobile
Future FORWARD.

REFERNCIAS BIBLIOGRFICAS

[Terra2013] Terra,
smartphones

P.

65

(2013).

windows

Idc:
avanca.

Android

domina

mercado

de

tecnologia.terra.com.br/negocios-

e-ti/idc-android-domina-mercado-de-smartphones-e-windowsavanca,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 pagseguro NFC - official website, acesso em 01-12-2013.

Você também pode gostar