Professional Documents
Culture Documents
ENGENHARIA DE COMPUTAC
AO
LIRA MOREIRA
ANDRE
SISTEMA MOVEL
BASEADO EM ANDROID-NFC
AUTONOMA
PARA CONEXAO
EM HOTSPOTS
Manaus
2013
LIRA MOREIRA
ANDRE
SISTEMA MOVEL
BASEADO EM ANDROID-NFC PARA CONEXAO
AUTONOMA
EM HOTSPOTS
ii
CIP - Catalogac
ao na Publicac
ao
M835s
MOREIRA, Andre
Sistema Movel baseado em Android-NFC para conexao autonoma em Hotspots / Moreira Andre; [orientado por] Prof. Dr. Carlos Maurcio Serodio Figueiredo - Manaus: UEA, 2013.
240 p.: il.; 30cm
Inclui Bibliografia
Trabalho de Conclusao de Curso (Graduacao em Engenharia de Computacao. Universidade do Estado do Amazonas, 2013.
CDU: 004.45
iii
LIRA MOREIRA
ANDRE
SISTEMA MOVEL
BASEADO EM ANDROID-NFC PARA
EM HOTSPOTS
AUTENTICAC
AO
da Escola
iv
Agradecimentos
Ao final desta importante etapa, torna-se difcil fazer agradecimentos sem poder citar todas as pessoas que me influenciaram ao longo
do desenvolvimento deste projeto, por isso
dedico a concretizacao deste sonho a todos.
E com um carinho especial, agradeco a Deus,
agradeco `a minha famlia por amor e seu
crenca em minhas conquistas. A meu irmao
Andre Portela, por sua genialidade contagi` Priscilla Peante, por seu apoio e amizade. A
res, por sua cumplicidade, amizade e amor.
A meu orientador Maurcio e aos demais amigos professores, por sua dedicacao ao ensinar,
por sua paciencia e ajuda em momentos de
crise. Por fim ao INdT, ambiente onde adquiri grandes amizades e conhecimentos.
vi
Resumo
Este projeto tem como objetivo apresentar todos os passos efetuados com no desenvolvimento de um sistema movel baseado em Android-NFC, capaz de realizar conexoes sem
fio entre smartphones Android e hotspots Wi-Fi, ao receber seus parametros de configuracao atraves de eventos Tap em Tags NFC. Esperando que estas informacoes esclarecam a`
comunidade desenvolvedora de software do Estado do Amazonas sobre as comodidades e
possibilidades em automacao providas pela utilizacao correta da tecnologia NFC. Todas as
questoes referentes a sua modelagem conceitual, arquitetura de sistema e implementacao
serao abordadas e explicadas.
Palavras Chave: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC,
Hotspot, smartphone
vii
Abstract
This project has the purpose to present all the steps taken on the creation of an AndroidNFC technology based mobile system, capable of performing wireless connections between
a Android smart-phones device and Wi-Fi hotspots by receiving their configuration parameters from a Tap event on a NFC TAG. Hopping that these information provides
enlightening to the Amazon software developer community about the commodities and
automation possibilities provided by the use right use of NFC technology. All matters
regarding its conceptual design, system architecture and implementation will be concerned
and therefore explained.
Key-words: Near Field Communication, Wi-Fi, Ndef, Android OS, Tag NFC, Hotspot,
smartphone
viii
Sum
ario
Lista de Tabelas
xi
Lista de Figuras
xii
Lista de C
odigos
xiii
1 Introduc
ao
1.1 Contextualizacao . . . . . .
1.2 Descricao do Problema . . .
1.3 Objetivos . . . . . . . . . .
1.3.1 Objetivos Gerais . .
1.3.2 Objetivos Especficos
1.4 Justificativa . . . . . . . . .
1.5 Estrutura do Documento . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Referencial te
orico e trabalhos relacionados
2.1 Decisoes Tecnologicas . . . . . . . . . . . . . . . . . .
2.1.1 Tecnologia Near Field Communication - NFC
2.1.1.1 Definicao . . . . . . . . . . . . . . .
2.1.1.2 Funcionamento . . . . . . . . . . . .
2.1.1.3 Formas de utilizacao . . . . . . . . .
2.1.1.4 Especificacoes essenciais . . . . . . .
2.1.1.5 Aplicacoes . . . . . . . . . . . . . . .
2.1.1.6 Elementos NFC Passivos - Tags . . .
2.1.1.6.0.1
Definicao . . . . . . .
2.1.1.6.0.2
Composicao . . . . .
2.1.1.6.0.3
Tipos . . . . . . . . .
2.1.1.7 Dispositivos Celulares Suportados . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
3
3
3
4
5
.
.
.
.
.
.
.
.
.
.
.
.
6
6
7
7
7
8
8
10
11
11
12
13
14
ix
2.2
2.3
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
forum
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Desenvolvimento T
ecnico
3.1 Especificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.0.1 Definicao de solucao . . . . . . . . . . . . . . . . .
3.1.0.2 Identificacao de Hotsposts . . . . . . . . . . . . . .
3.1.0.3 Estruturacao de dados em Tags NFC - Ndef . . .
3.1.0.4 Acoes definidas . . . . . . . . . . . . . . . . . . . .
3.1.0.5 Arquitetura de solucao . . . . . . . . . . . . . . . .
3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Metodologia de desenvolvimento . . . . . . . . . . . . . . . .
3.3 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Etapa NFC . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2.1 NFC Foreground Dispacher . . . . . . . . . . . . .
3.3.2.2 Classe NfcDefaultProcessor . . . . . . . . . . . . .
3.3.2.2.0.4
Escrita de Tag NFC . . . . . . . .
3.3.2.2.0.5
Leitura de Tag NFC . . . . . . . .
3.3.3 Etapa Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4 Etapa de integracao NFC-WiFi - Criacao de fluxo completo.
3.3.4.1 NfcWriterActivity . . . . . . . . . . . . . . . . . .
3.3.4.2 MainActivity . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
18
18
18
18
19
19
19
20
20
20
21
21
21
21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
26
28
28
30
35
35
37
38
38
39
41
42
43
44
47
47
48
x
3.4
Conclusoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Testes e Avaliac
ao
4.1 Material Utilizado . . . .
4.2 Casos de teste . . . . . .
4.2.1 Gravacao de Tag
4.2.2 Fluxo completo .
4.3 Avaliacao de Resultados
49
.
.
.
.
.
52
52
52
53
54
59
5 Conclus
ao
5.1 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
60
61
Refer
encias Bibliogr
aficas
63
. . .
. . .
NFC
. . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xi
Lista de Tabelas
2.1
2.2
3.1
14
15
36
xii
Lista de Figuras
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
Modulo leitor NFC gerando campo eletromagnetico incidente sobre um elemento NFC passivo. [S.A. and M.2010] . . . . . . . . . . . . . . . . . . . .
Um modulo leitor RFID atuando sobre um elemento RFID passivo possui
as mesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum
et al.2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Possveis Aplicacoes da tecnologia NFC segundo [Forum2013]. . . . . . . .
Tag NFC tipo 1 em relacao a seu tamanho. . . . . . . . . . . . . . . . . .
Raio X de uma Tag NFC composta por circuito ASIC e antena. . . . . . .
Raio X de um Smartcard NFC por [Coshum et al.2013] . . . . . . . . . . .
Top 35 de smartphones que disponibilizam tecnologia NFC. [Arena2013] .
PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia [UOL2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Disposicao de redes sem fio em uma localidade . . . . . . . . . . . . . . . .
Proposta de solucao Utilizando Tags NFC . . . . . . . . . . . . . . . . . .
Campos identificadores Wi-Fi armazenados em TAG NFC . . . . . . . . .
Fluxo gerados eventos de leitura de Tags NFC em sistema operacional Android . [Developer2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estrutura de mensagem Ndef. [Developer2007] . . . . . . . . . . . . . . . .
Ideia inicial de funcionamento do aplicativo. . . . . . . . . . . . . . . . . .
Diagrama de sequencia do modulo write NFC . . . . . . . . . . . . . . . .
Diagrama de sequencia do modulo responsavel pela conexao WiFi e . . . .
Diagrama de navegacao do aplicativo . . . . . . . . . . . . . . . . . . . . .
Diagrama de classes do projeto. . . . . . . . . . . . . . . . . . . . . . . . .
Packet NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Packet wifiController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tela de gravacao de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . .
10
11
12
12
13
16
23
25
26
27
29
29
31
32
32
33
34
39
45
48
xiii
4.1
4.2
4.3
4.4
4.5
4.6
4.7
54
55
56
57
57
58
59
xiv
Lista de C
odigos
3.3.1 Arquivo Android Manifest (xml) . . . . . . . . . . . . . . . . . . . . . . . .
39
41
42
43
43
44
46
47
50
51
Captulo 1
Introdu
c
ao
1.1
Contextualizac
ao
Segundo [Forum2013], o ecossistema ambientado pela tecnologia Near Field Communication-NFC encontra-se plenamente desenvolvido e difuso dentre os pases que compoem
os continentes Europeu, Asiatico, Oceania e Norte Americano. No entanto, esta nao e
a realidade do cenario atual brasileiro, cujos benefcios sao pouco conhecidos, tanto pelos
usuarios de smartphones como pela comunidade de desenvolvedores de software embarcado,
resultando em um ecossistema imaturo ainda em fase de desenvolvimento.
A razao para tal deve-se principalmente ao fato de que a partir de sua data de desenvolvimento, ano de 2002, a tecnologia NFC foi disponibilizada em poucos modelos de
dispositivos moveis direcionados ao mercado brasileiro conforme pode ser visualizado na
referencia [Arena2013]. Alem disso, estes eram classificados como smartphones high-end,
cujo p
ublico-alvo destina-se a um mercado especfico com consumidores de grande poder
aquisitivo, segundo [Sharma2011] e [Guy2009], este fato dificultou a popularizacao da tecnologia entre as massas de baixa renda.
Segundo [Arena2013] e [Agar2004], os smartphones ganharam popularidade, o que era
tendencia se tornou uma hegemonia, chegando a ocorrer muitos casos onde os usuarios
substituiram seuspersonal computers - PCs por smartphones. A quantidade de dispositivos
no mercado atual brasileiro passou a ser expressiva e os consumidores se tornaram cada
Descrio do Problema
vez mais exigentes, gerando grande concorrencia entre empresas montadoras de telefonia
celular: Samsung, Apple, Nokia, HTC, Motorola, Sony e etc.
Isso levou ao desenvolvimento de dispositivos celulares com especificacoes de hardware
adequadas `as necessidades de cada tipo de usuario consumidor e aos requisitos exigidos
pelos ecossistemas de software utilizados. Estes ecossistemas sao constitudos e suportados
pelas plataformas utilizadas: Android, Windows Phone, IOS, Meego, entre outras.
Segundo [Coshum et al.2013], [Hessel et al.2011] e [Forum2013], parte do ecossistema
NFC esta voltado para aplicacoes embarcadas independentes do ecossistema de telefonia
movel, agregando valor a` tecnologia.
1.2
Descric
ao do Problema
Durante a u
ltima decada, houveram saltos evolutivos significativos em todas as areas
tecnologicas. Abordando como escopo a area de tecnologia de telecomunicacoes, pode-se
ressaltar o surgimento e aplicacao de diversos componentes de hardware, como processadores dual-core e quad-core, modulos de memoria RAM, modulos de conectividade sem
fio, displays touchscreen, entre outros que possibilitaram a compilacao de dispositivos de
telefonia movel muito mais potentes e com maior desempenho.
Estas novas possibilidades em hardware necessitaram do suporte de sistemas operacionais embarcados robustos com conceitos inovadores em usabilidade e passveis de conexao
com a internet, criando infinitas possibilidades de servicos ao usuario, podendo-se citar
como principais o acesso a redes sociais, servicos de geo-localizacao , streaming de vdeos,
chamadas de voz por IP, jogos e entretenimento.
Tao logo o usuario experimentou tais novidades, surgio a necessidade de se permanecer online permanentemente, com a maior largura de banda para transferencia de dados
possvel. Com a finalidade de sanar tal necessidade, muitos administradores de localidades
- Centros medicos, aeroportos, Shopping centers, ambientes domesticos e corporativos decidiram disponibilizar internet aos seus visitantes e/ou colaboradores, de forma gratuita
ou nao, por meio de hotspots, que sao nada mais que pontos de acesso Wi -Fi.
Para que a conexao seja concluda com sucesso, deve-se executar uma serie de passos
de configuracao entre o dispositivo movel e a rede desejada. Buscando prover comodidade
Objetivos
e praticidade ao usuario e uma melhor distribuicao do servico oferecido, eis que surge a necessidade de automatizar o processo de conexao entre o smartphone e o hotspot, atenuando
a interacao do usuario tanto com seu dispositivo quanto com os agentes responsaveis por
fornecer as configuracoes do hotspot alvo. Confome pode ser visto [Forum2013] e [Coshum
et al.2013], pode-se adequar conceitos tecnologicos aos requisitos de qualidade de forma
eficiente quando utilizando a tecnologia Near Field Communication-NFC como recurso
provedor de automacao, por abranger quantidade significativas de possibilidades em solucoes.
1.3
Objetivos
1.3.1
Objetivos Gerais
Esta monografia tem como objetivo apresentar a` comunidade academica da Universidade do Estado do Amazonas uma solucao ao problema descrito na secao anterior, utilizando a tecnologia NFC como base para automatizar processos de conexao entre um
dispositivo movel e redes Wi -Fi, mostrando a padronizacao criada por NFC Forum - (Ndef
- que permite a utilizacao da tecnologia NFC de forma simples e portavel para diversos
sistemas operacionais.
1.3.2
Objetivos Especficos
Apresentar uma solucao que atenda aos requisitos de automatizacao utilzando Tags
NFC.
Utilizar a padronizacao internacional -Ndef - da tecnologia NFC .
Utilizar APIs disponveis para S.O. Android versao 4.0 ou superior.
Identificar as etapas efetuadas pelo usuario ao iniciar um processo de conexao Wi -Fi
e possvel pontos para automatizacao.
Desenvolver um prototipo de aplicativo para S.O. Android 4.1.
Justicativa
1.4
Justificativa
Estrutura do Documento
1.5
Estrutura do Documento
Esta monografia esta organizada da seguinte forma: O captulo 2 apresenta conceitualmente as tecnologias utilizadas no decorrer do desenvolvimento do projeto, assim como as
APIs e ferramentas utilizadas e trabalhos relacionados; no captulo 3 e abordada a totalidade do desenvolvimento tecnico do projeto, incluindo especificacoes tecnicas, arquitetura
e implementacao; o captulo 4 apresenta um descricao dos casos de testes realizados e resultados obtidos. Por fim sao apresentadas no captulo 5 as consideracoes finais, onde sao
includos a apresentacao de resultados e possveis trabalhos futuros.
Captulo 2
Referencial te
orico e trabalhos
relacionados
Este captulo aborda em detalhes as referencias teoricas tecnologicas e ferramentas utilizadas durante a fase de desenvolvimento do projeto (captulo 3). Serao apresentados
conceitos, especificacoes e sera respondido o porque de sua utilizacao no projeto tendo em
vista a vasta quantidade de opcoes em tecnologias disponveis atualmente.
2.1
Decis
oes Tecnol
ogicas
A maior decisao tecnologica neste projeto foi a escolha da tecnologia NFC como solucao
base desde o momento de sua concepcao, concretizando seu objetivo de apresentar suas potencialidades e utilizacao pratica por meio de sua aplicacao na elaboracao uma arquitetura
de solucao viavel e satisfatoria.Devera tambem ser mencionada a escolha da padronizacao
internacional Ndef para a utilizacao da tecnologia NFC, e do ecossistema Android como
ambiente operacional para a solucao.
Decises Tecnolgicas
2.1.1
Conforme sera observado no captulo 3, a tecnologia NFC nao sera utilizada em sua
totalidade neste projeto. Sua utilizacao foi desenvolvida a partir do conceito de conexao
entre um elemento NFC ativo e um passivo. No entanto, por ser uma tecnologia pouco
conhecida, e interessante que seja abordada alem dos requisitos utilizados por carater de
conhecimento.
2.1.1.1
Definic
ao
Segundo [Hessel et al.2011], [Dias2010], [S.A. and M.2010] e [Coshum et al.2013] Near Field Communication ou Comunicacao de Campo Proximo refere-se a uma tecnologia
desenvolvida a partir de estudos provenientes da tecnologia Radio-Frequency Identification
- RFID, que possibilita trocar de informacoes entre dispositivos compatveis sem o auxlio
de fiacao, de forma segura e rapida, contanto que os dispositivos sejam aproximados e
mantidos dentro de um limite mnimo para que a comunicacao ocorra com sucesso.
Assim que os dispositivos estejam suficientemente proximos, a comunicacao entre eles
e estabelecida automaticamente, sem necessidade de configuracoes adicionais, pareamento
ou autenticacao de usuario.
2.1.1.2
Funcionamento
Conforme mencionado em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013], a` tecnologia NFC e fundamentada pelo princpio fsico de inducao magnetica, onde a incidencia
de um campo magnetico sobre um circuito eletrico (espira) torna possvel produzir uma
corrente eletrica induzida.Sendo que a ativacao de um modulo NFC ocorre quando ondas
eletromagneticas, geradas por um segundo modulo, sao captadas por suas antenas criando
canais de comunicacao, podendo ser de uma via, contando com um modulo transmissor e
um modulo receptor, ou de duas vias (peer-to-peer ) contando com dois modulos transmissores/receptores.
Decises Tecnolgicas
2.1.1.3
Formas de utilizac
ao
Um sistema NFC pode possuir dois tipos de elementos que podem ser ativos ou passivos.
Um dispositivo passivo e constitudo por um modulo incapaz de gerar sinais de conexao,
enquanto o ativo possui tal capacidade sendo capaz de enviar, receber e interpretar sinais
eletromagneticos. Vale lembrar que uma conexao NFC so pode ser efetuada entre dois
modulos por vez. Dito isto, podem-se obter tres formas de utilizacao conforme citadas
em [Dias2010], [S.A. and M.2010] e [Coshum et al.2013]:
1. Modo Read/Write - Leitura ou alteracao de dados em um dispositivo NFC passivo.
2. Modo Card Emulation - Dispositivo movel pode simular um smart card, no entanto
requer este possua um chip programavel dedicado a criptografia.
3. Modo Peer-to-Peer - Comunicacao entre dois dispositivos NFC ativos.
As figuras 2.1 e 2.2 mostram a criacao de um canal com uma via de comunicacao
onde o leitor NFC em conjunto com sua antena representam um modulo NFC embarcado
que pode estar presente em diversos dispositivos moveis. Este modulo gera um campo
magnetico que incide sobre um modulo NFC passivo nao alimentado retratado como Tag
NFC.
O princpio de inducao magnetica faz com que este campo induza a criacao de uma
corrente eletrica que percorre o circuito do objeto passivo, alimentando-o. Uma vez que
o circuito esteja alimentado e funcional, ocorre o processo de leitura/escrita de dados na
Tag.
Ainda contemplando a figura 2.1, pode-se afirmar que se a Tag NFC fosse substituda
por um modulo ativo, composto por outro conjunto de leitor e antena NFC,mo sistema seria
formado por dois modulos que captariam e interpretariam as ondas magneticas geradas
por cada ponta estabelecendo uma conexao Peer-to-Peer (P2P), onde ambos os modulos
enviam e recebem mensagens.
2.1.1.4
Especificaco
es essenciais
Em comparacao a`s demais tecnologias sem fio, a tecnologia Near Field Communication
- NFC possui um campo de conexao com alcance extremamente curto. O campo magnetico
Decises Tecnolgicas
Figura 2.1: Modulo leitor NFC gerando campo eletromagnetico incidente sobre um elemento NFC passivo. [S.A. and M.2010]
gerado pelas antenas NFC presente em dispositivos moveis possui, em teoria, ate 10 cm
de alcance. No entanto, em meios praticos, este e reduzido para uma valor que oscila em
uma faixa de 1 `a 4 centmetros conforme visto em: [Coshum et al.2013] e [Forum2013].
Devido `a limitacao de comprimento de campo magnetico, para que uma conexao NFC
seja bem sucedida e necessario que os dispositivos transmissores/receptores sejam aproximados um do outro. Este procedimento intitula-se Tap, proveniente da lngua inglesa que
segundo o dicionario [Michaelis2008], significa bater/encostar.
A tecnologia opera em uma faixa de frequencia de 13.56 MHz definida pela padronizacao
internacional ISO/IEC 18000-3 publicada no ano de 2004, mantendo taxas de transferencia
de dados variaveis dentro de uma faixa correspondente a 106 `a 424 kbit/s de acordo com
as definicoes impostas pela padronizacao internacional ISO/IEC 18092:2013 em [Coshum
et al.2013], que especifica esquemas de modularizacao e taxas de transferencia de dados.
Esta taxa de transferencia pode ser considerada baixa, se comparada a` prevista por
Decises Tecnolgicas
10
Figura 2.2: Um modulo leitor RFID atuando sobre um elemento RFID passivo possui as
mesmas caracteristicas de funcionamento da tecnologia NFC. [Coshum et al.2013]
tecnologias como Bluetooth ou Wi-Fi. No entanto, obtem-se um ganho consideravel em
economia de energia e em velocidade de conexao entre dispositivos chegando a ser menor
que - 0,1 s - segundo [Coshum et al.2013], caracterstica que permite sua utilizacao como
bootstrap para a inicializacao de conexao atraves de protocolos sem fio mais robustos,
conforme informado na referencia [NXP2009].
2.1.1.5
Aplicaco
es
Segundo [Coshum et al.2013] por fazer parte de sua natureza promover automatizacao
de tarefas realizadas por um sistema embarcado, a tecnologia NFC pode ser aproveitada
em uma grande quantidade de casos de uso.
Conforme pode ser visto na figura 2.3 seu leque de utilizacao varia desde a ativacao
e configuracao de dispositivos moveis a servicos ligados recursos ligados `a automatizacao
residencial onde este atuaria em conjunto com um sistema micro processado para efetuar
acoes como: abertura de fechaduras e ativacao de perifericos gerais como lampadas e
eletrodomesticos.
Podendo afirmar que se os procedimentos de ativacao e desativacao de uma atividade
podem ser automatizados, esta automatizacao pode ser realizada atraves da utilizacao
Decises Tecnolgicas
11
2.1.1.6
A figura 2.4 mostra um modulo NFC passivo, conhecido como Tag ou tarja NFC em
comparacao de tamanho em relacao a uma moeda. Esta abordagem mostra que e possvel
utilizar a tecnologia NFC mesmo em casos que tenham como requisito a ocupacao de
um espaco fsico e peso reduzidos. Importante salientar que este item - Tag NFC - foi
essencial na elaboracao da solucao apresentada nesta monografia, sua importancia dentro
deste projeto sera apresentada na sessao de arquitetura de solucao no capitulo 3.
2.1.1.6.0.1
Definic
ao Tag NFC retrata um elemento NFC passivo, um modulo
capaz de reagir aos campos eletromagneticos gerados por dispositivos NFC ativos possibilitando que estes insiram novos dados para armazenagem ou extraia um conte
udo previamente armazenado conforme dito em [NXP2009] e [Coshum et al.2013].
Decises Tecnolgicas
12
Composic
ao Analisando as figuras 2.5 e 2.6, podem-se identificar os
componentes que formam uma Tag NFC. Estes componentes sao uma antena NFC e um
circuito ASIC projetado exclusivamente para possibilitar os processos de leitura e escrita
de dados.
Nota-se tambem a similaridade entre Tags NFC e Smartcards, no entando a composicao
do circuito e diferenciada permitindo ao Smart Card possuir maior quantidade de memoria
e realizar operacoes com diferentes tipos de dados. Em ambos os casos tem-se a` ausencia de
fontes de alimentacao, conforme mencionado anteriormente toda a energizacao do circuito
sera realizada por inducao magnetica.
As antenas /emphNFC presentes em elementos passivos nao sao capazes de gerar campos eletromagneticos, apenas os captam e reagem a seus estmulos. Por fim, o circuito
/emphASIC (circuito produzido com uma finalidade especfica) e responsavel por interpretar informacoes captadas pelas antenas e trata-las de forma adequada.
Figura 2.5: Raio X de uma Tag NFC composta por circuito ASIC e antena.
Decises Tecnolgicas
13
dos diversos modelos de TagAGs NFC, onde cada modelo visa alcancar uma adequacao
maxima ao tipo especfico de utilizacao-alvo. Este estudo aborda informacoes relativas
apenas aos tipos de Tag que seguem ou que sao compatveis com a padronizacao Ndef :
Tipo 1 - Tag produzida em formatacao Ndef com 96 bytes de memoria.
Tipo 2 - Tag produzida em formatacao Ndef com 48 ou 144 bytes de memoria.
Tipo 3 - Tag produzida em formatacao Ndef com 1, 4 ou 9 kilobytes de memoria,
possuindo um valor monetario mais elevado que as de tipo 1 ou 2.
Tipo 4 - Tag produzida em formatacao Ndef com 4 ou 32 kilobytes de memoria,
possuindo o maior custo monetario entre os demais tipos. Importante ressaltar que
este modelo permite a gravacao de conte
udo ativo.
MIFARE Classic - Tag compatvel com formatacao Ndef, possuindo 0.192, 0.768 ou
3.584 kilobytes de memoria.
Ao planejar sua utilizacao em um projeto, deve-se estudar com cuidado as informacoes
apresentadas nas tabelas 2.1 e 2.2, afim de reconhecer qual o tipo mais adequando para
servir adequadamente como solucao, tendo em vista os requisitos do projeto em relacao
Decises Tecnolgicas
14
ao tamanho do espaco disponvel para armazenamento de dados nas Tags, tipo de dados,
custo benefcio, modo de utilizacao e suporte.
Tabela 2.1: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao a`s
suas especificacoes tecnicas. [NXP2009]
2.1.1.7
A porcao do ecossistema NFC voltada para telefonia movel e suportada por sua implantacao em diversos dispositivos celulares produzidos pelos mais variados fabricantes.
Diferentemente de como ocorria no passado, onde a marca do fabricante em conjunto com
o hardware utilizado em cada um de seus dispositivos definiam as funcionalidades disponibilizadas no aparelho, hoje o usuario consumidor de smartphones busca por servicos e isso
torna mais importante para o sucesso de um dispositivo o ecossistema operacional no qual
Decises Tecnolgicas
15
Tabela 2.2: Comparativo de tipos Tag NFC que suportam formatacao Ndef em relacao a`s
suas aplicacoes. [NXP2009]
Decises Tecnolgicas
16
tre especificacoes de smartphones, podem ser encontrados mais de 250 modelos de celulares
de diferentes fabricantes, que utilizam a tecnologia NFC. A figura 2.7 mostra o resultado
de uma busca realizada no website, com a finalidade de coletar aparelhos que possuam NFC
e maior ranking de popularidade mundial.
Decises Tecnolgicas
2.1.1.8
17
Estimativas futuras
O autor de [Hessel et al.2011], estima que a tecnologia NFC estara presente em 80 por
cento dos smartphones produzidos para o mercado Norte Americano. No entanto ainda nao
ha uma estimativa especfica para o nicho brasileiro, mas observando sua difusao ao redor
do mundo e os incentivos relacionados ao seu desenvolvimento por parte dos fabricantes
de smartphones pode-se inferir que seu crescimento no Brasil e promissor e merecedor de
atencao.
2.1.2
Ecossistemas Operacionais
Durante a concepcao do projeto surgiu uma grande pergunta: Qual ecossistema operacional utilizar para a implementacao da solucao? Esta pergunta resultou na escolha
e utilizacao do sistema operacional Android. No entanto, nao foi uma escolha aleatoria,
pois varios fatores influenciaram tal decisao. A princpio, foram levantados os principais
sistemas operacionais utilizados em smartphones, o que resultou em:
IOS - Apple Inc
Windows Phone 7 - Nokia/Samsung
Android OS - Samsung/HTC/Google/Sony
Symbiam OS - Nokia
Meego OS - Nokia
A partir desta lista, foram selecionados os sistemas operacionais que possuam APIs que
permitissem a utilizacao de NFC em seus dispositivos. Esta etapa excluiu apenas o IOS
pertencente `a Apple Inc., pois este ate o momento nao aderiu `a utilizacao da tecnologia
NFC em seus smartphones.
A partir deste ponto, os sistemas operacionais restantes foram estudados individualmente com a finalidade de selecionar o que oferecesse maior suporte ao projeto. Apesar de
a escolha final ter preferenciado o ecossistema Android, seus concorrentes merecem mencao.
Decises Tecnolgicas
2.1.2.1
18
Windows Phone 7
Symbiam OS
Desenvolvido pela empresa Nokia e mantido pela empresa Accenture, foi bastante utilizado em smartphones Nokia. Sua ( API NFC) prove grande suporte ao desenvolvimento de
aplicativos baseados na tecnologia [Developer2013c]. No entanto seu descarte do projeto
ocorreu devido ao difcil acesso a referencias de suporte a` utilizacao de seu componente
Wi-Fi, onde, segundo a arquitetura da solucao presente no capitulo 3, devera ser utilizado
em conjunto com a tecnologia NFC.
2.1.2.3
Meego OS
Sistema operacional baseado em QT, desenvolvido em codigo aberto com kernel Linux,
pelas empresas Nokia e Intel com a finalidade de utilizacao em smartphones. Conforme
pode ser verificado em [Developer2013b] , possui APIs de controle de componentes NFC e
de conectividade Wi-Fi bem documentadas e de facil utilizacao, no entanto foi descartado
deste projeto por ter sido descontinuado em 2011, perdendo potencial de mercado para
solucoes pudessem ser implementadas.
2.1.2.4
Android OS
Decises Tecnolgicas
19
Windows Phone 8
Sistema operacional criado pela Microsoft, utilizado em smartphones Nokia, nao entrou
como possvel solucao ao projeto apenas por ter sido lancado posteriormente `a finalizacao
da etapa de desenvolvimento do mesmo, entretanto merece mencao nesta monografia por
possuir APIs de desenvolvimento NFC e Wi-Fi bem documentadas, por constituir um
sistema operacional robusto e por ter um status de popularidade emergente, tendo potencial
para alcancar uma posicao de destaque no mercado.
2.1.3
NFC F
orum
2.1.3.1
Hist
oria do NFC Forum
Conforme abertamente divulgado por NFC Forum [Forum2013], em 2004 tres grandes
empresas fabricantes de eletronicos, Sony, Nokia e Philips se uniram e criaram um forum de
discursao para tratar das melhores formas de desenvolvimento da recem criada tecnologia
NFC, com as seguintes metas:
Definir um padrao internacional de protocolos e parametros a serem seguidos em
projetos que envolvam a arquitetura de NFC.
Incentivar o desenvolvimento da tecnologia e a utilizacao de dispositivos compatveis.
Trabalhar para garantir que os dispositivos NFC sigam todas as normas e especificacoes do forum.
Criar uma cultura mundial de utilizacao da tecnologia por meio da disseminacao de
seu conhecimento.
Atualmente o NFC Forum conta com a participacao de mais de 170 empresas e colaboradores ao redor do mundo conforme [Forum2013].
Ferramentas
2.1.3.2
20
Padronizac
ao Ndef por NFC f
orum
A padronizacao internacional Ndef criada pelo NFC Forum constitui uma parte importante do ecossistema NFC, pois e uma normalizacao internacional e multi-plataforma
de formas de melhor utilizacao da tecnologia. Diversas APIs relacionadas a sistemas operacionais implementam as definicoes impostas pela formatacao Ndef, entre elas a` API
Android.nfc conforme informacoes divulgadas por [Developer2013a].
O acronimo Ndef representa NFC Data Exchange Format ou Formatacao de troca de
dados NFC, importante mencionar que esta formatacao segue todos os requisitos impostos
pelas padronizacoes ISO que envolvem a tecnologia NFC. Detalhes mais profundos desta
padronizacao serao mencionados no decorrer desta monografia.
2.2
Ferramentas
2.2.1
Android SDK
Trabalhos Relacionados
2.2.1.1
21
android.net.wifi
Esta API prove meios pelos quais as aplicacoes conseguem se comunicar com a camada de baixo nvel controladora Wi-Fi. Permite as aplicacoes executarem comandos
de inicializacao, configuracao e finalizacao de conexoes sem fio, conforme informado na
referencia [Developer2008].
2.2.1.2
android.nfc
Esta API prove acesso a`s funcionalidades NFC de um dispositivo sob plataforma Android, permite que os aplicativos manipulem mensagem com padronizacao Ndef gravadas
em Tags NFC ou dispositivos em modo Card Emullation, conforme informado na referencia [Developer2013a].
2.2.2
Eclipse IDE
Toda a codificacao deste trabalho foi desenvolvida por meio da utilizacao da IDE Eclipse
distribuicao Indigo atualizado com um plugin Android SDK. Esta ferramenta e poderosa
quando se diz respeito `a edicao de texto, permite uma codificacao rapida ao permitir navegacao entre funcoes, APIs, documentacoes e ferramentas de depuracao. Alem de ser
altamente personalizavel de modo a permitir maior flexibilidade ao desenvolvedor de software.
2.3
Trabalhos Relacionados
A inspiracao inicial deste projeto surgiu apos o conhecimentos das facilidades concedidas pela implementacao da tecnologia NFC em diversos casos de uso. Grande parte dessas
aplicacoes sao disponibilizadas em lojas virtuais pertencentes a cada ecossistema operacional, tais como: Android-Market para Android OS, Ovi-Store para Symbian OS e Meego
OS e Microsoft-Store para Windows Phone.
Seguindo pela linha de automacao, existem diversas implementacoes que utilizam a
tecnologia NFC como base para automatizar procedimentos e processos, destacando-se
servicos de compartilhamento de dados, onde o NFC e utilizado para prover uma conexao
Trabalhos Relacionados
22
rapida entre dispositivos moveis, enquanto a transferencia de dados e realizada por protocolos sem fio mais robustos como o Bluetooth ou o Wi-Fi, visto que estes possuem bandas
mais largas para transferencias de dados e atuam a` longa distancia.
Pode-se afirmar que esta forma de utilizacao e bastante u
til, sendo implementada tanto
em aplicativos-padrao do Sistema Operacional Android, utilizados para troca de imagens
e dados entre dispositivos, como em jogos que requeiram interacao de m
ultiplos usuarios.
Verifica-se em [UOL2012], a utilizacao do NFC em aplicativos desenvolvidos por empresas privadas e institutos de pesquisa, tal como mostrado na figura 2.8, o PagSeguro-NFC
desenvolvido pelo Instituto Nokia de Tecnologia - INdT com o intuito de proporcionar
solucoes em pagamentos via dispositivos moveis de forma simples, rapida e com seguranca
garantida aos usuarios.
Pode-se mencionar tambem a adesao `a tecnologia NFC por aplicativos multi-plataforma
ja consagrados no mercado, como o LinkedIn e o Foursquare. No caso do Foursquare, segundo material de disponvel em sua API oficial [Foursquare2013], foi criada uma area na
documentacao de sua API para auxiliar os desenvolvedores de software no desenvolvimento
de aplicativos clientes ao Foursquare que utilizem a tecnologia NFC para disparar eventos
de check in. Ja o aplicativo oficial Linkedin para sistema operacional Symbiam, disponibilizado em [LinkedIn2011] -Nokia Store- sofreu atualizacoes de modo a possibilitar que
os dados de perfil de usuario sejam exportados para uma Tag NFC, permitindo assim a
visualizacao automatica dos perfis armazenados em cada Tag.
Trabalhos Relacionados
23
Captulo 3
Desenvolvimento T
ecnico
Este captulo aborda todas as etapas relacionadas ao desenvolvimento tecnico do projeto,
desde suas especificacoes mais basicas de solucao ate a finalizacao de sua codificacao e
release do aplicativo prototipo NFC-WiFi.
3.1
Especificac
ao
Esta sessao aborda todos os aspectos relacionados a definicao da solucao definida. Mostrando conceitos inicias de como a ideia foi concebida e estruturada. Mostra tambem diagramas tecnicos que foram criados com base nos requisitos especificados ao analisar o
contexto do problema.
3.1.0.1
Definic
ao de soluc
ao
Analisando o problema proposto no captulo 1, pode-se visualizar um cenario correspondente `a distribuicao e influencia de redes Wi-Fi dentro de determinada localidade, e
atraves de uma analise detalhada deste cenario e do problema proposto, e possvel trabalhar na elaboracao de uma arquitetura de solucao. Conforme pode ser observado na
figura 3.1, as redes Wi-Fi possuem areas de atuacao variaveis e independentes umas das
outras, mesmo que presentes em um mesmo espaco fsico. Os principais responsaveis por
essa variacao de area de atuacao sao o hardware utilizado e as configuracoes definidas no
Especicao
25
momento de criacao e manutencao de cada hotspot Wi-Fi. Tirando como base o comportamento apresentado e a disposicao das redes Wi-Fi no mundo real, foi definido como
melhor solucao ao problema - levando em consideracao fatores como custo de producao e
satisfacao dos usuarios - a utilizacao de Tags NFC como forma de disseminacao de pontos
de acesso Wi-Fi. Cada Tag deve conter campos dos quais advenham meios de identificacao de uma rede sem fio, para que desse modo um dispositivo movel celular possa receber
o conte
udo armazenado, identificar e conectar-se a uma rede-alvo. A figura 3.1 mostra
uma visualizacao de como podem ser utilizadas in
umeras Tags NFC para prover pontos
de acesso de diversificadas redes Wi-Fi atuantes dentro de uma mesma localidade, tendo
como u
nica dependencia para que seja obtido um funcionamento adequado. Sua utilizacao
em um local abrangido pelo sinal emitido por seu hotspot Wi-Fi correspondente.
Especicao
26
Identificac
ao de Hotsposts
Redes Wi-Fi possuem um Identificador padrao chamado Service Set Identifier (SSID),
que corresponde a um conjunto de ate 32 caracteres case sensitive [Developer2008]. O SSID
e defino no momento de criacao de uma rede Wi-Fi e e altamente configuravel, podendo
ser customizado de acordo com a preferencia do gestor da rede. Comumente e constitudo
por nomes que indiquem seu proprietario. Para ser bem sucedido em uma tentativa de
conexao Wi-Fi, e essencial que se conheca o SSID. No entanto, este nao e o u
nico parametro
necessario para concretizar uma conexao. Nao e surpresa encontrar uma rede Wi-Fi que
Especicao
27
requeira uma senha de acesso valida. Para estes casos devem-se considerar os campos
PWD acronimo para Password referente `a senha e o protocolo de criptografia utilizado se
aplicavel, estes sao nomeados por WEP, WPA, WPA2, WPA-PSK e WPA2-PSK. Seguindo
esse raciocnio, infere-se que devem ser armazenados pelo menos tres informacoes relativas
a` rede Wi-Fi em uma Tag NFC para conseguir automatizar o processo de conexao: o SSID,
a Password e a criptografia. Esta inferencia estaria absolutamente correta se nao houvesse
uma forma alternativa de se conhecer o protocolo de criptografia de rede utilizado. Ao
consultar um SSID e retornado o tipo de criptografia empregado, logo foi possvel definir
para este projeto o uso de apenas dois campos em uma Tag NFC conforme mostra a figura
3.3.
Exemplos de SSIDs:
AndreMoreiraNetwork
UniversidadeAuditorio
AaxWRZtxY478T20 (Improvavel entre usuarios comuns)
Especicao
3.1.0.3
28
Estruturac
ao de dados em Tags NFC - Ndef
A utilizacao de Tags NFC como solucao neste projeto ocorreu seguindo o formato
de troca de mensagens NDEF ou NFC Data Exchange Format criado pelo NFC Forum,
implementado e disponibilizado pela API android.nfc para desenvolvimento em sistema
operacional Android. Conforme pode ser visto na figura 3.5, uma Ndef Message e composta
por varios records ou registros, que por sua vez sao compostos por dois campos: Header Cabecalho da mensagem e Payload - Corpo ou carga, area reservada ao dado [Forum2006].
Enquanto a figura 3.4 mostra como ocorre o processo de identificacao de uma Tag NFC
no sistema operacional Android. A formatacao Ndef disponibiliza RDTs ou Record Type
Definitions, que representam definicoes de tipos de registros que compoem mensagens Ndef.
Atraves dessas definicoes chegamos os TNFs ou Type Name Formats que sao de fato os
tipos de registros formados a partir das definicoes [Forum2006] [NXP2009] .
Dentre os tipos de registros disponibilizados vale mencionar: [NXP2009]
MIME (Multipurpose Internet Mail Extensions
Imagens png, gif, ...
Texto simples, html, javascript, ...
Video mpeg, quicktime, ..
Absolute URIs (Uniform Resource Identifier)
URLs
Contatos de agenda telefonica
Mensagens SMS
NFC Well Known Type
Texto
Parametros de Handover (PIN, Endereco Bluetooth)
3.1.0.4
Aco
es definidas
Para criar uma arquitetura robusta para o projeto foram definidas acoes, as quais o
aplicativo deveria cumprir para atingir o nivel de qualidade esperado.
Especicao
29
Figura 3.4: Fluxo gerados eventos de leitura de Tags NFC em sistema operacional Android
. [Developer2007]
Especicao
30
Arquitetura de soluc
ao
Apos ter sido concretizada uma analise conceitual do problema, levantado os requisitos funcionais prioritarios e elaborado um modelo de solucao viavel e de baixo custo, foi
constituda uma ideia para inicial para o fluxo de funcionamento da solucao, essa ideia e
representada pela figura 3.6 mostrando que no momento da ocorrencia de um evento Tap
com uma Tag NFC, o smartphone devera colher desta os parametros de identificacao de
uma rede sem fio gerada por um hotspot Wi-Fi e iniciar os processos de configuracao e
inicializacao de conexao.
A obtencao de um conceito de solucao geral permitiu idealizar um possvel fluxo para
o projeto de aplicativo, conforme pode ser visto na figura 3.9. O diagrama de navegacao
mostra a sequencia de passos decorrentes da utilizacao do aplicativo a partir de sua tela
inicial, assim como as possveis acoes de tomada de decisao por parte do usuario. Ao
analisar mais a fundo este diagrama, nota-se que as acoes de escrita em Tag NFC e Leitura/conexao em hotspot Wi-Fi ocorrem/atuam de forma isolada e independentes entre
si, permitindo que sejam separadas e encaradas como dois aplicativos distintos especficos
para cada funcao.
Essa condicao tambem pode ser visualizada nas figuras 3.7 e 3.8. No entanto, a
abordagem de criacao de dois aplicativos nao foi aplicada neste projeto. Mantendo como
decisao arquitetural criar um u
nico aplicativo que cumprisse com ambas a`s atividades,
conforme apresentado no diagrama de classes exposto pela figura 3.10.
Funcionalidades principais do sistema.
Escrita de parametros de configuracao em Tag NFC.
Obtencao dos parametros escritos em Tag NFC.
Especicao
31
Especicao
32
Especicao
33
Especicao
34
Projeto
3.2
35
Projeto
Para um melhor gerenciamento deste projeto, de forma a mante-lo sempre dentro dos
prazos de entrega de funcionalidades, de acordo com os padroes de qualidade exigidos,
foram adotados pontos de controle como:
Metodologia agil Scrum para projetos de desenvolvimento de software.
Elaboracao de um cronograma de desenvolvimento.
Elaboracao de lista de etapas de desenvolvimento.
Elaboracao de lista de itens fora de escopo.
3.2.1
Metodologia de desenvolvimento
Projeto
36
Implementao
3.3
37
Implementac
ao
Implementao
3.3.1
38
AndroidManifest.xml
3.3.2
Etapa NFC
O pacote NFC, conforme ilustrado na figura 3.11, e formado por quatro source files
compostos de duas interfaces e duas classes que as implementam.
Interface 1: ForegroundDispatcher.java
Implementacao: NfcForegroundDispatcher.java
Interface 2: NFC.java
Implementacao: NfcDefaultProcessor.java
Implementao
1
2
3
4
5
6
7
8
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.prototypenfc_wifi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.NFC" />
9
10
11
12
13
14
15
16
17
18
<application android:label="@string/app_name">
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<activity android:name=".NfcWriterActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
33
34
35
36
37
38
39
40
41
39
</application>
</manifest>
Implementao
40
Implementao
1
2
3
4
5
6
7
8
9
10
11
package nfcController;
import
import
import
import
import
import
android.app.Activity;
android.app.PendingIntent;
android.content.Intent;
android.content.IntentFilter;
android.nfc.NfcAdapter;
android.util.Log;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
41
Classe NfcDefaultProcessor
Implementao
1
2
3
4
5
6
package com.example.prototypenfc_wifi;
import java.io.IOException;
public class NfcWriterActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nfc_tag_writer);
foregroundDispatcher = new NfcForegroundDispatcher(this);
}
7
8
9
10
11
12
13
14
@Override
public void onNewIntent(Intent intent) {
15
16
17
18
19
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
foregroundDispatcher.enable();
}
20
21
22
23
24
25
26
27
@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
foregroundDispatcher.disable();
}
28
29
30
31
32
42
String Password ) mostrado no codigo 3.3.4 permite a gravacao de Tags NFC contendo um
record SSID e um Record Password. Caso os campos contendo as informacoes requisitadas
estejam vazios ou nulos, uma excecao e lancada, resultando em falha de gravacao (Linhas
03, 06, 09,12). Na linha 15, pode-se observar a criacao de uma lista onde serao inseridos
NdefRecords. Conforme definido na arquitetura do projeto, nesta lista constarao apenas
dois records tipo texto correspondentes as configuaracoes da rede Wi-Fi alvo. Cada um
e criado com auxlio do metodo privado private NdefRecord createNdefRecord(String text).
Conforme consta no codigo 3.3.5, este metodo recebe um texto por parametro e retorna
um NdefRecord gerado. Depois que a lista de NdefRecords estiver concluda, todos os
Implementao
43
records passam a compor uma NdefMessage (linha 16, codigo 3.3.4). O processo continua
com a selecao da Tag detectada(linha 17), seguida pela abertura de uma conexao(linha
18, gravacao de dados(linha 19) e fechamento da Tag (linha 20). Ao final deste metodo
passamos a possuir uma Tag NFC contendo os parametros desejados.
public void writeNdefTag(Tag tag, String ssid, String password)
throws UnsupportedEncodingException, IOException, FormatException {
if (ssid == null){
throw new IllegalArgumentException();
}
if (ssid.isEmpty()){
throw new IllegalArgumentException();
}
if (password == null){
throw new IllegalArgumentException();
}
if (password.isEmpty()){
throw new IllegalArgumentException();
}
NdefRecord[] records = { createNdefRecord(ssid),
createNdefRecord(password) };
NdefMessage message = new NdefMessage(records);
Ndef ndef = Ndef.get(tag);
ndef.connect();
ndef.writeNdefMessage(message);
ndef.close();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
3.3.2.2.0.5
para ler uma Tag NFC que contenha payloads referentes ao SSID e Password de uma rede
Wi-Fi e realizar a extracao dessas informacoes. Este metodo recebe por parametro uma
intent referente a acao de Tap NFC, e atraves dessa intente podera ser feita a interpretacao
do conte
udo da Tag NFC. Observando a linha 04 verificamos que se a acao presente na
intent for a mesma realizada por acao de descoberta de Tag NFC, significa que temos a
correta. Logo, seu conte
udo devera resgatado e listado - linha 07 -, em seguida convertido
Implementao
44
para formatacao Ndef Message linha 09, e cada mensagem convertida devera ter seus records
analisados em busca de payloads que sejam iniciados por tags SSID: e PWD: (linhas 11,
13 e 18). Apos encontrados, deverao ter suas tags identificadoras removidas e o conte
udo
restante atribudo a variaveis privadas da classe networkSSID e networkPWD - linhas 15 e
20 -. Ao finalizar este processo tem-se os identificadores de rede Wi-Fi salvos em variaveis,
podendo ser acessadas atraves dos metodos getSSID() e getPWD().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
3.3.3
Etapa Wi-Fi
O pacote Wi-Fi e composto por tres arquivos JAVA conforme demonstrado na figura
3.12, sendo distribudos da seguinte forma:
Interface 1: WIFI.java
Implementacao: WiFiController.java
Implementao
45
Implementao
46
poucos pontos de destaque. No entanto vale `a pena citar que nas linhas 12, 15 e 18
e necessario que ao incio e ao final de cada string, sejam inseridas aspas duplas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package wifiController;
import
import
import
import
import
import
import
import
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
java.util.List;
android.app.Activity;
android.content.Context;
android.net.wifi.ScanResult;
android.net.wifi.WifiConfiguration;
android.net.wifi.WifiManager;
android.util.Log;
android.widget.Toast;
Implementao
1
2
3
4
5
6
package wifiController;
import android.net.wifi.WifiConfiguration;
public class WiFiConfigurator{
private WifiConfiguration wifiConfiguration;
7
8
public WiFiConfigurator(){
wifiConfiguration = new WifiConfiguration();
}
public void configureSSID(String ssid){
wifiConfiguration.SSID = ("\"" + ssid + "\"");
}
public void configureWpaPassword(String password){
wifiConfiguration.preSharedKey = ("\"" + password + "\"");
}
public void setWepPassword(String password){
wifiConfiguration.wepKeys[0] = ("\"" + password + "\"");
wifiConfiguration.wepTxKeyIndex = 0;
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.
KeyMgmt.NONE);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.
GroupCipher.WEP40);
}
public void setOpenNetworkPassword(){
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.
KeyMgmt.NONE);
}
public WifiConfiguration getWifiConfiguration(){
return wifiConfiguration;
}
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
47
NfcWriterActivity
Conforme pode ser visualizado na figura 3.13, esta Activity possui em seu layout dois
campos de entrada de dados: SSID e PWD (password ). Cada um desses campos
Implementao
48
representa um record que devera compor uma Ndef Message, apos seu preenchimento
pode-se realizar um evento Tap em Tag NFC para gravar a Ndef Message criada.
codigo 3.4.2 - Os procedimentos para se efetuar a gravacao de uma Tag NFC : Na
linha 22 e 23 verifica-se que ao ser criada uma nova intent (evento Tap NFC ), ocorre
a estruturacao de um objeto que representa a Tag lida pelo adaptador NFC. Nas linha
24-27 sao recuperados o SSID e o Password definidos pelo usuario, e concatenado,
ao incio de cada texto, uma string responsavel por distinguir os campos e evitando
problemas quando for realizado o processo de leitura. Por fim na linha 29 o processo
de gravacao e efetivado.
3.3.4.2
MainActivity
A principal prevista para esta Activity sao referentes a conexao Wi-Fi atraves de
leitura de Tag NFC. Ao ser detectado um evento de Tap NFC, e iniciado o processo de
extracao de conte
udo, analise de parametros de rede e conexao com a rede Wi-Fi alvo.
O codigo 3.4.1 mostra todo o trajeto percorrido desde a leitura da Tag NFC ate a
efetivacao da conexao. Ao receber uma nova intent e necessario que seja garantido que
Concluses
49
os parametros de configuracao nao sejam poludos por dados previamente salvos, logo
as variaveis globais que guardam esses valores devem ser limpas recebendo conte
udo
nulo (linhas 03 e 04), para que assim o adaptador possa efetuar a leitura da Tag
(linha 05) e extrair um novo conte
udo -linhas 07 e 08-. Se os campos tiverem sido
recebidos com sucesso -linha 12-, e realizada uma verificacao se a placa Wi-Fi do
dispositivo esta ativada, caso contrario e feita a ativacao -linhas 14 e 15-, lembrando
que se deve disponibilizar tempo para que o hardware inicialize antes de prosseguir
-linha 19-. Seguindo adiante, e feita uma busca pelas redes Wi-Fi capturadas pelo
adaptador -linha 25- e verificado se alguma delas refere-se ao SSID recebido pela Tag
-linha 28-. Em caso de sucesso e requisitado tipo de criptografia atuante na rede
-linha 30- e uma nova configuracao de rede e criada utilizando os parametros SSID e
Password recebidos por NFC em conjunto com o tipo de criptografia recebido pela
rede Wi-Fi (linhas 31 e 35). Finalmente e realizada uma busca entre as conexoes
configuradas, em busca da configuracao recem criada - linha 48 - e, ao encontra-la
(linha 49), iniciasse um processo de desconexao Wi-Fi, ativacao da rede configurada
e conexao (linhas 51 a 53).
3.4
Conclus
oes
Concluses
1
2
3
4
5
6
7
8
9
10
11
12
13
50
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
if (collectedEncryptionType.contains(encryptionTagWpa)){
wifiConfigurator.configureWpaPassword(collectedPWD);
Log.d(TAG, wpa);
}else if(collectedEncryptionType.
contains(encryptionTagWep)){
wifiConfigurator.setWepPassword(collectedPWD);
Log.d(TAG, wep);
}else{
wifiConfigurator.setOpenNetworkPassword();
Log.d(TAG, openNetwork);
}
wifi.addWifiNetwork(wifiConfigurator);
Log.d(TAG, addNetwork);
for( WifiConfiguration configuredNetworkList : wifi.
getConfiguredNetworks()) {
if(configuredNetworkList.SSID.equals("\"" +
collectedSSID + "\"")) {
Log.d(TAG, attemptingConnection);
wifi.disconnect();
wifi.enableNetwork(configuredNetworkList.
networkId);
wifi.connect();
}
}
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
}
}
if (!networkFound ) {
Toast.makeText(this, networkNotFound, Toast.LENGTH_LONG).show();
}
}catch (Exception e) {
Log.d(TAG, e.getMessage());
Toast.makeText(this, e + noWifi, Toast.LENGTH_LONG).show();
}
60
61
62
63
64
65
66
67
68
}
}
Concluses
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example.prototypenfc_wifi;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
java.io.IOException;
java.io.UnsupportedEncodingException;
nfcController.ForegroundDispatcher;
nfcController.NFC;
nfcController.NfcDefaultProcessor;
nfcController.NfcForegroundDispatcher;
android.app.Activity;
android.content.Intent;
android.nfc.FormatException;
android.nfc.NfcAdapter;
android.nfc.Tag;
android.os.Bundle;
android.util.Log;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.Toast;
23
24
25
26
27
28
29
30
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nfc_tag_writer);
foregroundDispatcher = new NfcForegroundDispatcher(this);
nfc = new NfcDefaultProcessor();
}
31
32
33
34
35
36
37
38
@Override
public void onNewIntent(Intent intent) {
Tag newTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
EditText editSsid = (EditText) this.findViewById(R.id.nfc_writer_ssid);
SSID = "ssid:" + editSsid.getText().toString();
EditText editPwd = (EditText) this.findViewById(R.id.nfc_writer_pwd);
PASSWORD = "pwd:" + editPwd.getText().toString();
try {
nfc.writeNdefTag(newTag, SSID, PASSWORD);
Toast.makeText(this, "Tag written", Toast.LENGTH_LONG).show();
} catch (UnsupportedEncodingException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
} catch (FormatException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
foregroundDispatcher.enable();
}
@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
foregroundDispatcher.disable();
}
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
51
Captulo 4
Testes e Avalia
c
ao
Este captulo aborda como foram realizados testes funcionais e mostra seu comportamento em resposta a cada cenario de teste. Esta etapa deve ser considerada extremamente importante pois evidencia bugs ou excecoes nao planejadas, assim como
possibilita a formacao de uma documentacao completa.
4.1
Material Utilizado
4.2
Casos de teste
O aplicativo foi colocado a prova passando pela bateria de testes descrita nesta sessao,
tendo resultados satisfatorios na maioria dos casos. Importante relatar que apenas o
smartphone Samsung Galaxy SIII foi utilizado com portador do aplicativo, os demais
listados na sessao anterior foram utilizados como provedores de ponto de acesso Wi-Fi
em adicao ao roteador Motorola tambem listado.
Casos de teste
4.2.1
53
Grava
c
ao de Tag NFC
Este teste consiste em gravar dados referentes ao SSID e Password do hotspot alvo
em uma Tag NFC. Foram testados quantidades distintas de caracteres em ambos os
campos afim de encontrar limitacoes que pudessem inviabilizar o aplicativo. Para
este teste foram utilizados os dois modelos de Tag NFC - Tag Type 1 e Tag MIFARE
importante ressaltar que a quantidade de caracteres indicada em cada
Classic 4k. E
teste refere-se a quantidade inserida pelo usuario, nao estando inclusos os 9 caracteres
de controle concatenados a cada campo de forma transparente ao usuario: pwd: e e
ssid:
20 caracteres
Foram inseridos 10 caracteres em cada record e todas as Tags alcancaram resultados
positivos efetuando a gravacao com sucesso sem mostrar perda de dados. A figura
4.1 mostra a gravacao de 20 caracteres alfanumericos em uma Tag NFC MIFARE
Classic
50 caracteres
Foram inseridos 25 caracteres em cada record e todas as Tags alcancaram resultados
positivos, no entanto houveram casos em que se pode notar uma leve diminuicao na
velocidade de escrita da Tag Type 1, mesmo assim as tentativas foram bem sucedidas
e sem perdade dados. A figura 4.2 mostra a gravacao de 50 caracteres alfanumericos
em uma Tag NFC MIFARE Classic
300 caracteres
Foram inseridos 150 caracteres em cada record e apenas a Tag MIFARE Classic conseguiu consegiu realizar a tarefa com sucesso e sem perda de dados. A Tag Type
1 tornou-se inacessvel em todos os casos, mesmo assim a aplicacao nao se mostrou
instavel. Este acontecimento deve-se ao fato da Tag Type 1 nao possuir memoria
suficiente para armazenar esta quantidade de caracteres, por este motivo a Tag MIFARE foi escolhida para efetuar os testes de fluxo completo do aplicativo. A figura
Casos de teste
54
Figura 4.1: Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC
4.3 mostra a gravacao de 300 caracteres alfanumericos em uma Tag NFC MIFARE
Classic de 4kb
4.2.2
Fluxo completo
Casos de teste
55
Figura 4.2: Teste bem sucedido ao gravar cinquenta caracteres em uma Tag NFC
Influ
encia de um u
nico hotspot
Este caso de teste foi ambientado com influencia de apenas um hotspot e utilizado
um u
nico modelo de Tag NFC, o MIFARE Classic.
Curta distancia em relacao ao ponto de acesso (3m)
Conexao realizada com sucesso.
Media distancia em relacao ao ponto de acesso (10-15m)
Conexao realizada com sucesso.
longa distancia em relacao ao ponto de acesso (aprox. 40m - sinal fraco)
Conexao realizada com sucesso.
Casos de teste
56
Figura 4.3: Teste bem sucedido ao gravar trezentos caracteres em uma Tag NFC
Influ
encia de m
ultiplos hotspots
Este caso de teste foi ambientado com influencia de tres pontos de acesso Wi-Fi
apenas um hotspot e utilizado um u
nico modelo de Tag NFC, o MIFARE Classic.
Curta distancia entre hotspots (1m)
Conexao nao realizada, houve interferencia e nenhuma conexao foi efetivada.
Media distancia entre hotspots (5-15m)
Conexao realizada com sucesso.
longa distancia entre hotspots (aprox. 40m - sinal fraco)
Conexao realizada com sucesso.
Casos de teste
57
Figura 4.4: Gravacao dos parametros handover Wi-Fi de uma rede valida em uma Tag
NFC
Figura 4.5: Desativacao manual do adaptador de rede seguido por ativacao automatica via
Tap em Tag NFC
Casos de teste
58
Figura 4.6: Conclusao bem sucedidade da conexao automatica entre dispositivo e hotspot
satisfatorio.
M
ultiplos Taps em Tags NFC distintas
Este teste consistiu em efetuar m
ultiplos Taps NFC em Tags com parametros referentes a 3 redes sem fio distintas, notou-se que a cada Tap o processo retornava ao
estado inical, logo ao efetuar o u
ltimo Tap a conexao se realizava com sucesso. A
figura 4.7 representa o estresse que o aplicativo sofreu ao serem realizados diversos
eventos de Tap NFC, onde a Tag NFC da direita representa a rede correta e esquerda
represena uma Tag NFC com SSID invalido
Avaliao de Resultados
59
Figura 4.7: Eventos Tap NFC em Tags NFC distintas, com parametros distintos
4.3
Avaliac
ao de Resultados
Com bases nos teste realizados pode-se concluir que o Aplicativo funcionou de forma
esperada, sem a presenca de excecoes que por ventura o tornassem inacessvel. Tanto
o fuxo de gravacao de Tag NFC, como o fluxo de leitura e conexao ocorrem conforme
o planejado mostrando que o sistema efetuou todos os passos de conexao de forma
ordenada e correta. Portando vale afirmar que a prototipagem manteve-se dentro das
especificacoes mantendo os padroes de qualidade definidos anteriormente no projeto.
Captulo 5
Conclus
ao
5.1
Considerac
oes Finais
Trabalhos Futuros
61
a Tag NFC. Por tanto, para este sistema pode-se afirmar que a` cada evento Tap, o
sistema retornara para seu estado inicial e um novo processo de conexao sera iniciado.
Conforme pode ser verificado na etapa de testes (Capitulo 4), o sistema mostrou
que possui flexibilidade suficiente para nao sofrer perdas performance ou sucumbir a
falhas crticas mesmo que estressado com incessantes modificacoes de comportamento
representados por eventos Tap em distintas Tags NFC.
Sabe-se entao, que as escolhas tecnologicas definidas para este projeto em conjunto
com a arquitetura de solucao adotada possibilitaram a obtencao de um produto que
alcanca resultados satisfatorios, permitindo que a conexao seja efetuada rapidamente,
sem esforco e sem se deixar atrelar a gargalos fsicos, que por ventura possam dificultar
o acesso a identificacao do hotspot desejado.
O prototipo NFC-WiFi cumpre os requisitos definidos na sessao de arquitetura desta
monografia, permitindo que os usuarios gravem suas proprias Tags NFC identificando
redes sem fio privadas ou que efetuem leitura de Tags gravadas por terceiros com o
objetivo de realizar conexao automatica com as redes nelas definidas. Esta solucao
possibilita o acesso rapido e descomplicado a redes Wi-Fi, tendo sua utilizacao ideal
em localidades p
ublicas com shoppings, parques, aeroportos ou em estabelecimentos comerciais como restaurantes e lojas, alem de poder ser integrado a aplicacoes
mais robustas que utilizem-no como facilitador de disponibilizacao de outros servicos,
podendo tambem ser utilizado com finalidades didaticas.
Espera-se que este projeto cause grande impacto a`s pessoas que visem trabalhar com
tecnologias novas e/ou alternativas para automatizacao de tarefas, como a tecnologia
NFC. Independentemente de casos de uso ou de metodologias de desenvolvimento
de software, deve-se ter em mente que uma engenharia adequada da solucao e fator
responsavel pelo sucesso da criacao de um produto.
5.2
Trabalhos Futuros
Trabalhos Futuros
62
Utilizar procedimentos de conexao com hotspots via Tag NFC como base para:
Criar testes de performance de conexao.
Realiazar leitura de parametros de configuracao via NFC p2p.
Testar a utilizacao de Tags de tipos incompatveis com Ndef .
Implementacao de NFC Card Emulation.
Tratamento de funcionalidades aplicativo via conexao com back-end do sistema.
Controle de sistemas microprocessados.
Autenticacao de usuario com sistemas localizados na Web ou em redes privadas.
Acionamento e desativacao de dispositivos a` distancia.
Efetivacao de recrusos via leitura de coordenadas GPS.
Refer
encias Bibliogr
aficas
[Agar2004] Agar, J. (2004). Constant Touch: A Global History of the Mobile Phone.
Totem Books.
[Arena2013] Arena, G. (2013). Gsm arena. www.gsmarena.com. website internacional especializado em comparativos de telefonia celular, acesso em 01-12-2013.
[Brasil2013] Brasil, N. (2013). Nfc brasil. http://nfcbrasil.wordpress.com/. website
informativo, acesso em 01-12-2013.
[Coshum et al.2013] Coshum, V., Ok, K., and Ozdenizci, B. (2013). Professional
NFC Application Development for Android. John Wiley and Sons.
[Developer2008] Developer,
A.
(2008).
Wifi
android
api
guide.
developer.android.com/reference/android/net/wifi/package-summary.html.
Offi-
A.
(2011).
http://developer.android.com/tools/index.html.
Developer
tools.
data
exchange
N.
(2007).
format
(ndef)
Understanding
messages.
develo-
REFERNCIAS BIBLIOGRFICAS
64
[Developer2013b] Developer,
N. (2013b).
develo-
deve-
(2011).
store.ovi.com/content/121603?clickSource=search&pos=1.
for
symbiam.
Acesso em 01-12-
2013.
[Michaelis2008] Michaelis (2008). Dicionario Escolar Ingles, Ingles-portugues - Nova
Ortografia. Melhoramentos.
[NXP2009] NXP (2009).
www.nfc-
REFERNCIAS BIBLIOGRFICAS
[Terra2013] Terra,
smartphones
P.
65
(2013).
windows
Idc:
avanca.
Android
domina
mercado
de
tecnologia.terra.com.br/negocios-
e-ti/idc-android-domina-mercado-de-smartphones-e-windowsavanca,2d28edf6cad42410VgnCLD2000000ec6eb0aRCRD.html.
NotAcia
rela-