sistema movel baseado em android-nfc para...

80
0 UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA ESCOLA SUPERIOR DE TECNOLOGIA ENGENHARIA DE COMPUTA¸ C ˜ AO ANDR ´ E LIRA MOREIRA SISTEMA M ´ OVEL BASEADO EM ANDROID-NFC PARA CONEX ˜ AO AUT ˆ ONOMA EM HOTSPOTS Manaus 2013

Upload: doanhanh

Post on 10-Nov-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

0

UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA

ESCOLA SUPERIOR DE TECNOLOGIA

ENGENHARIA DE COMPUTACAO

ANDRE LIRA MOREIRA

SISTEMA MOVEL BASEADO EM ANDROID-NFC

PARA CONEXAO AUTONOMA EM HOTSPOTS

Manaus

2013

ANDRE LIRA MOREIRA

SISTEMA MOVEL BASEADO EM ANDROID-NFC PARA CONEXAO

AUTONOMA EM HOTSPOTS

Trabalho de Conclusao de Curso apresentado

a banca avaliadora do Curso de Engenharia

de Computacao, da Escola Superior de

Tecnologia, da Universidade do Estado do

Amazonas, como pre-requisito para obtencao

do tıtulo de Engenheiro de Computacao.

Orientador: Prof. Dr. Carlos Maurıcio Serodio Figueiredo

Manaus

2013

ii

Universidade do Estado do Amazonas - UEA

Escola Superior de Tecnologia - EST

Reitor:

Cleinaldo de Almeida Costa

Vice-Reitor:

Raimundo de Jesus Teixeira Barradas

Diretor da Escola Superior de Tecnologia:

Me. Cleto Cavalcante de Souza Leal

Coordenador do Curso de Engenharia de Computacao:

Dr. Raimundo Correa de Oliveira

Coordenador da Disciplina Projeto Final:

Me. Tiago Eugenio de Melo

Banca Avaliadora composta por: Data da Defesa: 27/11/2013.

Prof. Dr. Carlos Maurıcio Serodio Figueiredo (Orientador)

Prof. Dr. Raimundo Correa de Oliveira

Prof. Dr. Jucimar Maia da Silva Junior

CIP - Catalogacao na Publicacao

M835s MOREIRA, Andre

Sistema Movel baseado em Android-NFC para conexao autonoma em Hots-

pots / Moreira Andre; [orientado por] Prof. Dr. Carlos Maurıcio Serodio Fi-

gueiredo - Manaus: UEA, 2013.

240 p.: il.; 30cm

Inclui Bibliografia

Trabalho de Conclusao de Curso (Graduacao em Engenharia de Computa-

cao. Universidade do Estado do Amazonas, 2013.

CDU: 004.45

iii

ANDRE LIRA MOREIRA

SISTEMA MOVEL BASEADO EM ANDROID-NFC PARA

AUTENTICACAO EM HOTSPOTS

Trabalho de Conclusao de Curso apre-

sentado a banca avaliadora do Curso de

Engenharia de Computacao, da Escola

Superior de Tecnologia, da Universidade do

Estado do Amazonas, como pre-requisito

para obtencaoo do tıtulo de Engenheiro de

Computacao.

Aprovado em: 27/11/2013BANCA EXAMINADORA

Prof. Carlos Maurıcio Serodio Figueiredo, Doutor

UNIVERSIDADE DO ESTADO DO AMAZONAS

Prof. Jucimar Maia da Silva Junior, Doutor

UNIVERSIDADE DO ESTADO DO AMAZONAS

Prof. Raimundo Correa de Oliveira, Doutor

UNIVERSIDADE DO ESTADO DO AMAZONAS

iv

v

Agradecimentos

Ao final desta importante etapa, torna-se di-

fıcil fazer agradecimentos sem poder citar to-

das as pessoas que me influenciaram ao longo

do desenvolvimento deste projeto, por isso

dedico a concretizacao deste sonho a todos.

E com um carinho especial, agradeco a Deus,

agradeco a minha famılia por amor e seu

crenca em minhas conquistas. A meu irmao

Andre Portela, por sua genialidade contagi-

ante, por seu apoio e amizade. A Priscilla Pe-

res, por sua cumplicidade, amizade e amor.

A meu orientador Maurıcio e aos demais ami-

gos professores, por sua dedicacao ao ensinar,

por sua paciencia e ajuda em momentos de

crise. Por fim ao INdT, ambiente onde ad-

quiri grandes amizades e conhecimentos.

vi

Resumo

Este projeto tem como objetivo apresentar todos os passos efetuados com no desenvol-

vimento de um sistema movel baseado em Android-NFC, capaz de realizar conexoes sem

fio entre smartphones Android e hotspots Wi-Fi, ao receber seus parametros de configura-

cao atraves de eventos Tap em Tags NFC. Esperando que estas informacoes esclarecam a

comunidade desenvolvedora de software do Estado do Amazonas sobre as comodidades e

possibilidades em automacao providas pela utilizacao correta da tecnologia NFC. Todas as

questoes referentes a sua modelagem conceitual, arquitetura de sistema e implementacao

serao abordadas e explicadas.

Palavras Chave: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC,

Hotspot, smartphone

vii

Abstract

This project has the purpose to present all the steps taken on the creation of an Android-

NFC technology based mobile system, capable of performing wireless connections between

a Android smart-phones device and Wi-Fi hotspots by receiving their configuration pa-

rameters from a Tap event on a NFC TAG. Hopping that these information provides

enlightening to the Amazon software developer community about the commodities and

automation possibilities provided by the use right use of NFC technology. All matters

regarding its conceptual design, system architecture and implementation will be concerned

and therefore explained.

Key-words: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC, Hotspot,

smartphone

viii

Sumario

Lista de Tabelas xi

Lista de Figuras xii

Lista de Codigos xiii

1 Introducao 1

1.1 Contextualizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Descricao do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.1 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3.2 Objetivos Especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.4 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Referencial teorico e trabalhos relacionados 6

2.1 Decisoes Tecnologicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.1.1 Tecnologia Near Field Communication - NFC . . . . . . . . . . . . 7

2.1.1.1 Definicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1.2 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1.3 Formas de utilizacao . . . . . . . . . . . . . . . . . . . . . 8

2.1.1.4 Especificacoes essenciais . . . . . . . . . . . . . . . . . . . 8

2.1.1.5 Aplicacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.1.6 Elementos NFC Passivos - Tags . . . . . . . . . . . . . . . 11

2.1.1.6.0.1 Definicao . . . . . . . . . . . . . . . . . . . 11

2.1.1.6.0.2 Composicao . . . . . . . . . . . . . . . . . 12

2.1.1.6.0.3 Tipos . . . . . . . . . . . . . . . . . . . . . 13

2.1.1.7 Dispositivos Celulares Suportados . . . . . . . . . . . . . . 14

ix

2.1.1.8 Estimativas futuras . . . . . . . . . . . . . . . . . . . . . . 17

2.1.2 Ecossistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.2.1 Windows Phone 7 . . . . . . . . . . . . . . . . . . . . . . 18

2.1.2.2 Symbiam OS . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.2.3 Meego OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.2.4 Android OS . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.2.5 Windows Phone 8 . . . . . . . . . . . . . . . . . . . . . . 19

2.1.3 NFC Forum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.3.1 Historia do NFC Forum . . . . . . . . . . . . . . . . . . . 19

2.1.3.2 Padronizacao Ndef por NFC forum . . . . . . . . . . . . . 20

2.2 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.1 Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.1.1 android.net.wifi . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2.1.2 android.nfc . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2.2 Eclipse IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Desenvolvimento Tecnico 24

3.1 Especificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1.0.1 Definicao de solucao . . . . . . . . . . . . . . . . . . . . . 24

3.1.0.2 Identificacao de Hotsposts . . . . . . . . . . . . . . . . . . 26

3.1.0.3 Estruturacao de dados em Tags NFC - Ndef . . . . . . . 28

3.1.0.4 Acoes definidas . . . . . . . . . . . . . . . . . . . . . . . . 28

3.1.0.5 Arquitetura de solucao . . . . . . . . . . . . . . . . . . . . 30

3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2.1 Metodologia de desenvolvimento . . . . . . . . . . . . . . . . . . . . 35

3.3 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.3.1 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3.2 Etapa NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3.2.1 NFC Foreground Dispacher . . . . . . . . . . . . . . . . . 39

3.3.2.2 Classe NfcDefaultProcessor . . . . . . . . . . . . . . . . . 41

3.3.2.2.0.4 Escrita de Tag NFC . . . . . . . . . . . . 42

3.3.2.2.0.5 Leitura de Tag NFC . . . . . . . . . . . . 43

3.3.3 Etapa Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxo completo. . . . . 47

3.3.4.1 NfcWriterActivity . . . . . . . . . . . . . . . . . . . . . . 47

3.3.4.2 MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . 48

x

3.4 Conclusoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4 Testes e Avaliacao 52

4.1 Material Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.2 Casos de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.2.1 Gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.2.2 Fluxo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.3 Avaliacao de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5 Conclusao 60

5.1 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Referencias Bibliograficas 63

xi

Lista de Tabelas

2.1 Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao

as suas especificacoes tecnicas. [NXP2009] . . . . . . . . . . . . . . . . . . 14

2.2 Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao

as suas aplicacoes. [NXP2009] . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Product Backlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

xii

Lista de Figuras

2.1 Modulo leitor NFC gerando campo eletromagnetico incidente sobre um ele-

mento NFC passivo. [S.A. and M.2010] . . . . . . . . . . . . . . . . . . . . 9

2.2 Um modulo leitor RFID atuando sobre um elemento RFID passivo possui

as mesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum

et al.2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 Possıveis Aplicacoes da tecnologia NFC segundo [Forum2013]. . . . . . . . 11

2.4 Tag NFC tipo 1 em relacao a seu tamanho. . . . . . . . . . . . . . . . . . 12

2.5 Raio X de uma Tag NFC composta por circuito ASIC e antena. . . . . . . 12

2.6 Raio X de um Smartcard NFC por [Coshum et al.2013] . . . . . . . . . . . 13

2.7 Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013] . 16

2.8 PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia -

[UOL2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1 Disposicao de redes sem fio em uma localidade . . . . . . . . . . . . . . . . 25

3.2 Proposta de solucao Utilizando Tags NFC . . . . . . . . . . . . . . . . . . 26

3.3 Campos identificadores Wi-Fi armazenados em TAG NFC . . . . . . . . . 27

3.4 Fluxo gerados eventos de leitura de Tags NFC em sistema operacional An-

droid . [Developer2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.5 Estrutura de mensagem Ndef. [Developer2007] . . . . . . . . . . . . . . . . 29

3.6 Ideia inicial de funcionamento do aplicativo. . . . . . . . . . . . . . . . . . 31

3.7 Diagrama de sequencia do modulo write NFC . . . . . . . . . . . . . . . . 32

3.8 Diagrama de sequencia do modulo responsavel pela conexao WiFi e . . . . 32

3.9 Diagrama de navegacao do aplicativo . . . . . . . . . . . . . . . . . . . . . 33

3.10 Diagrama de classes do projeto. . . . . . . . . . . . . . . . . . . . . . . . . 34

3.11 Packet NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.12 Packet wifiController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.13 Tela de gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 48

xiii

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

4.2 Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC . . . 55

4.3 Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC . . . 56

4.4 Gravacao dos parametros handover Wi-Fi de uma rede valida em uma Tag

NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.5 Desativacao manual do adaptador de rede seguido por ativacao automatica

via Tap em Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.6 Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot 58

4.7 Eventos Tap NFC em Tags NFC distintas, com parametros distintos . . . 59

xiv

Lista de Codigos

3.3.1 Arquivo Android Manifest (xml) . . . . . . . . . . . . . . . . . . . . . . . . 39

3.3.2 Implementacao da interface Foreground Dispatcher . . . . . . . . . . . . . 41

3.3.3 Instanciacao, habilitacao e desativacao do modo Foreground Dispacher . . 42

3.3.4 Implementacao de escrita em formato Ndef em Tag NFC . . . . . . . . . . 43

3.3.5 Criando NdefRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.3.6 Leitura de Tag NFC e extracao de records SSID Password. . . . . . . . . 44

3.3.7 Implementacao WiFiController . . . . . . . . . . . . . . . . . . . . . . . . 46

3.3.8 Implementacao WiFiConfigurator . . . . . . . . . . . . . . . . . . . . . . . 47

3.4.1 Implementacao e processo de conexao Wi-Fi via Tag NFC . . . . . . . . . 50

3.4.2 Implementacao de acao realizada no layout de gravacao de Tags NFC . . . 51

Capıtulo 1

Introducao

1.1 Contextualizacao

Segundo [Forum2013], o ecossistema ambientado pela tecnologia Near Field Communi-

cation-NFC encontra-se plenamente desenvolvido e difuso dentre os paıses que compoem

os continentes Europeu, Asiatico, Oceania e Norte Americano. No entanto, esta nao e

a realidade do cenario atual brasileiro, cujos benefıcios sao pouco conhecidos, tanto pelos

usuarios de smartphones como pela comunidade de desenvolvedores de software embarcado,

resultando em um ecossistema imaturo ainda em fase de desenvolvimento.

A razao para tal deve-se principalmente ao fato de que a partir de sua data de de-

senvolvimento, ano de 2002, a tecnologia NFC foi disponibilizada em poucos modelos de

dispositivos moveis direcionados ao mercado brasileiro conforme pode ser visualizado na

referencia [Arena2013]. Alem disso, estes eram classificados como smartphones high-end,

cujo publico-alvo destina-se a um mercado especıfico com consumidores de grande poder

aquisitivo, segundo [Sharma2011] e [Guy2009], este fato dificultou a popularizacao da tec-

nologia entre as massas de baixa renda.

Segundo [Arena2013] e [Agar2004], os smartphones ganharam popularidade, o que era

tendencia se tornou uma hegemonia, chegando a ocorrer muitos casos onde os usuarios

substituiram seuspersonal computers - PCs por smartphones. A quantidade de dispositivos

no mercado atual brasileiro passou a ser expressiva e os consumidores se tornaram cada

Descrição do Problema 2

vez mais exigentes, gerando grande concorrencia entre empresas montadoras de telefonia

celular: Samsung, Apple, Nokia, HTC, Motorola, Sony e etc.

Isso levou ao desenvolvimento de dispositivos celulares com especificacoes de hardware

adequadas as necessidades de cada tipo de usuario consumidor e aos requisitos exigidos

pelos ecossistemas de software utilizados. Estes ecossistemas sao constituıdos e suportados

pelas plataformas utilizadas: Android, Windows Phone, IOS, Meego, entre outras.

Segundo [Coshum et al.2013], [Hessel et al.2011] e [Forum2013], parte do ecossistema

NFC esta voltado para aplicacoes embarcadas independentes do ecossistema de telefonia

movel, agregando valor a tecnologia.

1.2 Descricao do Problema

Durante a ultima decada, houveram saltos evolutivos significativos em todas as areas

tecnologicas. Abordando como escopo a area de tecnologia de telecomunicacoes, pode-se

ressaltar o surgimento e aplicacao de diversos componentes de hardware, como processa-

dores dual-core e quad-core, modulos de memoria RAM, modulos de conectividade sem

fio, displays touchscreen, entre outros que possibilitaram a compilacao de dispositivos de

telefonia movel muito mais potentes e com maior desempenho.

Estas novas possibilidades em hardware necessitaram do suporte de sistemas operacio-

nais embarcados robustos com conceitos inovadores em usabilidade e passıveis de conexao

com a internet, criando infinitas possibilidades de servicos ao usuario, podendo-se citar

como principais o acesso a redes sociais, servicos de geo-localizacao , streaming de vıdeos,

chamadas de voz por IP, jogos e entretenimento.

Tao logo o usuario experimentou tais novidades, surgio a necessidade de se permane-

cer online permanentemente, com a maior largura de banda para transferencia de dados

possıvel. Com a finalidade de sanar tal necessidade, muitos administradores de localidades

- Centros medicos, aeroportos, Shopping centers, ambientes domesticos e corporativos -

decidiram disponibilizar internet aos seus visitantes e/ou colaboradores, de forma gratuita

ou nao, por meio de hotspots, que sao nada mais que pontos de acesso Wi -Fi.

Para que a conexao seja concluıda com sucesso, deve-se executar uma serie de passos

de configuracao entre o dispositivo movel e a rede desejada. Buscando prover comodidade

Objetivos 3

e praticidade ao usuario e uma melhor distribuicao do servico oferecido, eis que surge a ne-

cessidade de automatizar o processo de conexao entre o smartphone e o hotspot, atenuando

a interacao do usuario tanto com seu dispositivo quanto com os agentes responsaveis por

fornecer as configuracoes do hotspot alvo. Confome pode ser visto [Forum2013] e [Coshum

et al.2013], pode-se adequar conceitos tecnologicos aos requisitos de qualidade de forma

eficiente quando utilizando a tecnologia Near Field Communication-NFC como recurso

provedor de automacao, por abranger quantidade significativas de possibilidades em solu-

coes.

1.3 Objetivos

1.3.1 Objetivos Gerais

Esta monografia tem como objetivo apresentar a comunidade academica da Universi-

dade do Estado do Amazonas uma solucao ao problema descrito na secao anterior, uti-

lizando a tecnologia NFC como base para automatizar processos de conexao entre um

dispositivo movel e redes Wi -Fi, mostrando a padronizacao criada por NFC Forum - (Ndef

- que permite a utilizacao da tecnologia NFC de forma simples e portavel para diversos

sistemas operacionais.

1.3.2 Objetivos Especıficos

• Apresentar uma solucao que atenda aos requisitos de automatizacao utilzando Tags

NFC.

• Utilizar a padronizacao internacional -Ndef - da tecnologia NFC .

• Utilizar APIs disponıveis para S.O. Android versao 4.0 ou superior.

• Identificar as etapas efetuadas pelo usuario ao iniciar um processo de conexao Wi -Fi

e possıvel pontos para automatizacao.

• Desenvolver um prototipo de aplicativo para S.O. Android 4.1.

Justi�cativa 4

1.4 Justificativa

A tecnologia NFC, vem acompanhando nativamente diversos modelos de Smartphones

produzidos na atualidade. Empresas renomadas no ramo de telecomunicacao movel, como

Samsung, Nokia, Motorola e Sony, tem investido nesta tecnologia, disponibilizando APIs

de desenvolvimento para seus respectivos ambientes. E conforme mencionado, a tecno-

logia NFC encontra-se pouco difundida no Brasil, porem segundo [Brasil2013], ela vem

gradativamente ganhando notoriedade. Reduzindo a abrangencia desta afirmacao para um

escopo ainda mais focalizado referenciando apenas o desenvolvimento da tecnologia NFC

no Estado do Amazonas, pode ser observado o surgimento de uma tendencia por parte dos

institutos de PD, como o Instituto Nokia de Tecnologia - IndT [Developer2012], a desen-

volver projetos, visando proporcionar ao usuario de smartphones experiencias mostrando

as diversas facilidades previstas pela tecnologia.

No entanto, falta muito para que a tecnologia NFC alcance um alto nıvel de populariza-

cao entre os usuarios finais de smarthphones no estado do Amazonas, tornado importante

desenvolver uma cultura que vise diminuir esse deficit de utilizacao.

Por se tratar de uma tecnologia Open Source, pode ser implementada gratuitamente

por quaisquer desenvolvedores de software, livre dos custos gerados pela compra de licencas

de utilizacao e desenvolvimento ou pagamentos de royalties aos proprietarios de patentes.

E uma tecnologia com grandes possibilidades de crescimento, baixo custo de implantacao

e de facil desenvolvimento tecnico, alem de atuar como fonte de incentivo a inovacao.

A escolha de utilizacao de Near Field Communication - NFC em Sistema Operacio-

nal Android deve-se principalmente ao fato de ser o ambiente de telefonia movel de maior

popularidade nos dias atuais conforme citado em [Terra2013] e que seus concorrentes: Sym-

bian(Nokia), Meego(Nokia), WindowsPhone(Nokia, Samsung) e IOS(Apple)) apresentam

problemas como descontinuidade, imaturidade ou ausencia de dispositivos portadores de

hardware NFC. Conforme pode ser visto em [Developer2013a] e [Developer2008], o sistema

operacional Android possui uma API de desenvolvimento bem documentada, provida de

diversos exemplos de codificacao, permitindo um facil esclarecimento de duvidas e aplica-

Estrutura do Documento 5

coes de Design Patterns ;

Essa tecnologia em conjunto com o sistema operacional Android permitem a utilizacao

de linguagem de programacao Java para o desenvolvimento de aplicativos e nao mostra

fatores negativos realmente fortes que motivem desenvolvedores de software a nao aplica-los

quando possivel.

1.5 Estrutura do Documento

Esta monografia esta organizada da seguinte forma: O capıtulo 2 apresenta conceitual-

mente as tecnologias utilizadas no decorrer do desenvolvimento do projeto, assim como as

APIs e ferramentas utilizadas e trabalhos relacionados; no capıtulo 3 e abordada a totali-

dade do desenvolvimento tecnico do projeto, incluindo especificacoes tecnicas, arquitetura

e implementacao; o capıtulo 4 apresenta um descricao dos casos de testes realizados e re-

sultados obtidos. Por fim sao apresentadas no capıtulo 5 as consideracoes finais, onde sao

incluıdos a apresentacao de resultados e possıveis trabalhos futuros.

Capıtulo 2

Referencial teorico e trabalhos

relacionados

Este capıtulo aborda em detalhes as referencias teoricas tecnologicas e ferramentas uti-

lizadas durante a fase de desenvolvimento do projeto (capıtulo 3). Serao apresentados

conceitos, especificacoes e sera respondido o porque de sua utilizacao no projeto tendo em

vista a vasta quantidade de opcoes em tecnologias disponıveis atualmente.

2.1 Decisoes Tecnologicas

A maior decisao tecnologica neste projeto foi a escolha da tecnologia NFC como solucao

base desde o momento de sua concepcao, concretizando seu objetivo de apresentar suas po-

tencialidades e utilizacao pratica por meio de sua aplicacao na elaboracao uma arquitetura

de solucao viavel e satisfatoria.Devera tambem ser mencionada a escolha da padronizacao

internacional Ndef para a utilizacao da tecnologia NFC, e do ecossistema Android como

ambiente operacional para a solucao.

Decisões Tecnológicas 7

2.1.1 Tecnologia Near Field Communication - NFC

Conforme sera observado no capıtulo 3, a tecnologia NFC nao sera utilizada em sua

totalidade neste projeto. Sua utilizacao foi desenvolvida a partir do conceito de conexao

entre um elemento NFC ativo e um passivo. No entanto, por ser uma tecnologia pouco

conhecida, e interessante que seja abordada alem dos requisitos utilizados por carater de

conhecimento.

2.1.1.1 Definicao

Segundo [Hessel et al.2011], [Dias2010], [S.A. and M.2010] e [Coshum et al.2013] -

Near Field Communication ou Comunicacao de Campo Proximo refere-se a uma tecnologia

desenvolvida a partir de estudos provenientes da tecnologia Radio-Frequency Identification

- RFID, que possibilita trocar de informacoes entre dispositivos compatıveis sem o auxılio

de fiacao, de forma segura e rapida, contanto que os dispositivos sejam aproximados e

mantidos dentro de um limite mınimo para que a comunicacao ocorra com sucesso.

Assim que os dispositivos estejam suficientemente proximos, a comunicacao entre eles

e estabelecida automaticamente, sem necessidade de configuracoes adicionais, pareamento

ou autenticacao de usuario.

2.1.1.2 Funcionamento

Conforme mencionado em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013], a tec-

nologia NFC e fundamentada pelo princıpio fısico de inducao magnetica, onde a incidencia

de um campo magnetico sobre um circuito eletrico (espira) torna possıvel produzir uma

corrente eletrica induzida.Sendo que a ativacao de um modulo NFC ocorre quando ondas

eletromagneticas, geradas por um segundo modulo, sao captadas por suas antenas criando

canais de comunicacao, podendo ser de uma via, contando com um modulo transmissor e

um modulo receptor, ou de duas vias (peer-to-peer) contando com dois modulos transmis-

sores/receptores.

Decisões Tecnológicas 8

2.1.1.3 Formas de utilizacao

Um sistema NFC pode possuir dois tipos de elementos que podem ser ativos ou passivos.

Um dispositivo passivo e constituıdo por um modulo incapaz de gerar sinais de conexao,

enquanto o ativo possui tal capacidade sendo capaz de enviar, receber e interpretar sinais

eletromagneticos. Vale lembrar que uma conexao NFC so pode ser efetuada entre dois

modulos por vez. Dito isto, podem-se obter tres formas de utilizacao conforme citadas

em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013]:

1. Modo Read/Write - Leitura ou alteracao de dados em um dispositivo NFC passivo.

2. Modo Card Emulation - Dispositivo movel pode simular um smart card, no entanto

requer este possua um chip programavel dedicado a criptografia.

3. Modo Peer-to-Peer - Comunicacao entre dois dispositivos NFC ativos.

As figuras 2.1 e 2.2 mostram a criacao de um canal com uma via de comunicacao

onde o leitor NFC em conjunto com sua antena representam um modulo NFC embarcado

que pode estar presente em diversos dispositivos moveis. Este modulo gera um campo

magnetico que incide sobre um modulo NFC passivo nao alimentado retratado como Tag

NFC.

O princıpio de inducao magnetica faz com que este campo induza a criacao de uma

corrente eletrica que percorre o circuito do objeto passivo, alimentando-o. Uma vez que

o circuito esteja alimentado e funcional, ocorre o processo de leitura/escrita de dados na

Tag.

Ainda contemplando a figura 2.1, pode-se afirmar que se a Tag NFC fosse substituıda

por um modulo ativo, composto por outro conjunto de leitor e antena NFC,mo sistema seria

formado por dois modulos que captariam e interpretariam as ondas magneticas geradas

por cada ponta estabelecendo uma conexao Peer-to-Peer (P2P), onde ambos os modulos

enviam e recebem mensagens.

2.1.1.4 Especificacoes essenciais

Em comparacao as demais tecnologias sem fio, a tecnologia Near Field Communication

- NFC possui um campo de conexao com alcance extremamente curto. O campo magnetico

Decisões Tecnológicas 9

Figura 2.1: Modulo leitor NFC gerando campo eletromagnetico incidente sobre um ele-mento NFC passivo. [S.A. and M.2010]

gerado pelas antenas NFC presente em dispositivos moveis possui, em teoria, ate 10 cm

de alcance. No entanto, em meios praticos, este e reduzido para uma valor que oscila em

uma faixa de 1 a 4 centımetros conforme visto em: [Coshum et al.2013] e [Forum2013].

Devido a limitacao de comprimento de campo magnetico, para que uma conexao NFC

seja bem sucedida e necessario que os dispositivos transmissores/receptores sejam aproxi-

mados um do outro. Este procedimento intitula-se Tap, proveniente da lıngua inglesa que

segundo o dicionario [Michaelis2008], significa bater/encostar.

A tecnologia opera em uma faixa de frequencia de 13.56 MHz definida pela padronizacao

internacional ISO/IEC 18000-3 publicada no ano de 2004, mantendo taxas de transferencia

de dados variaveis dentro de uma faixa correspondente a 106 a 424 kbit/s de acordo com

as definicoes impostas pela padronizacao internacional ISO/IEC 18092:2013 em [Coshum

et al.2013], que especifica esquemas de modularizacao e taxas de transferencia de dados.

Esta taxa de transferencia pode ser considerada baixa, se comparada a prevista por

Decisões Tecnológicas 10

Figura 2.2: Um modulo leitor RFID atuando sobre um elemento RFID passivo possui asmesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum et al.2013]

tecnologias como Bluetooth ou Wi-Fi. No entanto, obtem-se um ganho consideravel em

economia de energia e em velocidade de conexao entre dispositivos chegando a ser menor

que - 0,1 s - segundo [Coshum et al.2013], caracterıstica que permite sua utilizacao como

bootstrap para a inicializacao de conexao atraves de protocolos sem fio mais robustos,

conforme informado na referencia [NXP2009].

2.1.1.5 Aplicacoes

Segundo [Coshum et al.2013] por fazer parte de sua natureza promover automatizacao

de tarefas realizadas por um sistema embarcado, a tecnologia NFC pode ser aproveitada

em uma grande quantidade de casos de uso.

Conforme pode ser visto na figura 2.3 seu leque de utilizacao varia desde a ativacao

e configuracao de dispositivos moveis a servicos ligados recursos ligados a automatizacao

residencial onde este atuaria em conjunto com um sistema micro processado para efetuar

acoes como: abertura de fechaduras e ativacao de perifericos gerais como lampadas e

eletrodomesticos.

Podendo afirmar que se os procedimentos de ativacao e desativacao de uma atividade

podem ser automatizados, esta automatizacao pode ser realizada atraves da utilizacao

Decisões Tecnológicas 11

correta da tecnologia NFC .

Figura 2.3: Possıveis Aplicacoes da tecnologia NFC segundo [Forum2013].

2.1.1.6 Elementos NFC Passivos - Tags

A figura 2.4 mostra um modulo NFC passivo, conhecido como Tag ou tarja NFC em

comparacao de tamanho em relacao a uma moeda. Esta abordagem mostra que e possıvel

utilizar a tecnologia NFC mesmo em casos que tenham como requisito a ocupacao de

um espaco fısico e peso reduzidos. Importante salientar que este item - Tag NFC - foi

essencial na elaboracao da solucao apresentada nesta monografia, sua importancia dentro

deste projeto sera apresentada na sessao de arquitetura de solucao no capitulo 3.

2.1.1.6.0.1 Definicao Tag NFC retrata um elemento NFC passivo, um modulo

capaz de reagir aos campos eletromagneticos gerados por dispositivos NFC ativos possibi-

litando que estes insiram novos dados para armazenagem ou extraia um conteudo previa-

mente armazenado conforme dito em [NXP2009] e [Coshum et al.2013].

Decisões Tecnológicas 12

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

2.1.1.6.0.2 Composicao Analisando as figuras 2.5 e 2.6, podem-se identificar os

componentes que formam uma Tag NFC. Estes componentes sao uma antena NFC e um

circuito ASIC projetado exclusivamente para possibilitar os processos de leitura e escrita

de dados.

Nota-se tambem a similaridade entre Tags NFC e Smartcards, no entando a composicao

do circuito e diferenciada permitindo ao Smart Card possuir maior quantidade de memoria

e realizar operacoes com diferentes tipos de dados. Em ambos os casos tem-se a ausencia de

fontes de alimentacao, conforme mencionado anteriormente toda a energizacao do circuito

sera realizada por inducao magnetica.

As antenas /emphNFC presentes em elementos passivos nao sao capazes de gerar cam-

pos eletromagneticos, apenas os captam e reagem a seus estımulos. Por fim, o circuito

/emphASIC (circuito produzido com uma finalidade especıfica) e responsavel por interpre-

tar informacoes captadas pelas antenas e trata-las de forma adequada.

Figura 2.5: Raio X de uma Tag NFC composta por circuito ASIC e antena.

Decisões Tecnológicas 13

Figura 2.6: Raio X de um Smartcard NFC por [Coshum et al.2013]

2.1.1.6.0.3 Tipos Com a finalidade de nao subutilizar recursos, foram desenvolvi-

dos diversos modelos de TagAGs NFC, onde cada modelo visa alcancar uma adequacao

maxima ao tipo especıfico de utilizacao-alvo. Este estudo aborda informacoes relativas

apenas aos tipos de Tag que seguem ou que sao compatıveis com a padronizacao Ndef :

• Tipo 1 - Tag produzida em formatacao Ndef com 96 bytes de memoria.

• Tipo 2 - Tag produzida em formatacao Ndef com 48 ou 144 bytes de memoria.

• Tipo 3 - Tag produzida em formatacao Ndef com 1, 4 ou 9 kilobytes de memoria,

possuindo um valor monetario mais elevado que as de tipo 1 ou 2.

• Tipo 4 - Tag produzida em formatacao Ndef com 4 ou 32 kilobytes de memoria,

possuindo o maior custo monetario entre os demais tipos. Importante ressaltar que

este modelo permite a gravacao de conteudo ativo.

• MIFARE Classic - Tag compatıvel com formatacao Ndef, possuindo 0.192, 0.768 ou

3.584 kilobytes de memoria.

Ao planejar sua utilizacao em um projeto, deve-se estudar com cuidado as informacoes

apresentadas nas tabelas 2.1 e 2.2, afim de reconhecer qual o tipo mais adequando para

servir adequadamente como solucao, tendo em vista os requisitos do projeto em relacao

Decisões Tecnológicas 14

ao tamanho do espaco disponıvel para armazenamento de dados nas Tags, tipo de dados,

custo benefıcio, modo de utilizacao e suporte.

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

2.1.1.7 Dispositivos Celulares Suportados

A porcao do ecossistema NFC voltada para telefonia movel e suportada por sua im-

plantacao em diversos dispositivos celulares produzidos pelos mais variados fabricantes.

Diferentemente de como ocorria no passado, onde a marca do fabricante em conjunto com

o hardware utilizado em cada um de seus dispositivos definiam as funcionalidades disponi-

bilizadas no aparelho, hoje o usuario consumidor de smartphones busca por servicos e isso

torna mais importante para o sucesso de um dispositivo o ecossistema operacional no qual

Decisões Tecnológicas 15

Tabela 2.2: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao assuas aplicacoes. [NXP2009]

ele opera e nao sua marca.

Incorporando a tecnologia NFC neste contexto, torna-se mais importante dizer em

quais sistemas operacionais ela esta presente e operante do que citar especificamente em

quais modelos de dispositivos ela se encontra.

Segundo [Arena2013], website internacional especializado em realizar comparativos en-

Decisões Tecnológicas 16

tre especificacoes de smartphones, podem ser encontrados mais de 250 modelos de celulares

de diferentes fabricantes, que utilizam a tecnologia NFC. A figura 2.7 mostra o resultado

de uma busca realizada no website, com a finalidade de coletar aparelhos que possuam NFC

e maior ranking de popularidade mundial.

Figura 2.7: Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013]

Decisões Tecnológicas 17

2.1.1.8 Estimativas futuras

O autor de [Hessel et al.2011], estima que a tecnologia NFC estara presente em 80 por

cento dos smartphones produzidos para o mercado Norte Americano. No entanto ainda nao

ha uma estimativa especıfica para o nicho brasileiro, mas observando sua difusao ao redor

do mundo e os incentivos relacionados ao seu desenvolvimento por parte dos fabricantes

de smartphones pode-se inferir que seu crescimento no Brasil e promissor e merecedor de

atencao.

2.1.2 Ecossistemas Operacionais

Durante a concepcao do projeto surgiu uma grande pergunta: Qual ecossistema ope-

racional utilizar para a implementacao da solucao? Esta pergunta resultou na escolha

e utilizacao do sistema operacional Android. No entanto, nao foi uma escolha aleatoria,

pois varios fatores influenciaram tal decisao. A princıpio, foram levantados os principais

sistemas operacionais utilizados em smartphones, o que resultou em:

• IOS - Apple Inc

• Windows Phone 7 - Nokia/Samsung

• Android OS - Samsung/HTC/Google/Sony

• Symbiam OS - Nokia

• Meego OS - Nokia

A partir desta lista, foram selecionados os sistemas operacionais que possuıam APIs que

permitissem a utilizacao de NFC em seus dispositivos. Esta etapa excluiu apenas o IOS

pertencente a Apple Inc., pois este ate o momento nao aderiu a utilizacao da tecnologia

NFC em seus smartphones.

A partir deste ponto, os sistemas operacionais restantes foram estudados individual-

mente com a finalidade de selecionar o que oferecesse maior suporte ao projeto. Apesar de

a escolha final ter preferenciado o ecossistema Android, seus concorrentes merecem mencao.

Decisões Tecnológicas 18

2.1.2.1 Windows Phone 7

Um sistema operacional promissor utilizado em smartphones Nokia (Linha Lumia) e

Samsung. No entanto, ainda encontrava-se em fase de amadurecimento, sendo o desenvol-

vimento de suas APIs e utilizacao de seus dispositivos de hardware por software, restritos a

desenvolvedores autorizados Nokia e Microsoft [Developer2013d]. Estes fatores motivaram

o descarte deste sistema operacional para o desenvolvimento do projeto.

2.1.2.2 Symbiam OS

Desenvolvido pela empresa Nokia e mantido pela empresa Accenture, foi bastante utili-

zado em smartphones Nokia. Sua ( API NFC) prove grande suporte ao desenvolvimento de

aplicativos baseados na tecnologia [Developer2013c]. No entanto seu descarte do projeto

ocorreu devido ao difıcil acesso a referencias de suporte a utilizacao de seu componente

Wi-Fi, onde, segundo a arquitetura da solucao presente no capitulo 3, devera ser utilizado

em conjunto com a tecnologia NFC.

2.1.2.3 Meego OS

Sistema operacional baseado em QT, desenvolvido em codigo aberto com kernel Linux,

pelas empresas Nokia e Intel com a finalidade de utilizacao em smartphones. Conforme

pode ser verificado em [Developer2013b] , possui APIs de controle de componentes NFC e

de conectividade Wi-Fi bem documentadas e de facil utilizacao, no entanto foi descartado

deste projeto por ter sido descontinuado em 2011, perdendo potencial de mercado para

solucoes pudessem ser implementadas.

2.1.2.4 Android OS

Atualmente e o sistema operacional de maior popularidade no mercado, foi desenvolvido

por Open Handset Alliance, liderada pelo Google. E utilizado em larga escala por varios

fabricantes de celulares como: HTC, Samsung, Sony, Motorola, LG e Positivo Informatica.

Sua popularidade e APIs bem documentadas serviram como incentivo a sua utilizacao

neste projeto. Porem, e importante mencionar que conforme pode ser visto em [Coshum

et al.2013] e [Developer2013a], a API de controleNFC so foi disponibilizada a partir de

Decisões Tecnológicas 19

sua versao 2.6.

2.1.2.5 Windows Phone 8

Sistema operacional criado pela Microsoft, utilizado em smartphones Nokia, nao entrou

como possıvel solucao ao projeto apenas por ter sido lancado posteriormente a finalizacao

da etapa de desenvolvimento do mesmo, entretanto merece mencao nesta monografia por

possuir APIs de desenvolvimento NFC e Wi-Fi bem documentadas, por constituir um

sistema operacional robusto e por ter um status de popularidade emergente, tendo potencial

para alcancar uma posicao de destaque no mercado.

2.1.3 NFC Forum

2.1.3.1 Historia do NFC Forum

Conforme abertamente divulgado por NFC Forum [Forum2013], em 2004 tres grandes

empresas fabricantes de eletronicos, Sony, Nokia e Philips se uniram e criaram um forum de

discursao para tratar das melhores formas de desenvolvimento da recem criada tecnologia

NFC, com as seguintes metas:

• Definir um padrao internacional de protocolos e parametros a serem seguidos em

projetos que envolvam a arquitetura de NFC.

• Incentivar o desenvolvimento da tecnologia e a utilizacao de dispositivos compatıveis.

• Trabalhar para garantir que os dispositivos NFC sigam todas as normas e especifica-

coes do forum.

• Criar uma cultura mundial de utilizacao da tecnologia por meio da disseminacao de

seu conhecimento.

Atualmente o NFC Forum conta com a participacao de mais de 170 empresas e cola-

boradores ao redor do mundo conforme [Forum2013].

Ferramentas 20

2.1.3.2 Padronizacao Ndef por NFC forum

A padronizacao internacional Ndef criada pelo NFC Forum constitui uma parte im-

portante do ecossistema NFC, pois e uma normalizacao internacional e multi-plataforma

de formas de melhor utilizacao da tecnologia. Diversas APIs relacionadas a sistemas ope-

racionais implementam as definicoes impostas pela formatacao Ndef, entre elas a API

Android.nfc conforme informacoes divulgadas por [Developer2013a].

O acronimo Ndef representa NFC Data Exchange Format ou Formatacao de troca de

dados NFC, importante mencionar que esta formatacao segue todos os requisitos impostos

pelas padronizacoes ISO que envolvem a tecnologia NFC. Detalhes mais profundos desta

padronizacao serao mencionados no decorrer desta monografia.

2.2 Ferramentas

Durante o processo de codificacao do projeto foram utilizadas ferramentas de suporte

ao desenvolvimento de software. Essas ferramentas auxiliam o desenvolvedor em questoes

referentes a utilizacao de APIs, indentacao de codigo e simulacao de testes. Em geral,

cada desenvolvedor de software utiliza um conjunto personalizado de ferramentas. Neste

projeto, com excecao do pacote de ferramentas Android SDK e APIs de desenvolvimento,

todas as outras podem ser substituıdas de modo a prover maior conforto aos seus usuarios.

2.2.1 Android SDK

Android Software Development Kit ou Android kit de desenvolvimento de software e

composto por diversas ferramentas voltadas para o desenvolvimento de aplicativos em pla-

taforma Android. Esta coletanea inclui um depurador, bibliotecas, um simulador, exemplos

de documentacao, de codigos e tutoriais [Developer2011]. Apesar da tecnologia NFC estar

presente desde a versao 2.6 do sistema operacional Android, para este projeto foi utilizada

a versao 4.1 - representada pela API 16 - onde podem ser encontrados recursos tais como:

android.net.wifi e android.nfc.

Trabalhos Relacionados 21

2.2.1.1 android.net.wifi

Esta API prove meios pelos quais as aplicacoes conseguem se comunicar com a ca-

mada de baixo nıvel controladora Wi-Fi. Permite as aplicacoes executarem comandos

de inicializacao, configuracao e finalizacao de conexoes sem fio, conforme informado na

referencia [Developer2008].

2.2.1.2 android.nfc

Esta API prove acesso as funcionalidades NFC de um dispositivo sob plataforma An-

droid, permite que os aplicativos manipulem mensagem com padronizacao Ndef gravadas

em Tags NFC ou dispositivos em modo Card Emullation, conforme informado na referen-

cia [Developer2013a].

2.2.2 Eclipse IDE

Toda a codificacao deste trabalho foi desenvolvida por meio da utilizacao da IDE Eclipse

distribuicao Indigo atualizado com um plugin Android SDK. Esta ferramenta e poderosa

quando se diz respeito a edicao de texto, permite uma codificacao rapida ao permitir na-

vegacao entre funcoes, APIs, documentacoes e ferramentas de depuracao. Alem de ser

altamente personalizavel de modo a permitir maior flexibilidade ao desenvolvedor de soft-

ware.

2.3 Trabalhos Relacionados

A inspiracao inicial deste projeto surgiu apos o conhecimentos das facilidades concedi-

das pela implementacao da tecnologia NFC em diversos casos de uso. Grande parte dessas

aplicacoes sao disponibilizadas em lojas virtuais pertencentes a cada ecossistema operaci-

onal, tais como: Android-Market para Android OS, Ovi-Store para Symbian OS e Meego

OS e Microsoft-Store para Windows Phone.

Seguindo pela linha de automacao, existem diversas implementacoes que utilizam a

tecnologia NFC como base para automatizar procedimentos e processos, destacando-se

servicos de compartilhamento de dados, onde o NFC e utilizado para prover uma conexao

Trabalhos Relacionados 22

rapida entre dispositivos moveis, enquanto a transferencia de dados e realizada por proto-

colos sem fio mais robustos como o Bluetooth ou o Wi-Fi, visto que estes possuem bandas

mais largas para transferencias de dados e atuam a longa distancia.

Pode-se afirmar que esta forma de utilizacao e bastante util, sendo implementada tanto

em aplicativos-padrao do Sistema Operacional Android, utilizados para troca de imagens

e dados entre dispositivos, como em jogos que requeiram interacao de multiplos usuarios.

Verifica-se em [UOL2012], a utilizacao do NFC em aplicativos desenvolvidos por empre-

sas privadas e institutos de pesquisa, tal como mostrado na figura 2.8, o PagSeguro-NFC

desenvolvido pelo Instituto Nokia de Tecnologia - INdT com o intuito de proporcionar

solucoes em pagamentos via dispositivos moveis de forma simples, rapida e com seguranca

garantida aos usuarios.

Pode-se mencionar tambem a adesao a tecnologia NFC por aplicativos multi-plataforma

ja consagrados no mercado, como o LinkedIn e o Foursquare. No caso do Foursquare, se-

gundo material de disponıvel em sua API oficial [Foursquare2013], foi criada uma area na

documentacao de sua API para auxiliar os desenvolvedores de software no desenvolvimento

de aplicativos clientes ao Foursquare que utilizem a tecnologia NFC para disparar eventos

de check in. Ja o aplicativo oficial Linkedin para sistema operacional Symbiam, disponi-

bilizado em [LinkedIn2011] -Nokia Store- sofreu atualizacoes de modo a possibilitar que

os dados de perfil de usuario sejam exportados para uma Tag NFC, permitindo assim a

visualizacao automatica dos perfis armazenados em cada Tag.

Trabalhos Relacionados 23

Figura 2.8: PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia - [UOL2012]

Capıtulo 3

Desenvolvimento Tecnico

Este capıtulo aborda todas as etapas relacionadas ao desenvolvimento tecnico do projeto,

desde suas especificacoes mais basicas de solucao ate a finalizacao de sua codificacao e

release do aplicativo prototipo NFC-WiFi.

3.1 Especificacao

Esta sessao aborda todos os aspectos relacionados a definicao da solucao definida. Mos-

trando conceitos inicias de como a ideia foi concebida e estruturada. Mostra tambem di-

agramas tecnicos que foram criados com base nos requisitos especificados ao analisar o

contexto do problema.

3.1.0.1 Definicao de solucao

Analisando o problema proposto no capıtulo 1, pode-se visualizar um cenario corres-

pondente a distribuicao e influencia de redes Wi-Fi dentro de determinada localidade, e

atraves de uma analise detalhada deste cenario e do problema proposto, e possıvel tra-

balhar na elaboracao de uma arquitetura de solucao. Conforme pode ser observado na

figura 3.1, as redes Wi-Fi possuem areas de atuacao variaveis e independentes umas das

outras, mesmo que presentes em um mesmo espaco fısico. Os principais responsaveis por

essa variacao de area de atuacao sao o hardware utilizado e as configuracoes definidas no

Especi�cação 25

momento de criacao e manutencao de cada hotspot Wi-Fi. Tirando como base o com-

portamento apresentado e a disposicao das redes Wi-Fi no mundo real, foi definido como

melhor solucao ao problema - levando em consideracao fatores como custo de producao e

satisfacao dos usuarios - a utilizacao de Tags NFC como forma de disseminacao de pontos

de acesso Wi-Fi. Cada Tag deve conter campos dos quais advenham meios de identifica-

cao de uma rede sem fio, para que desse modo um dispositivo movel celular possa receber

o conteudo armazenado, identificar e conectar-se a uma rede-alvo. A figura 3.1 mostra

uma visualizacao de como podem ser utilizadas inumeras Tags NFC para prover pontos

de acesso de diversificadas redes Wi-Fi atuantes dentro de uma mesma localidade, tendo

como unica dependencia para que seja obtido um funcionamento adequado. Sua utilizacao

em um local abrangido pelo sinal emitido por seu hotspot Wi-Fi correspondente.

Figura 3.1: Disposicao de redes sem fio em uma localidade

Especi�cação 26

Figura 3.2: Proposta de solucao Utilizando Tags NFC

3.1.0.2 Identificacao de Hotsposts

Redes Wi-Fi possuem um Identificador padrao chamado Service Set Identifier (SSID),

que corresponde a um conjunto de ate 32 caracteres case sensitive [Developer2008]. O SSID

e defino no momento de criacao de uma rede Wi-Fi e e altamente configuravel, podendo

ser customizado de acordo com a preferencia do gestor da rede. Comumente e constituıdo

por nomes que indiquem seu proprietario. Para ser bem sucedido em uma tentativa de

conexao Wi-Fi, e essencial que se conheca o SSID. No entanto, este nao e o unico parametro

necessario para concretizar uma conexao. Nao e surpresa encontrar uma rede Wi-Fi que

Especi�cação 27

requeira uma senha de acesso valida. Para estes casos devem-se considerar os campos

PWD acronimo para Password referente a senha e o protocolo de criptografia utilizado se

aplicavel, estes sao nomeados por WEP, WPA, WPA2, WPA-PSK e WPA2-PSK. Seguindo

esse raciocınio, infere-se que devem ser armazenados pelo menos tres informacoes relativas

a rede Wi-Fi em uma Tag NFC para conseguir automatizar o processo de conexao: o SSID,

a Password e a criptografia. Esta inferencia estaria absolutamente correta se nao houvesse

uma forma alternativa de se conhecer o protocolo de criptografia de rede utilizado. Ao

consultar um SSID e retornado o tipo de criptografia empregado, logo foi possıvel definir

para este projeto o uso de apenas dois campos em uma Tag NFC conforme mostra a figura

3.3.

• Exemplos de SSIDs:

– AndreMoreiraNetwork

– UniversidadeAuditorio

– AaxWRZtxY478T20 (Improvavel entre usuarios comuns)

Figura 3.3: Campos identificadores Wi-Fi armazenados em TAG NFC

A acao de obter a criptografia por meio de consulta diretamente na rede Wi-Fi pode vir

a diminuir a performance do aplicativo, porem ha de se convir que existe a possibilidade

de utilizar TAGs NFC que carecam de espaco de armazenamento onde a gravacao de um

campo a mais poderia ser a diferenca entre sucesso e falha.

Especi�cação 28

3.1.0.3 Estruturacao de dados em Tags NFC - Ndef

A utilizacao de Tags NFC como solucao neste projeto ocorreu seguindo o formato

de troca de mensagens NDEF ou NFC Data Exchange Format criado pelo NFC Forum,

implementado e disponibilizado pela API android.nfc para desenvolvimento em sistema

operacional Android. Conforme pode ser visto na figura 3.5, uma Ndef Message e composta

por varios records ou registros, que por sua vez sao compostos por dois campos: Header -

Cabecalho da mensagem e Payload - Corpo ou carga, area reservada ao dado [Forum2006].

Enquanto a figura 3.4 mostra como ocorre o processo de identificacao de uma Tag NFC

no sistema operacional Android. A formatacao Ndef disponibiliza RDTs ou Record Type

Definitions, que representam definicoes de tipos de registros que compoem mensagens Ndef.

Atraves dessas definicoes chegamos os TNFs ou Type Name Formats que sao de fato os

tipos de registros formados a partir das definicoes [Forum2006] [NXP2009] .

• Dentre os tipos de registros disponibilizados vale mencionar: [NXP2009]

– MIME (Multipurpose Internet Mail Extensions

∗ Imagens png, gif, ...

∗ Texto simples, html, javascript, ...

∗ Video mpeg, quicktime, ..

– Absolute URIs (Uniform Resource Identifier)

∗ URLs

∗ Contatos de agenda telefonica

∗ Mensagens SMS

– NFC Well Known Type

∗ Texto

∗ Parametros de Handover (PIN, Endereco Bluetooth)

3.1.0.4 Acoes definidas

Para criar uma arquitetura robusta para o projeto foram definidas acoes, as quais o

aplicativo deveria cumprir para atingir o nivel de qualidade esperado.

Especi�cação 29

Figura 3.4: Fluxo gerados eventos de leitura de Tags NFC em sistema operacional Android. [Developer2007]

Figura 3.5: Estrutura de mensagem Ndef. [Developer2007]

• Ler dados de uma Tag NFC.

• Escrever dados em uma Tag NFC.

• Suportar formatacao NDEF.

• Controlar hardware.

• Configurar uma conexao Wi-Fi.

Especi�cação 30

• Criar uma conexao Wi-Fi.

• Conter tela de informacoes.

• Prover a menor interacao possıvel com o usuario.

• Funcionar com a menor quantidade de toques no display touchscreen.

3.1.0.5 Arquitetura de solucao

Apos ter sido concretizada uma analise conceitual do problema, levantado os requisi-

tos funcionais prioritarios e elaborado um modelo de solucao viavel e de baixo custo, foi

constituıda uma ideia para inicial para o fluxo de funcionamento da solucao, essa ideia e

representada pela figura 3.6 mostrando que no momento da ocorrencia de um evento Tap

com uma Tag NFC, o smartphone devera colher desta os parametros de identificacao de

uma rede sem fio gerada por um hotspot Wi-Fi e iniciar os processos de configuracao e

inicializacao de conexao.

A obtencao de um conceito de solucao geral permitiu idealizar um possıvel fluxo para

o projeto de aplicativo, conforme pode ser visto na figura 3.9. O diagrama de navegacao

mostra a sequencia de passos decorrentes da utilizacao do aplicativo a partir de sua tela

inicial, assim como as possıveis acoes de tomada de decisao por parte do usuario. Ao

analisar mais a fundo este diagrama, nota-se que as acoes de escrita em Tag NFC e Lei-

tura/conexao em hotspot Wi-Fi ocorrem/atuam de forma isolada e independentes entre

si, permitindo que sejam separadas e encaradas como dois aplicativos distintos especıficos

para cada funcao.

Essa condicao tambem pode ser visualizada nas figuras 3.7 e 3.8. No entanto, a

abordagem de criacao de dois aplicativos nao foi aplicada neste projeto. Mantendo como

decisao arquitetural criar um unico aplicativo que cumprisse com ambas as atividades,

conforme apresentado no diagrama de classes exposto pela figura 3.10.

• Funcionalidades principais do sistema.

– Escrita de parametros de configuracao em Tag NFC.

– Obtencao dos parametros escritos em Tag NFC.

Especi�cação 31

Figura 3.6: Ideia inicial de funcionamento do aplicativo.

– Processo de conexao em hotspot Wi-Fi.

– Visualizacao de tela de informacoes.

Especi�cação 32

Figura 3.7: Diagrama de sequencia do modulo write NFC

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

Especi�cação 33

Figura 3.9: Diagrama de navegacao do aplicativo

Especi�cação 34

Fig

ura

3.1

0:

Dia

gram

ade

clas

ses

do

pro

jeto

.

Projeto 35

3.2 Projeto

Para um melhor gerenciamento deste projeto, de forma a mante-lo sempre dentro dos

prazos de entrega de funcionalidades, de acordo com os padroes de qualidade exigidos,

foram adotados pontos de controle como:

• Metodologia agil Scrum para projetos de desenvolvimento de software.

• Elaboracao de um cronograma de desenvolvimento.

• Elaboracao de lista de etapas de desenvolvimento.

• Elaboracao de lista de itens fora de escopo.

3.2.1 Metodologia de desenvolvimento

Ao inıcio do projeto foi adotada a metodologia agil de desenvolvimento de software

SCRUM, que ajudou a manter o foco na conclusao de forma ordenada de atividades de

pesquisa, codificacao, refatoracao e testes de acordo com suas respectivas prioridades em

funcao da disponibilidade de tempo. Foram adotadas seis sprints de quinze dias cada,

totalizando tres meses de desenvolvimento tecnico, realizando todas as atividades descritas

no product backlog composto pela tabela 3.1.

Projeto 36

Tab

ela

3.1

:P

roduct

Bac

klo

g

Implementação 37

3.3 Implementacao

A implementacao do aplicativo prototipo NFC-Wi-Fi versao final foi dividida em etapas

com o proposito de manter o codigo organizado e criar uma modularizacao de componentes

funcionais.

• Etapa NFC - Esta etapa consistiu em codificar um componente isolado cuja funcio-

nalidades fossem:

– Gravar dados em uma Tag NFC.

– Ler dados de uma Tag NFC.

– Teste funcional

• Etapa Wi-Fi - Esta etapa consistiu em codificar um componente isolado cuja funci-

onalidades fossem:

– Inicializar hardware Wi-Fi do dispositivo.

– Iniciar descoberta de redes Wi-Fi

– Consultar hardware Wi-Fi em busca de redes disponıveis.

– Configurar uma conexao de rede Wi-Fi em dispositivo Android.

– Iniciar processo de conexao com uma rede Wi-Fi

– Teste funcional

• Etapa de integracao NFC e Wi-Fi - Esta etapa consistiu na integracao de ambos os

modulos citados focando na obtencao do fluxo previsto na arquitetura do projeto.

– Inicializar dispositivo Wi-Fi

– Identificar rede Wi-Fi utilizando parametros de conexao (SSID Password) ar-

mazenados em Tag NFC.

– Identificar protocolo de criptografia de rede utilizado

– Iniciar processo de conexao

• Etapa de refatoracao de codigo - Esta etapa consiste na criacao de layouts para o

prototipo verificacao e busca por areas passiveis a melhorias.

Implementação 38

3.3.1 AndroidManifest.xml

Ao iniciar o desenvolvimento de um aplicativo que utilize funcionalidades pertencentes

a um ou mais dispositivos de um smartphone Android, deve-se, primeiramente, gerar per-

missoes de utilizacao de cada dispositivo, requerer sua utilizacao e indicar o nıvel de API

Android no qual o aplicativo devera ser instalado. Sem as devidas permissoes, o aplicativo

nao conseguira efetuar nenhuma requisicao de servico. Todas as permissoes de utilizacao

de hardwares especıficos, requerimentos de features e declaracoes de Activities devem ser

adicionadas ao arquivo AndroidManifest.xml automaticamente gerado em projetos Android

pelo SDK. Este projeto utiliza os dispositivos de hardware NFC e Wi-Fi, assim como duas

Activities principais. O codigo 3.3.1 representa o arquivo AndroidManifest.xml e sua ex-

plicacao ocorrera de acordo com as linhas do arquivo. Linhas 5, 6 e 7 - definem o nıvel

de API requisitado para a instalacao da App e o nıvel ao qual ela e indicada. Para este

caso, targetSdkVersion=15 indica que esta App esta apta a funcionar corretamente desde a

versao Android 4.0 ICE-CREAM-SANDWICH, no entanto minSdkVersion=16 indica que

sua instalacao devera ser disponibilizada para dispositivos rodando sistema operacional

Android 4.1 JELLY-BEAN ou superior. Vale mencionar que a API relativa ou uso de

NFC so foi disponibilizada a partir da versao Android 2.3 GINGER-BREAD ou API level

9. Linhas 9 a 13 - conferem a App, permissoes para utilizacao Wi-Fi, de redes e de Internet.

Linha 14 - confere a App permissao para utilizacao de NFC. Linhas 16 e 17 - indicam que

a disponibilidade de features NFC e Wi-Fi em dispositivo devem ser obrigatorias para o

funcionamento adequando. Linhas 23 e 32 - referem-se as Activities utilizadas no projeto.

3.3.2 Etapa NFC

O pacote NFC, conforme ilustrado na figura 3.11, e formado por quatro source files

compostos de duas interfaces e duas classes que as implementam.

• Interface 1: ForegroundDispatcher.java

– Implementacao: NfcForegroundDispatcher.java

• Interface 2: NFC.java

– Implementacao: NfcDefaultProcessor.java

Implementação 39

1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"2 package="com.example.prototypenfc_wifi"3 android:versionCode="1"4 android:versionName="1.0" >5 <uses-sdk6 android:minSdkVersion="16"7 android:targetSdkVersion="15" />8

9 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>10 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>11 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>12 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>13 <uses-permission android:name="android.permission.INTERNET"/>14 <uses-permission android:name="android.permission.NFC" />15

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

19 <application android:label="@string/app_name">20 android:icon="@drawable/ic_launcher"21 android:label="@string/app_name"22 android:theme="@style/AppTheme" >23 <activity24 android:name=".MainActivity"25 android:label="@string/app_name" >26 <intent-filter>27 <action android:name="android.intent.action.MAIN" />28 <category android:name="android.intent.category.LAUNCHER" />29 </intent-filter>30 </activity>31

32 <activity android:name=".NfcWriterActivity"33 android:label="@string/app_name">34 <intent-filter>35 <action android:name="android.intent.action.MAIN" />36 <category android:name="android.intent.category.LAUNCHER" />37 </intent-filter>38 </activity>39

40 </application>41 </manifest>

Codigo 3.3.1: Arquivo Android Manifest (xml)

Figura 3.11: Packet NFC.

3.3.2.1 NFC Foreground Dispacher

A interface ForegroundDispacher.java disponibiliza a ativacao ou desativacao do modo

de processamento em primeiro plano para NFC, ou seja, a ativacao deste modo impede que o

Implementação 40

sistema operacional busque em background por aplicativos aptos ao tratamento de eventos

NFC, indicando assim que todos as intents contendo eventos gerados pelo hardware NFC

deverao ser tratados diretamente pela API NFC e nao pelo sistema operacional. Dito isso,

pode-se garantir que enquanto o aplicativo estiver aberto em primeiro plano, nao sofrera

interferencia de aplicativos externos relacionados a eventos NFC.

O modo ForegroundDispacher e diretamente ligado as Activities do projeto sendo ne-

cessario instancia-lo no metodo OnCreate, ativa-lo no metodo OnResume e desativa-lo no

metodo OnPause de cada Activity onde se deseje o tratamento de eventos NFC, conforme

pode ser verificado no codigo 3.3.3, linhas 12, 24 e 31.

O codigo 3.3.2 mostra a implementacao da interface ForegroundDispacher.java. A classe

que a implementa e composta por um construtor e dois metodos, enable (ativa)e disable

(desativa). Ao momento em que um objeto pertencente a esta classe e instanciado, seu

construtor salva a referencia da Activity que o instanciou (linha 17 e 18). Seguido pela

inicializacao do adaptador NFC para esta Activity (linha 19) e pelo informativo ao sistema

operacional de que as proximas intents geradas e devem ser passadas pertencem a esta

Activity (linha 20). Importante mencionar que intents correspondem a um formato de

dados que trafega entre o sistema operacional Androide seus aplicativos. O metodo enable

-linhas 24 a 29- tem seu funcionamento da seguinte forma: primeiramente cria-se um filtro

de intents para coletar conteudos relacionados a descoberta de Tags NFC (linha). Em

seguida cria uma lista de filtros vazia e atribui a esta lista um unico filtro, o de decorbeta

de Tags NFC (linha). Por fim, ativa o modo ForegroundDispacher, ou seja, o adaptador

NFC recebera e tratara as proximas intents geradas na Activity a qual foi instanciado,

contanto que estas intents sejam resultados filtrados pela lista de filtros atribuıda. Logo,

so serao validas intents que possuam conteudo relativo a deteccao de Tags NFC.

Implementação 41

1 package nfcController;2

3 import android.app.Activity;4 import android.app.PendingIntent;5 import android.content.Intent;6 import android.content.IntentFilter;7 import android.nfc.NfcAdapter;8 import android.util.Log;9

10 public class NfcForegroundDispatcher implements ForegroundDispatcher {11

12 private static final String TAG = "NfcForegroundDispatcher";13 private final NfcAdapter nfcAdapter;14 private final PendingIntent nfcPendingIntent;15 private final Activity receivedActivity;16

17 public NfcForegroundDispatcher(Activity activity) {18 receivedActivity = activity;19 nfcAdapter = NfcAdapter.getDefaultAdapter(activity);20 nfcPendingIntent = PendingIntent.getActivity(activity, 0,21 new Intent(activity, activity.getClass()).addFlags(Intent.22 FLAG_ACTIVITY_SINGLE_TOP), 0);23 }24 public void enable() {25 Log.d(TAG, "enableForegroundMode");26 IntentFilter tagDetected = new IntentFilter(NfcAdapter.\27 ACTION_TAG_DISCOVERED);28 IntentFilter[] TagFilters = new IntentFilter[] { tagDetected };29 nfcAdapter.enableForegroundDispatch(receivedActivity,30 nfcPendingIntent, TagFilters, null);31 }32 public void disable() {33 Log.d(TAG, "disableForegroundMode");34 nfcAdapter.disableForegroundDispatch(receivedActivity);35 }36 }

Codigo 3.3.2: Implementacao da interface Foreground Dispatcher

3.3.2.2 Classe NfcDefaultProcessor

A Classe NfcDefaultProcessor implementa quatro metodos publicos:

• public String getSSID()

• public String getPWD()

• public void readNdefTag(Intent intent) - Leitura de Tag NFC

• public void writeNdefTag(Tag tag, String ssid, String password) ? Escrita em Tag

NFC.

Os dois primeiros estao diretamente ligados a aquisicao de parametros de configuracao

Wi-Fi gravados em uma Tag NFC. Apos ser realizada a leitura da Tag, esses metodos

Implementação 42

1 package com.example.prototypenfc_wifi;2

3 import java.io.IOException;4

5 public class NfcWriterActivity extends Activity{6

7 @Override8 public void onCreate(Bundle savedInstanceState) {9 super.onCreate(savedInstanceState);

10 setContentView(R.layout.nfc_tag_writer);11 foregroundDispatcher = new NfcForegroundDispatcher(this);12 }13

14 @Override15 public void onNewIntent(Intent intent) {16

17 }18

19 @Override20 public void onResume() {21 Log.d(TAG, "onResume");22 super.onResume();23 foregroundDispatcher.enable();24 }25

26 @Override27 public void onPause() {28 Log.d(TAG, "onPause");29 super.onPause();30 foregroundDispatcher.disable();31 }32 }

Codigo 3.3.3: Instanciacao, habilitacao e desativacao do modo Foreground Dispacher

podem ser invocados de diferentes partes do codigo que possam lhes oferecer alguma uti-

lidade. Os demais metodos serao explanados individualmente sob forma de subitens desta

sessao.

3.3.2.2.0.4 Escrita de Tag NFC O metodo writeNdefTag (Tag tag, String ssid,

String Password) mostrado no codigo 3.3.4 permite a gravacao de Tags NFC contendo um

record SSID e um Record Password. Caso os campos contendo as informacoes requisitadas

estejam vazios ou nulos, uma excecao e lancada, resultando em falha de gravacao (Linhas

03, 06, 09,12). Na linha 15, pode-se observar a criacao de uma lista onde serao inseridos

NdefRecords. Conforme definido na arquitetura do projeto, nesta lista constarao apenas

dois records tipo texto correspondentes as configuaracoes da rede Wi-Fi alvo. Cada um

e criado com auxılio do metodo privado private NdefRecord createNdefRecord(String text).

Conforme consta no codigo 3.3.5, este metodo recebe um texto por parametro e retorna

um NdefRecord gerado. Depois que a lista de NdefRecords estiver concluıda, todos os

Implementação 43

records passam a compor uma NdefMessage (linha 16, codigo 3.3.4). O processo continua

com a selecao da Tag detectada(linha 17), seguida pela abertura de uma conexao(linha

18, gravacao de dados(linha 19) e fechamento da Tag (linha 20). Ao final deste metodo

passamos a possuir uma Tag NFC contendo os parametros desejados.

1 public void writeNdefTag(Tag tag, String ssid, String password)2 throws UnsupportedEncodingException, IOException, FormatException {3 if (ssid == null){4 throw new IllegalArgumentException();5 }6 if (ssid.isEmpty()){7 throw new IllegalArgumentException();8 }9 if (password == null){

10 throw new IllegalArgumentException();11 }12 if (password.isEmpty()){13 throw new IllegalArgumentException();14 }15 NdefRecord[] records = { createNdefRecord(ssid),16 createNdefRecord(password) };17 NdefMessage message = new NdefMessage(records);18 Ndef ndef = Ndef.get(tag);19 ndef.connect();20 ndef.writeNdefMessage(message);21 ndef.close();22 }23 }

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

1 private NdefRecord createNdefRecord(String text) throws2 UnsupportedEncodingException {3 byte[] payload = text.getBytes();4 NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,5 NdefRecord.RTD_TEXT, null, payload);6 return ndefRecord;7 }

Codigo 3.3.5: Criando NdefRecord

3.3.2.2.0.5 Leitura de Tag NFC O codigo 3.3.6 transcreve o metodo utilizado

para ler uma Tag NFC que contenha payloads referentes ao SSID e Password de uma rede

Wi-Fi e realizar a extracao dessas informacoes. Este metodo recebe por parametro uma

intent referente a acao de Tap NFC, e atraves dessa intente podera ser feita a interpretacao

do conteudo da Tag NFC. Observando a linha 04 verificamos que se a acao presente na

intent for a mesma realizada por acao de descoberta de Tag NFC, significa que temos a

correta. Logo, seu conteudo devera resgatado e listado - linha 07 -, em seguida convertido

Implementação 44

para formatacao Ndef Message linha 09, e cada mensagem convertida devera ter seus records

analisados em busca de payloads que sejam iniciados por tags SSID : e PWD : (linhas 11,

13 e 18). Apos encontrados, deverao ter suas tags identificadoras removidas e o conteudo

restante atribuıdo a variaveis privadas da classe networkSSID e networkPWD - linhas 15 e

20 -. Ao finalizar este processo tem-se os identificadores de rede Wi-Fi salvos em variaveis,

podendo ser acessadas atraves dos metodos getSSID() e getPWD().

1 public void readNdefTag(Intent intent) {2 networkPWD = null;3 networkSSID = null;4 if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {5 Parcelable[] messages;6 try {7 messages = intent.getParcelableArrayExtra(NfcAdapter.8 EXTRA_NDEF_MESSAGES);9 for (Parcelable message : messages) {

10 NdefMessage msg = (NdefMessage) message;11 for (NdefRecord record : msg.getRecords()) {12 String tagPayload = new String(record.getPayload());13 if (tagPayload.startsWith(SSID)) {14 Log.d(TAG, "Retriving Network SSID");15 networkSSID = tagPayload.replaceFirst(SSID, "");16 }17 if (tagPayload.startsWith(PWD)) {18 Log.d(TAG, "Retriving Network Password");19 networkPWD = tagPayload.replaceFirst(PWD, "");20 }21 }22 }23 } catch (Exception e) {24 e.printStackTrace();25 Log.d(TAG, e.getMessage());26 }27 } else {28 Log.d(TAG, "UNEXPECTED ACTION - " + intent.getAction());29 Toast.makeText(this, "Unexpected Action - " + intent.getAction(),30 Toast.LENGTH_LONG).show();31 }32 }

Codigo 3.3.6: Leitura de Tag NFC e extracao de records SSID Password.

3.3.3 Etapa Wi-Fi

O pacote Wi-Fi e composto por tres arquivos JAVA conforme demonstrado na figura

3.12, sendo distribuıdos da seguinte forma:

• Interface 1: WIFI.java

– Implementacao: WiFiController.java

Implementação 45

Figura 3.12: Packet wifiController

• Classe independente: WiFiConfigurator.java enditemize

A interface WIFI.java disponibiliza de metodos de controle de adaptador Wi-Fi re-

quisitados para a realizacao de todas as acoes deste projeto.

– boolean checkWifiEnabled()- Checa se o adaptador Wi-Fi esta ativo.

– boolean setWifiEnabled(boolean enable)- Ativa o adaptador Wi-Fi.

– boolean startWifiScan()- Inicia busca por conexoes Wi-Fi.

– void addWifiNetwork(WiFiConfigurator wifiConfigurator)- Prepara rede confi-

gurada para conexao .

– void enableNetwork(int id)- Confere permissao de conexao.

– void connect()- Inicia processo de conexao.

– void disconnect() throws RuntimeException- Termina Conexao.

– List<ScanResult> getScanResults()- Lista as redes encontradas pelo adaptador

de rede.

– List<WifiConfiguration> getConfiguredNetworks()- Lista as redes configuradas.

Conforme mencionado, a implementacao destes metodos ocorre na classe WiFiCon-

troller de acordo com o codigo 3.3.7. O SDK possui uma APIs relativa a utilizacao

de adaptores Wi-Fi realmente bem documentados e de facil entendimento. O esforco

maior dessa fase de desenvolvimento foi escolher quais metodos deveriam ser utiliza-

dos dentre todas as possibilidades disponıveis. Conforme pode ser visto nas linhas

6, 7 e 8, foram necessarias tres derivacoes da API android.wifi para preencher todos

os requisitos deste projeto. O codigo 3.3.8 mostra a implementacao da classe Wifi-

Configurator, utilizar esta derivacao da API provou-se igualmente simples merecendo

Implementação 46

poucos pontos de destaque. No entanto vale a pena citar que nas linhas 12, 15 e 18

e necessario que ao inıcio e ao final de cada string, sejam inseridas aspas duplas.

1 package wifiController;2

3 import java.util.List;4 import android.app.Activity;5 import android.content.Context;6 import android.net.wifi.ScanResult;7 import android.net.wifi.WifiConfiguration;8 import android.net.wifi.WifiManager;9 import android.util.Log;

10 import android.widget.Toast;11

12 public class WiFiController extends Activity implements WIFI{13 private WifiManager wifiManager;14

15 public WiFiController(Context context){16 wifiManager = (WifiManager)context.getSystemService(Context.17 WIFI_SERVICE);18 }19 public boolean checkWifiEnabled(){20 return wifiManager.isWifiEnabled();21 }22 public boolean setWifiEnabled(boolean enable)23 {24 return wifiManager.setWifiEnabled(enable);25 }26 public boolean startWifiScan(){27 return wifiManager.startScan();28 }29 public List<ScanResult> getScanResults(){30 return wifiManager.getScanResults();31 }32 public WifiManager getWifiManager(){33 return wifiManager;34 }35 public void disconnect() throws RuntimeException{36 try{37 wifiManager.disconnect();38 }catch (Exception e) {39 e.printStackTrace();40 Log.d("disconnect failure", e.getMessage());41 }42 }43 public void connect() {44 wifiManager.reconnect();45 }46 public void addWifiNetwork(WiFiConfigurator wifiConfigurator) {47 wifiManager.addNetwork(wifiConfigurator.getWifiConfiguration());48 }49 public void enableNetwork(int id) {50 wifiManager.enableNetwork(id, true) ;51 }52 public List<WifiConfiguration> getConfiguredNetworks(){53 return wifiManager.getConfiguredNetworks();54 }55 }

Codigo 3.3.7: Implementacao WiFiController

Implementação 47

1 package wifiController;2

3 import android.net.wifi.WifiConfiguration;4

5 public class WiFiConfigurator{6 private WifiConfiguration wifiConfiguration;7

8 public WiFiConfigurator(){9 wifiConfiguration = new WifiConfiguration();

10 }11 public void configureSSID(String ssid){12 wifiConfiguration.SSID = ("\"" + ssid + "\"");13 }14 public void configureWpaPassword(String password){15 wifiConfiguration.preSharedKey = ("\"" + password + "\"");16 }17 public void setWepPassword(String password){18 wifiConfiguration.wepKeys[0] = ("\"" + password + "\"");19 wifiConfiguration.wepTxKeyIndex = 0;20 wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.21 KeyMgmt.NONE);22 wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.23 GroupCipher.WEP40);24 }25 public void setOpenNetworkPassword(){26 wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.27 KeyMgmt.NONE);28 }29 public WifiConfiguration getWifiConfiguration(){30 return wifiConfiguration;31 }32 }

Codigo 3.3.8: Implementacao WiFiConfigurator

3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxocompleto.

Nesta etapa sera mostrado detalhes da implementacao das funcionalidades NFC e

Wi-Fi para a obtencao do prototipo de solucao final. Para alcancar o fluxo de ativi-

dades desejado, conforme mostrado na sessao arquitetura de solucao, foram criadas

duas: Activity (conjunto formado por uma tela e todas a ela relacionadas), Nfc-

WriterActivity (Atividade de escrita NFC ) e MainActivity (Atividade principal). A

Activity NfcWriterActivity trata exclusivamente da escrita de parametros Wi-Fi em

uma Tag NFC, enquanto a MainActivity referente a leitura de Tag NFC para obten-

cao de parametros Wi-Fi e procedimentos de conexao com a rede correta.

3.3.4.1 NfcWriterActivity

Conforme pode ser visualizado na figura 3.13, esta Activity possui em seu layout dois

campos de entrada de dados: SSID e PWD (password). Cada um desses campos

Implementação 48

representa um record que devera compor uma Ndef Message, apos seu preenchimento

pode-se realizar um evento Tap em Tag NFC para gravar a Ndef Message criada.

codigo 3.4.2 - Os procedimentos para se efetuar a gravacao de uma Tag NFC : Na

linha 22 e 23 verifica-se que ao ser criada uma nova intent (evento Tap NFC ), ocorre

a estruturacao de um objeto que representa a Tag lida pelo adaptador NFC. Nas linha

24-27 sao recuperados o SSID e o Password definidos pelo usuario, e concatenado,

ao inıcio de cada texto, uma string responsavel por distinguir os campos e evitando

problemas quando for realizado o processo de leitura. Por fim na linha 29 o processo

de gravacao e efetivado.

Figura 3.13: Tela de gravacao de Tag NFC

3.3.4.2 MainActivity

A principal prevista para esta Activity sao referentes a conexao Wi-Fi atraves de

leitura de Tag NFC. Ao ser detectado um evento de Tap NFC, e iniciado o processo de

extracao de conteudo, analise de parametros de rede e conexao com a rede Wi-Fi alvo.

O codigo 3.4.1 mostra todo o trajeto percorrido desde a leitura da Tag NFC ate a

efetivacao da conexao. Ao receber uma nova intent e necessario que seja garantido que

Conclusões 49

os parametros de configuracao nao sejam poluıdos por dados previamente salvos, logo

as variaveis globais que guardam esses valores devem ser limpas recebendo conteudo

nulo (linhas 03 e 04), para que assim o adaptador possa efetuar a leitura da Tag

(linha 05) e extrair um novo conteudo -linhas 07 e 08-. Se os campos tiverem sido

recebidos com sucesso -linha 12-, e realizada uma verificacao se a placa Wi-Fi do

dispositivo esta ativada, caso contrario e feita a ativacao -linhas 14 e 15-, lembrando

que se deve disponibilizar tempo para que o hardware inicialize antes de prosseguir

-linha 19-. Seguindo adiante, e feita uma busca pelas redes Wi-Fi capturadas pelo

adaptador -linha 25- e verificado se alguma delas refere-se ao SSID recebido pela Tag

-linha 28-. Em caso de sucesso e requisitado tipo de criptografia atuante na rede

-linha 30- e uma nova configuracao de rede e criada utilizando os parametros SSID e

Password recebidos por NFC em conjunto com o tipo de criptografia recebido pela

rede Wi-Fi (linhas 31 e 35). Finalmente e realizada uma busca entre as conexoes

configuradas, em busca da configuracao recem criada - linha 48 - e, ao encontra-la

(linha 49), iniciasse um processo de desconexao Wi-Fi, ativacao da rede configurada

e conexao (linhas 51 a 53).

3.4 Conclusoes

A implementacao deste projeto acarretou valiosos conhecimentos quanto a integracao

de multiplos dispositivos de hardware em um aplicativo, houve grande utilizacao de

APIs de controle disponibilizadas pelo sistema operacional, possibilitando a aquisicao

experiencias. Ao desenvolver este software de forma modular, pode-se verificar que

cada dispositivo adaptador de hardware possui procedimentos especıficos de ativacao

e controle. No entanto, verifica-se que as APIs trabalham de forma a padronizar

tais procedimentos, possibilitando notar similaridades de utilazacao entre os varios

dispositivos facilitando a compreensao. Ao desenvolver o modulo Wi-Fi percebeu-se

uma grande semelhanca entre as funcoes de controle de seu adaptador e suas funcoes

de configuracao e por esta razao o desenvolvimento fluiu com maior agilidade.

Conclusões 50

1 public void onNewIntent(Intent intent) {2 Log.d(TAG, onNewIntent);3 collectedSSID = null;4 collectedPWD = null;5 nfc.readNdefTag(intent);6 if (nfc.getSSID() != null) {7 collectedSSID = nfc.getSSID();8 collectedPWD = nfc.getPWD();9 } else {

10 Toast.makeText(this, ssidNotFound, Toast.LENGTH_LONG).show();11 }12 if(collectedSSID != null & collectedPWD != null){13

14 if(!wifi.checkWifiEnabled()){15 wifi.setWifiEnabled(true);16 Toast.makeText(this, wifiEnabler, Toast.LENGTH_LONG).show();17 Log.d(TAG, wifiEnabled );18 try {19 Thread.sleep(3000);20 } catch (InterruptedException e) {21 e.printStackTrace();22 }23 }24 try {25 scanResultList = wifi.getScanResults();26 boolean networkFound = false;27 for( ScanResult incResulList : scanResultList ) {28 if(collectedSSID.equals(incResulList.SSID)){29 networkFound = true;30 collectedEncryptionType = incResulList.capabilities;31 wifiConfigurator = new WiFiConfigurator();32 wifiConfigurator.configureSSID(collectedSSID);33

34 if (collectedEncryptionType.contains(encryptionTagWpa)){35 wifiConfigurator.configureWpaPassword(collectedPWD);36 Log.d(TAG, wpa);37 }else if(collectedEncryptionType.38 contains(encryptionTagWep)){39 wifiConfigurator.setWepPassword(collectedPWD);40 Log.d(TAG, wep);41 }else{42 wifiConfigurator.setOpenNetworkPassword();43 Log.d(TAG, openNetwork);44 }45 wifi.addWifiNetwork(wifiConfigurator);46 Log.d(TAG, addNetwork);47 for( WifiConfiguration configuredNetworkList : wifi.48 getConfiguredNetworks()) {49 if(configuredNetworkList.SSID.equals("\"" +50 collectedSSID + "\"")) {51 Log.d(TAG, attemptingConnection);52 wifi.disconnect();53 wifi.enableNetwork(configuredNetworkList.54 networkId);55 wifi.connect();56 }57 }58 }59 }60 if (!networkFound ) {61 Toast.makeText(this, networkNotFound, Toast.LENGTH_LONG).show();62 }63 }catch (Exception e) {64 Log.d(TAG, e.getMessage());65 Toast.makeText(this, e + noWifi, Toast.LENGTH_LONG).show();66 }67 }68 }

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

Conclusões 51

1 package com.example.prototypenfc_wifi;2

3 import java.io.IOException;4 import java.io.UnsupportedEncodingException;5 import nfcController.ForegroundDispatcher;6 import nfcController.NFC;7 import nfcController.NfcDefaultProcessor;8 import nfcController.NfcForegroundDispatcher;9 import android.app.Activity;

10 import android.content.Intent;11 import android.nfc.FormatException;12 import android.nfc.NfcAdapter;13 import android.nfc.Tag;14 import android.os.Bundle;15 import android.util.Log;16 import android.view.View;17 import android.widget.Button;18 import android.widget.EditText;19 import android.widget.Toast;20

21 public class NfcWriterActivity extends Activity{22

23 private String TAG = "nfc_writer_activity";24 private String SSID;25 private String PASSWORD;26 private NFC nfc;27 private ForegroundDispatcher foregroundDispatcher;28

29 @Override30 public void onCreate(Bundle savedInstanceState) {31 super.onCreate(savedInstanceState);32 setContentView(R.layout.nfc_tag_writer);33 foregroundDispatcher = new NfcForegroundDispatcher(this);34 nfc = new NfcDefaultProcessor();35 }36

37 @Override38 public void onNewIntent(Intent intent) {39 Tag newTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);40 EditText editSsid = (EditText) this.findViewById(R.id.nfc_writer_ssid);41 SSID = "ssid:" + editSsid.getText().toString();42 EditText editPwd = (EditText) this.findViewById(R.id.nfc_writer_pwd);43 PASSWORD = "pwd:" + editPwd.getText().toString();44 try {45 nfc.writeNdefTag(newTag, SSID, PASSWORD);46 Toast.makeText(this, "Tag written", Toast.LENGTH_LONG).show();47 } catch (UnsupportedEncodingException e) {48 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();49 } catch (IOException e) {50 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();51 } catch (FormatException e) {52 Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();53 }54 }55 @Override56 public void onResume() {57 Log.d(TAG, "onResume");58 super.onResume();59 foregroundDispatcher.enable();60 }61 @Override62 public void onPause() {63 Log.d(TAG, "onPause");64 super.onPause();65 foregroundDispatcher.disable();66 }67 }

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

Capıtulo 4

Testes e Avaliacao

Este capıtulo aborda como foram realizados testes funcionais e mostra seu compor-

tamento em resposta a cada cenario de teste. Esta etapa deve ser considerada ex-

tremamente importante pois evidencia bugs ou excecoes nao planejadas, assim como

possibilita a formacao de uma documentacao completa.

4.1 Material Utilizado

– Smartphone Samsung Galaxy SIII GT-I9300

– Sistema Operacional Android 4.1.2

– Roteador motorola SVG1202 Wireless

– Smartphone Nokia Lumia 720

– Smartphone Nokia N9

– Tag NFC MIFARE Classic 4k

– Tag NFC Type 1 - 120 Bytes

4.2 Casos de teste

O aplicativo foi colocado a prova passando pela bateria de testes descrita nesta sessao,

tendo resultados satisfatorios na maioria dos casos. Importante relatar que apenas o

smartphone Samsung Galaxy SIII foi utilizado com portador do aplicativo, os demais

listados na sessao anterior foram utilizados como provedores de ponto de acesso Wi-Fi

em adicao ao roteador Motorola tambem listado.

Casos de teste 53

4.2.1 Gravacao de Tag NFC

Este teste consiste em gravar dados referentes ao SSID e Password do hotspot alvo

em uma Tag NFC. Foram testados quantidades distintas de caracteres em ambos os

campos afim de encontrar limitacoes que pudessem inviabilizar o aplicativo. Para

este teste foram utilizados os dois modelos de Tag NFC - Tag Type 1 e Tag MIFARE

Classic 4k. E importante ressaltar que a quantidade de caracteres indicada em cada

teste refere-se a quantidade inserida pelo usuario, nao estando inclusos os 9 caracteres

de controle concatenados a cada campo de forma transparente ao usuario: pwd: e e

ssid:

20 caracteres

Foram inseridos 10 caracteres em cada record e todas as Tags alcancaram resultados

positivos efetuando a gravacao com sucesso sem mostrar perda de dados. A figura

4.1 mostra a gravacao de 20 caracteres alfanumericos em uma Tag NFC MIFARE

Classic

50 caracteres

Foram inseridos 25 caracteres em cada record e todas as Tags alcancaram resultados

positivos, no entanto houveram casos em que se pode notar uma leve diminuicao na

velocidade de escrita da Tag Type 1, mesmo assim as tentativas foram bem sucedidas

e sem perdade dados. A figura 4.2 mostra a gravacao de 50 caracteres alfanumericos

em uma Tag NFC MIFARE Classic

300 caracteres

Foram inseridos 150 caracteres em cada record e apenas a Tag MIFARE Classic con-

seguiu consegiu realizar a tarefa com sucesso e sem perda de dados. A Tag Type

1 tornou-se inacessıvel em todos os casos, mesmo assim a aplicacao nao se mostrou

instavel. Este acontecimento deve-se ao fato da Tag Type 1 nao possuir memoria

suficiente para armazenar esta quantidade de caracteres, por este motivo a Tag MI-

FARE foi escolhida para efetuar os testes de fluxo completo do aplicativo. A figura

Casos de teste 54

Figura 4.1: Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC

4.3 mostra a gravacao de 300 caracteres alfanumericos em uma Tag NFC MIFARE

Classic de 4kb

4.2.2 Fluxo completo

O teste de fluxo completo consiste em gravar os dados de handover Wi-Fi em uma

Tag NFC e de forma subsequente fazer sua leitura para iniciar o processo de conexao.

A figura 4.4 mostra a gravacao dos parametros de handover Wi-Fi pertencentes a

uma rede sem fio valida. Esta etapa corresponde ao inıcio do teste de fluxo completo.

Sendo o proximo passo mostrado na figura 4.5, onde caso o adaptador de rede Wi-

Fi esteja desativado, este devera ser ativado automaticamente apos um evento Tap

NFC. Por fim, a figura ?? mostra o indicacao de conexao bem sucedida com a rede

alvo. Este teste foi repetido sob condicoes distintas descritas no decorrer desta secao.

Casos de teste 55

Figura 4.2: Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC

Influencia de um unico hotspot

Este caso de teste foi ambientado com influencia de apenas um hotspot e utilizado

um unico modelo de Tag NFC, o MIFARE Classic.

– Curta distancia em relacao ao ponto de acesso (3m)

∗ Conexao realizada com sucesso.

– Media distancia em relacao ao ponto de acesso (10-15m)

∗ Conexao realizada com sucesso.

– longa distancia em relacao ao ponto de acesso (aprox. 40m - sinal fraco)

∗ Conexao realizada com sucesso.

Casos de teste 56

Figura 4.3: Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC

Influencia de multiplos hotspots

Este caso de teste foi ambientado com influencia de tres pontos de acesso Wi-Fi

apenas um hotspot e utilizado um unico modelo de Tag NFC, o MIFARE Classic.

– Curta distancia entre hotspots (1m)

∗ Conexao nao realizada, houve interferencia e nenhuma conexao foi efetivada.

– Media distancia entre hotspots (5-15m)

∗ Conexao realizada com sucesso.

– longa distancia entre hotspots (aprox. 40m - sinal fraco)

∗ Conexao realizada com sucesso.

Casos de teste 57

Figura 4.4: Gravacao dos parametros handover Wi-Fi de uma rede valida em uma TagNFC

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

Hotspots com o mesmo SSID

Foram criados hotsposts distintos mas que utilizavam o mesmo SSID. Houve incompa-

tibilidade de redes mesmo antes de utilizar o aplicativo, nao podendo ter um resultado

Casos de teste 58

Figura 4.6: Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot

satisfatorio.

Multiplos Taps em Tags NFC distintas

Este teste consistiu em efetuar multiplos Taps NFC em Tags com parametros refe-

rentes a 3 redes sem fio distintas, notou-se que a cada Tap o processo retornava ao

estado inical, logo ao efetuar o ultimo Tap a conexao se realizava com sucesso. A

figura 4.7 representa o estresse que o aplicativo sofreu ao serem realizados diversos

eventos de Tap NFC, onde a Tag NFC da direita representa a rede correta e esquerda

represena uma Tag NFC com SSID invalido

Avaliação de Resultados 59

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

4.3 Avaliacao de Resultados

Com bases nos teste realizados pode-se concluir que o Aplicativo funcionou de forma

esperada, sem a presenca de excecoes que por ventura o tornassem inacessıvel. Tanto

o fuxo de gravacao de Tag NFC, como o fluxo de leitura e conexao ocorrem conforme

o planejado mostrando que o sistema efetuou todos os passos de conexao de forma

ordenada e correta. Portando vale afirmar que a prototipagem manteve-se dentro das

especificacoes mantendo os padroes de qualidade definidos anteriormente no projeto.

Capıtulo 5

Conclusao

5.1 Consideracoes Finais

Ao encerar a etapa de desenvolvimento alcancou-se o objetivo tecnico final do projeto,

a criacao de um sistema movel capaz de automatizar o processo de conexoes entre

smartphones Android e hotspots Wi-Fi utilizando a tecnologia NFC como base.

A tarefa de automatizar procedimentos nem sempre e simples, deve-se primeiramente

estudar com cuidado em quais etapas se deve realmente retirar o controle do usuario

e proceder sem sua interferencia.

E importante lembrar que pessoas gostam de comodidade, mas isso nao e suficiente

para atingir as metas de qualidade esperadas. A grande dificuldade em projetos de

automacao nao esta em apenas descobrir e prover opcoes faceis para a realizacao

uma determinada tarefa, alem disso o sistema precisa ser adaptativo as vontades do

usuario, tendo em vista que haverao momentos em que o usuario pode decidir por

mudar o comportamento do sistema, mesmo que este esteja realizando uma operacao

autonoma. As principais acoes que geram mudancas de estado nos sistemas sao

reiniciar, pausar, interromper e terminar um procedimento ou o sistema como um

todo.

Ao utilizar Tags NFC como disparadores do processo de conexao Wi-Fi entre o

dispositivo movel e o hotspot, da-se ao usuario total controle do momento em que se

deve iniciar ou reiniciar o processo, pois realizacao de um evento Tap NFC depende

inteiramente de uma interacao ativa entre o ser humano e seu dispositivo movel com

Trabalhos Futuros 61

a Tag NFC. Por tanto, para este sistema pode-se afirmar que a cada evento Tap, o

sistema retornara para seu estado inicial e um novo processo de conexao sera iniciado.

Conforme pode ser verificado na etapa de testes (Capitulo 4), o sistema mostrou

que possui flexibilidade suficiente para nao sofrer perdas performance ou sucumbir a

falhas crıticas mesmo que estressado com incessantes modificacoes de comportamento

representados por eventos Tap em distintas Tags NFC.

Sabe-se entao, que as escolhas tecnologicas definidas para este projeto em conjunto

com a arquitetura de solucao adotada possibilitaram a obtencao de um produto que

alcanca resultados satisfatorios, permitindo que a conexao seja efetuada rapidamente,

sem esforco e sem se deixar atrelar a gargalos fısicos, que por ventura possam dificultar

o acesso a identificacao do hotspot desejado.

O prototipo NFC-WiFi cumpre os requisitos definidos na sessao de arquitetura desta

monografia, permitindo que os usuarios gravem suas proprias Tags NFC identificando

redes sem fio privadas ou que efetuem leitura de Tags gravadas por terceiros com o

objetivo de realizar conexao automatica com as redes nelas definidas. Esta solucao

possibilita o acesso rapido e descomplicado a redes Wi-Fi, tendo sua utilizacao ideal

em localidades publicas com shoppings, parques, aeroportos ou em estabelecimen-

tos comerciais como restaurantes e lojas, alem de poder ser integrado a aplicacoes

mais robustas que utilizem-no como facilitador de disponibilizacao de outros servicos,

podendo tambem ser utilizado com finalidades didaticas.

Espera-se que este projeto cause grande impacto as pessoas que visem trabalhar com

tecnologias novas e/ou alternativas para automatizacao de tarefas, como a tecnologia

NFC. Independentemente de casos de uso ou de metodologias de desenvolvimento

de software, deve-se ter em mente que uma engenharia adequada da solucao e fator

responsavel pelo sucesso da criacao de um produto.

5.2 Trabalhos Futuros

Existe muitas possibilidades de utilizacao para a tecnologia NFC. No entanto pode-se

sugerir que este sistema possa ser evoluıdo para os casos de uso listados abaixo.

Trabalhos Futuros 62

– Utilizar procedimentos de conexao com hotspots via Tag NFC como base para:

∗ Criar testes de performance de conexao.

∗ Realiazar leitura de parametros de configuracao via NFC p2p.

∗ Testar a utilizacao de Tags de tipos incompatıveis com Ndef .

∗ Implementacao de NFC Card Emulation.

∗ Tratamento de funcionalidades aplicativo via conexao com back-end do sis-

tema.

∗ Controle de sistemas microprocessados.

∗ Autenticacao de usuario com sistemas localizados na Web ou em redes pri-

vadas.

∗ Acionamento e desativacao de dispositivos a distancia.

∗ Efetivacao de recrusos via leitura de coordenadas GPS.

Referencias Bibliograficas

[Agar2004] Agar, J. (2004). Constant Touch: A Global History of the Mobile Phone.

Totem Books.

[Arena2013] Arena, G. (2013). Gsm arena. www.gsmarena.com. website internacio-

nal especializado em comparativos de telefonia celular, acesso em 01-12-2013.

[Brasil2013] Brasil, N. (2013). Nfc brasil. http://nfcbrasil.wordpress.com/. website

informativo, acesso em 01-12-2013.

[Coshum et al.2013] Coshum, V., Ok, K., and Ozdenizci, B. (2013). Professional

NFC Application Development for Android. John Wiley and Sons.

[Developer2008] Developer, A. (2008). Wifi android api guide.

developer.android.com/reference/android/net/wifi/package-summary.html. Offi-

cial Android Developer website, acesso em 01-12-2013.

[Developer2011] Developer, A. (2011). Developer tools.

http://developer.android.com/tools/index.html. Official Android Developer

website, acesso em 01-12-2013.

[Developer2013a] Developer, A. (2013a). Near field communication android api

guide. developer.android.com/guide/topics/connectivity/nfc/index.html. Official

Android Developer website, acesso em 01-12-2013.

[Developer2007] Developer, N. (2007). Understanding

nfc data exchange format (ndef) messages. develo-

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

Official website, acesso em 01-12-2013.

[Developer2012] Developer, N. (2012). Indt desenvolve primeira solucao de paga-

mento via nfc do brasil. www.indt.org. official website, acesso em 01-12-2013.

REFERÊNCIAS BIBLIOGRÁFICAS 64

[Developer2013b] Developer, N. (2013b). Nokia developer qt. develo-

per.nokia.com/qt. official website, acesso em 01-12-2013.

[Developer2013c] Developer, N. (2013c). Nokia developer symbian c++. deve-

loper.nokia.com/Develop/Featured Technologies/Symbian C++. official website,

acesso em 01-12-2013.

[Developer2013d] Developer, N. (2013d). Nokia developer windows phone. develo-

per.nokia.com/Develop/Windows Phone. official website, acesso em 01-12-2013.

[Dias2010] Dias, R. (2010). RFID Implementation. RFID Center of Exellence.

[Forum2006] Forum, N. (2006). Nfc data exchange format (ndef) - technical specifi-

cation. www.nfc-forum.org/specs. Official website, acesso em 01-12-2013.

[Forum2013] Forum, N. (2013). Nfc forum. www.nfc-forum.org/home. Official web-

site, acesso em 01-12-2013.

[Foursquare2013] Foursquare (2013). Offical foursquare api - client resources. deve-

loper.foursquare.com/resources/client. Acesso em 01-12-2013.

[Guy2009] Guy, R. (2009). The Evolution of Mobile Teaching and Learning. Infor-

ming Science Press.

[Hessel et al.2011] Hessel, F., Villar, R., Dias, R., and Baladei, S. (2011). Implemen-

tando RFID na Cadeia de Negocios. ediPUCRS, segunda edition.

[LinkedIn2011] LinkedIn (2011). Linkedin for symbiam.

store.ovi.com/content/121603?clickSource=search&pos=1. Acesso em 01-12-

2013.

[Michaelis2008] Michaelis (2008). Dicionario Escolar Ingles, Ingles-portugues - Nova

Ortografia. Melhoramentos.

[NXP2009] NXP (2009). Nfc forum type tags white paper v1.0. www.nfc-

forum.org/specs. acesso em 01-12-2013.

[S.A. and M.2010] S.A., A. and M., I. (2010). RFID Handbook: Applications, Tech-

nology, Security, and Privacy. Taylor and Francis.

[Sharma2011] Sharma, C. (2011). How mobile will change the way we spend. Mobile

Future FORWARD.

REFERÊNCIAS BIBLIOGRÁFICAS 65

[Terra2013] Terra, P. (2013). Idc: Android domina mercado de

smartphones e windows avanca. tecnologia.terra.com.br/negocios-

e-ti/idc-android-domina-mercado-de-smartphones-e-windows-

avanca,2d28edf6cad42410VgnCLD2000000ec6eb0aRCRD.html. NotAcia rela-

cionada a venda de smartphones, acesso em 01-12-2013.

[UOL2012] UOL (2012). pagseguro nfc. www.pagseguronfc.uol.com.br. Uol pagse-

guro NFC - official website, acesso em 01-12-2013.