Top Banner

of 80

Tcc Andre Lira

Jul 06, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/17/2019 Tcc Andre Lira

    1/80

    0

    UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA

    ESCOLA SUPERIOR DE TECNOLOGIA

    ENGENHARIA DE COMPUTA¸ C ÃO

    ANDR É LIRA MOREIRA

    SISTEMA M ÓVEL BASEADO EM ANDROID-NFC

    PARA CONEX ÃO AUT ÔNOMA EM HOTSPOTS

    Manaus

    2013

  • 8/17/2019 Tcc Andre Lira

    2/80

    ANDR É LIRA MOREIRA

    SISTEMA M ÓVEL BASEADO EM ANDROID-NFC PARA CONEX ÃO

    AUT ÔNOMA EM HOTSPOTS

    Trabalho de Conclus˜ao de Curso apresentado

    à banca avaliadora do Curso de Engenharia

    de Computa ção, da Escola Superior de

    Tecnologia, da Universidade do Estado do

    Amazonas, como pré-requisito para obten¸ cão

    do t́ıtulo de Engenheiro de Computa¸ cão.

    Orientador: Prof. Dr. Carlos Maurı́cio Ser´ odio Figueiredo

    Manaus

    2013

  • 8/17/2019 Tcc Andre Lira

    3/80

    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 Computa¸ c˜ ao:Dr. Raimundo Corrêa de Oliveira

    Coordenador da Disciplina Projeto Final:Me. Tiago Eugênio de Melo

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

    Prof. Dr. Carlos Mauŕıcio Ser´ odio Figueiredo (Orientador)

    Prof. Dr. Raimundo Corrêa de Oliveira Prof. Dr. Jucimar Maia da Silva J´ unior

    CIP - Cataloga¸ cão na Publica¸ cão

    M835s MOREIRA, André

    Sistema Móvel baseado em Android-NFC para conex˜ao aut ônoma em Hots-

    pots / Moreira André; [orientado por] Prof. Dr. Carlos Mauŕıcio Ser´ odio Fi-

    gueiredo - Manaus: UEA, 2013.

    240 p.: il.; 30cm

    Inclui Bibliograa

    Trabalho de Conclus˜ao de Curso (Gradua¸cão em Engenharia de Computa-

    ção. Universidade do Estado do Amazonas, 2013.

    CDU: 004.45

  • 8/17/2019 Tcc Andre Lira

    4/80

    iii

    ANDR É LIRA MOREIRA

    SISTEMA M ÓVEL BASEADO EM ANDROID-NFC PARA

    AUTENTICA¸ C ÃO EM HOTSPOTS

    Trabalho de Conclus ão de Curso apre-

    sentado à banca avaliadora do Curso de

    Engenharia de Computa¸cão, da EscolaSuperior de Tecnologia, da Universidade do

    Estado do Amazonas, como pré-requisito

    para obten çãoo do t́ıtulo de Engenheiro de

    Computa¸cão.

    Aprovado em: 27/11/2013BANCA EXAMINADORA

    Prof. Carlos Mauŕıcio Ser´ odio Figueiredo, Doutor

    UNIVERSIDADE DO ESTADO DO AMAZONAS

    Prof. Jucimar Maia da Silva J´ unior, DoutorUNIVERSIDADE DO ESTADO DO AMAZONAS

    Prof. Raimundo Corrêa de Oliveira, Doutor

    UNIVERSIDADE DO ESTADO DO AMAZONAS

  • 8/17/2019 Tcc Andre Lira

    5/80

    iv

  • 8/17/2019 Tcc Andre Lira

    6/80

    v

    AgradecimentosAo nal desta importante etapa, torna-se di-

    f́ıcil fazer agradecimentos sem poder citar to-

    das as pessoas que me inuenciaram ao longo

    do desenvolvimento deste projeto, por isso

    dedico a concretiza ção deste sonho a todos.

    E com um carinho especial, agrade ço a Deus,agrade ço à minha faḿılia por amor e seu

    crença em minhas conquistas. A meu irm ão

    André Portela, por sua genialidade contagi-

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

    res, por sua cumplicidade, amizade e amor.

    A meu orientador Mauŕıcio e aos demais ami-

    gos professores, por sua dedicação ao ensinar,

    por sua pacîencia e ajuda em momentos de

    crise. Por m ao INdT, ambiente onde ad-

    quiri grandes amizades e conhecimentos.

  • 8/17/2019 Tcc Andre Lira

    7/80

    vi

    Resumo

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

    vimento de um sistema m óvel baseado em Android-NFC, capaz de realizar conex˜oes sem

    o entre smartphones Android e hotspots Wi-Fi , ao receber seus parâmetros de congura-

    ção através de eventos Tap em Tags NFC . Esperando que estas informa¸cões esclareçam à

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

    possibilidades em automa ção providas pela utiliza ção correta da tecnologia NFC . Todas asquest ões referentes a sua modelagem conceitual, arquitetura de sistema e implementa¸ cão

    serão abordadas e explicadas.

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

    Hotspot, smartphone

  • 8/17/2019 Tcc Andre Lira

    8/80

    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 conguration 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 mattersregarding 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

  • 8/17/2019 Tcc Andre Lira

    9/80

    viii

    Sumário

    Lista de Tabelas xi

    Lista de Figuras xii

    Lista de C´ odigos xiii

    1 Introdu¸ cão 11.1 Contextualiza¸cão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Descri̧cão do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.3.1 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3.2 Objetivos Espećıcos . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.4 Justicativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2 Referencial te´ orico e trabalhos relacionados 62.1 Decisões Tecnológicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.1.1 Tecnologia Near Field Communication - NFC . . . . . . . . . . . . 72.1.1.1 Denição . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.1.2 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . 72.1.1.3 Formas de utiliza ção . . . . . . . . . . . . . . . . . . . . . 82.1.1.4 Especicações essenciais . . . . . . . . . . . . . . . . . . . 82.1.1.5 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.1.6 Elementos NFC Passivos - Tags . . . . . . . . . . . . . . . 11

    2.1.1.6.0.1 Denição . . . . . . . . . . . . . . . . . . . 112.1.1.6.0.2 Composi̧cão . . . . . . . . . . . . . . . . . 122.1.1.6.0.3 Tipos . . . . . . . . . . . . . . . . . . . . . 13

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

  • 8/17/2019 Tcc Andre Lira

    10/80

    ix

    2.1.1.8 Estimativas futuras . . . . . . . . . . . . . . . . . . . . . . 172.1.2 Ecossistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . 17

    2.1.2.1 Windows Phone 7 . . . . . . . . . . . . . . . . . . . . . . 182.1.2.2 Symbiam OS . . . . . . . . . . . . . . . . . . . . . . . . . 182.1.2.3 Meego OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.1.2.4 Android OS . . . . . . . . . . . . . . . . . . . . . . . . . . 182.1.2.5 Windows Phone 8 . . . . . . . . . . . . . . . . . . . . . . 19

    2.1.3 NFC Fórum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.1.3.1 História do NFC Forum . . . . . . . . . . . . . . . . . . . 192.1.3.2 Padroniza ção Ndef por NFC fórum . . . . . . . . . . . . . 20

    2.2 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.1 Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    2.2.1.1 android.net.wi . . . . . . . . . . . . . . . . . . . . . . . . 212.2.1.2 android.nfc . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    2.2.2 Eclipse IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3 Desenvolvimento Técnico 243.1 Especicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.1.0.1 Denição de solução . . . . . . . . . . . . . . . . . . . . . 24

    3.1.0.2 Identica ção de Hotsposts . . . . . . . . . . . . . . . . . . 263.1.0.3 Estrutura¸cão de dados em Tags NFC - Ndef . . . . . . . 283.1.0.4 Ações denidas . . . . . . . . . . . . . . . . . . . . . . . . 283.1.0.5 Arquitetura de solu ção . . . . . . . . . . . . . . . . . . . . 30

    3.2 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.1 Metodologia de desenvolvimento . . . . . . . . . . . . . . . . . . . . 35

    3.3 Implementa ção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.1 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.2 Etapa NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    3.3.2.1 NFC Foreground Dispacher . . . . . . . . . . . . . . . . . 393.3.2.2 Classe NfcDefaultProcessor . . . . . . . . . . . . . . . . . 41

    3.3.2.2.0.4 Escrita de Tag NFC . . . . . . . . . . . . 423.3.2.2.0.5 Leitura de Tag NFC . . . . . . . . . . . . 43

    3.3.3 Etapa Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.4 Etapa de integra ção NFC-WiFi - Criação de uxo completo. . . . . 47

    3.3.4.1 NfcWriterActivity . . . . . . . . . . . . . . . . . . . . . . 473.3.4.2 MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . 48

  • 8/17/2019 Tcc Andre Lira

    11/80

    x

    3.4 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    4 Testes e Avalia¸ cão 524.1 Material Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.2 Casos de teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    4.2.1 Grava ção de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 534.2.2 Fluxo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.3 Avaliação de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5 Conclus˜ ao 605.1 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Referências Bibliográcas 63

  • 8/17/2019 Tcc Andre Lira

    12/80

    xi

    Lista de Tabelas

    2.1 Comparativo de tipos Tag NFC que suportam formata¸cão Ndef em relação

    às suas especicações técnicas. [NXP2009] . . . . . . . . . . . . . . . . . . 142.2 Comparativo de tipos Tag NFC que suportam formata¸cão Ndef em relação

    às suas aplica ções. [NXP2009] . . . . . . . . . . . . . . . . . . . . . . . . . 15

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

  • 8/17/2019 Tcc Andre Lira

    13/80

    xii

    Lista de Figuras

    2.1 Módulo leitor NFC gerando campo eletromagnético incidente sobre um ele-

    mento NFC passivo. [S.A. and M.2010] . . . . . . . . . . . . . . . . . . . . 92.2 Um módulo leitor RFID atuando sobre um elemento RFID passivo possui

    as mesmas caracteristicas de funcionamento da tecnologia NFC . [Coshumet al.2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3 Posśıveis Aplica ções da tecnologia NFC segundo [Forum2013]. . . . . . . . 112.4 Tag NFC tipo 1 em relação a seu tamanho. . . . . . . . . . . . . . . . . . 122.5 Raio X de uma Tag NFC composta por circuito ASIC e antena. . . . . . . 122.6 Raio X de um Smartcard NFC por [Coshum et al.2013] . . . . . . . . . . . 132.7 Top 35 de smartphones que disponibilizam tecnologia NFC . [Arena2013] . 162.8 PagueSeguro-NFC desenvolvido pelo Instituto Nokia de Tecnologia -

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

    3.1 Disposi̧cão de redes sem o em uma localidade . . . . . . . . . . . . . . . . 253.2 Proposta de solu ção Utilizando Tags NFC . . . . . . . . . . . . . . . . . . 263.3 Campos identicadores Wi-Fi armazenados em TAG NFC . . . . . . . . . 273.4 Fluxo gerados eventos de leitura de Tags NFC em sistema operacional An-

    droid . [Developer2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Estrutura de mensagem Ndef. [Developer2007] . . . . . . . . . . . . . . . . 29

    3.6 Ideia inicial de funcionamento do aplicativo. . . . . . . . . . . . . . . . . . 313.7 Diagrama de sequência do m ódulo write NFC . . . . . . . . . . . . . . . . 323.8 Diagrama de sequência do m ódulo responsável pela conexão WiFi e . . . . 323.9 Diagrama de navega ção do aplicativo . . . . . . . . . . . . . . . . . . . . . 333.10 Diagrama de classes do projeto. . . . . . . . . . . . . . . . . . . . . . . . . 343.11 Packet NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.12 Packet wiController . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.13 Tela de gravação de Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . 48

  • 8/17/2019 Tcc Andre Lira

    14/80

    xiii

    4.1 Teste bem sucedido ao gravar vinte caracteres em uma Tag NFC . . . . . . 544.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 . . . 564.4 Grava ção dos parâmetros handover Wi-Fi de uma rede válida em uma Tag

    NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.5 Desativa ção manual do adaptador de rede seguido por ativa¸ cão autom ática

    via Tap em Tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.6 Conclusão bem sucedidade da conex ão autom ática entre dispositivo e hotspot 584.7 Eventos Tap NFC em Tags NFC distintas, com parˆametros distintos . . . 59

  • 8/17/2019 Tcc Andre Lira

    15/80

    xiv

    Lista de C´ odigos

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

    3.3.2 Implementa ç˜ ao da interface Foreground Dispatcher . . . . . . . . . . . . . 413.3.3 Instancia¸c˜ ao, habilita ç˜ ao e desativa ç˜ ao do modo Foreground Dispacher . . 42

    3.3.4 Implementa ç˜ ao de escrita em formato Ndef em Tag NFC . . . . . . . . . . 43

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

    3.3.6 Leitura de Tag NFC e extraç˜ ao de records SSID Password. . . . . . . . . 44

    3.3.7 Implementa ç˜ ao WiFiController . . . . . . . . . . . . . . . . . . . . . . . . 46

    3.3.8 Implementa ç˜ ao WiFiCongurator . . . . . . . . . . . . . . . . . . . . . . . 47

    3.4.1 Implementa ç˜ ao e processo de conex˜ ao Wi-Fi via Tag NFC . . . . . . . . . 50

    3.4.2 Implementa ç˜ ao de aç˜ ao realizada no layout de grava ç˜ ao de Tags NFC . . . 51

  • 8/17/2019 Tcc Andre Lira

    16/80

    Caṕıtulo 1

    Introdu¸ cão

    1.1 Contextualiza¸ cão

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

    cation -NFC encontra-se plenamente desenvolvido e difuso dentre os paı́ses que comp˜oem

    os continentes Europeu, Asi´atico, Oceania e Norte Americano. No entanto, esta n˜ ao é

    a realidade do cen ário atual brasileiro, cujos benef́ıcios s˜ao pouco conhecidos, tanto pelos

    usuários de smartphones como pela comunidade de desenvolvedores de software embarcado,

    resultando em um ecossistema imaturo ainda em fase de desenvolvimento.

    A razão 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

    referência [Arena2013]. Além disso, estes eram classicados como smartphones high-end ,

    cujo público-alvo destina-se a um mercado especı́co com consumidores de grande poderaquisitivo, segundo [Sharma2011] e [Guy2009], este fato dicultou a populariza¸cão da tec-

    nologia entre as massas de baixa renda.

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

    tendência se tornou uma hegemonia, chegando a ocorrer muitos casos onde os usu´ arios

    substituiram seus personal computers - PCs por smartphones. A quantidade de dispositivos

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

  • 8/17/2019 Tcc Andre Lira

    17/80

    vez mais exigentes, gerando grande concorr̂encia entre empresas montadoras de telefonia

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

    Isso levou ao desenvolvimento de dispositivos celulares com especica ções de hardware

    adequadas às necessidades de cada tipo de usu ário consumidor e aos requisitos exigidos

    pelos ecossistemas de software utilizados. Estes ecossistemas s ão constitúı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 está voltado para aplica¸cões embarcadas independentes do ecossistema de telefonia

    móvel, agregando valor à tecnologia.

    1.2 Descri¸ cão do Problema

    Durante a última década, houveram saltos evolutivos signicativos em todas as ´ areas

    tecnol ógicas. Abordando como escopo a área de tecnologia de telecomunica ções, pode-se

    ressaltar o surgimento e aplica¸cão de diversos componentes de hardware , como processa-

    dores dual-core e quad-core , módulos de memória RAM , módulos de conectividade sem

    o, displays touchscreen , entre outros que possibilitaram a compila¸ cão de dispositivos detelefonia móvel 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 pasśıveis de conex˜ ao

    com a internet , criando innitas possibilidades de servi¸cos ao usuário, podendo-se citar

    como principais o acesso a redes sociais, serviços de geo-localização , streaming de v́ıdeos,

    chamadas de voz por IP , jogos e entretenimento.

    Tão logo o usuário experimentou tais novidades, surgio a necessidade de se permane-

    cer online permanentemente, com a maior largura de banda para transfer̂encia de dadosposśıvel. Com a nalidade de sanar tal necessidade, muitos administradores de localidades

    - Centros médicos, aeroportos, Shopping centers , ambientes domésticos e corporativos -

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

    ou não, por meio de hotspots , que são nada mais que pontos de acesso Wi -Fi .

    Para que a conex ão seja conclúıda com sucesso, deve-se executar uma série de passos

    de conguração entre o dispositivo m óvel e a rede desejada. Buscando prover comodidade

  • 8/17/2019 Tcc Andre Lira

    18/80

    e praticidade ao usu ário e uma melhor distribui¸cão do serviço oferecido, eis que surge a ne-

    cessidade de automatizar o processo de conex ão entre o smartphone e o hotspot , atenuando

    a intera ção do usuário tanto com seu dispositivo quanto com os agentes respons´ aveis por

    fornecer as congurações do hotspot alvo. Confome pode ser visto [Forum2013] e [Coshum

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

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

    provedor de automa¸cão, por abranger quantidade signicativas de possibilidades em solu-

    ções.

    1.3 Objetivos

    1.3.1 Objetivos Gerais

    Esta monograa tem como objetivo apresentar ` a comunidade acadêmica da Universi-

    dade do Estado do Amazonas uma solu¸cão ao problema descrito na se ção anterior, uti-

    lizando a tecnologia NFC como base para automatizar processos de conex˜ao entre um

    dispositivo móvel e redes Wi -Fi , mostrando a padroniza¸cão criada por NFC Forum - (Ndef

    - que permite a utiliza ção da tecnologia NFC de forma simples e portável para diversos

    sistemas operacionais.

    1.3.2 Objetivos Espećıcos

    • Apresentar uma solu¸cão que atenda aos requisitos de automatiza¸ cão utilzando Tags

    NFC .

    • Utilizar a padronizaç˜ao internacional - Ndef - da tecnologia NFC .

    • Utilizar APIs dispońıveis para S.O. Android versão 4.0 ou superior.

    • Identicar as etapas efetuadas pelo usu´ario ao iniciar um processo de conexão Wi -Fi

    e posśıvel pontos para automatiza¸ cão.

    • Desenvolver um protótipo de aplicativo para S.O. Android 4.1 .

  • 8/17/2019 Tcc Andre Lira

    19/80

    1.4 Justicativa

    A tecnologia NFC , vem acompanhando nativamente diversos modelos de Smartphones

    produzidos na atualidade. Empresas renomadas no ramo de telecomunica¸ cão móvel, como

    Samsung , Nokia , Motorola e Sony , têm investido nesta tecnologia, disponibilizando APIs

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

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

    gradativamente ganhando notoriedade. Reduzindo a abrangência desta arma¸ cão para umescopo ainda mais focalizado referenciando apenas o desenvolvimento da tecnologia NFC

    no Estado do Amazonas, pode ser observado o surgimento de uma tendência por parte dos

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

    volver projetos, visando proporcionar ao usu´ario de smartphones experiências mostrando

    as diversas facilidades previstas pela tecnologia.

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

    ção entre os usu ários nais de smarthphones no estado do Amazonas, tornado importantedesenvolver uma cultura que vise diminuir esse décit de utiliza¸ cão.

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

    por quaisquer desenvolvedores de software , livre dos custos gerados pela compra de licen ças

    de utiliza ção e desenvolvimento ou pagamentos de royalties aos propriet ários de patentes.

    É uma tecnologia com grandes possibilidades de crescimento, baixo custo de implanta¸ cão

    e de fácil desenvolvimento técnico, além de atuar como fonte de incentivo à inova¸ cão.

    A escolha de utilização de Near Field Communication - NFC em Sistema Operacio-

    nal Android deve-se principalmente ao fato de ser o ambiente de telefonia m óvel de maiorpopularidade 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 ausência 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 codicação, permitindo um f ácil esclarecimento de dúvidas e aplica-

  • 8/17/2019 Tcc Andre Lira

    20/80

    ções de Design Patterns ;

    Essa tecnologia em conjunto com o sistema operacional Android permitem a utiliza ção

    de linguagem de programa ção Java para o desenvolvimento de aplicativos e n ão mostra

    fatores negativos realmente fortes que motivem desenvolvedores de software a não aplicá-los

    quando possivel.

    1.5 Estrutura do Documento

    Esta monograa est´a organizada da seguinte forma: O capı́tulo 2 apresenta conceitual-

    mente as tecnologias utilizadas no decorrer do desenvolvimento do projeto, assim como asAPIs e ferramentas utilizadas e trabalhos relacionados; no caṕıtulo 3 é abordada a totali-

    dade do desenvolvimento técnico do projeto, incluindo especica¸ cões técnicas, arquitetura

    e implementa ção; o caṕıtulo 4 apresenta um descri¸cão dos casos de testes realizados e re-

    sultados obtidos. Por m s˜ao apresentadas no caṕıtulo 5 as considera¸ cões nais, onde são

    inclúıdos a apresenta¸ cão de resultados e posśıveis trabalhos futuros.

  • 8/17/2019 Tcc Andre Lira

    21/80

    Caṕıtulo 2

    Referencial te´ orico e trabalhos

    relacionados

    Este caṕıtulo aborda em detalhes as referências te´ oricas tecnológicas e ferramentas uti-

    lizadas durante a fase de desenvolvimento do projeto (caṕıtulo 3). Ser˜ ao apresentados

    conceitos, especicações e será respondido o porquê de sua utiliza¸cão no projeto tendo em

    vista a vasta quantidade de op¸ cões em tecnologias disponı́veis atualmente.

    2.1 Decis˜ oes Tecnol´ ogicas

    A maior decisão tecnológica neste projeto foi a escolha da tecnologia NFC como solução

    base desde o momento de sua concepção, concretizando seu objetivo de apresentar suas po-

    tencialidades e utiliza¸cão prática por meio de sua aplica ção na elabora ção uma arquitetura

    de solução viável e satisfat ória.Dever á também ser mencionada a escolha da padroniza¸ cão

    internacional Ndef para a utiliza ção da tecnologia NFC , e do ecossistema Android como

    ambiente operacional para a solu¸cão.

  • 8/17/2019 Tcc Andre Lira

    22/80

    2.1.1 Tecnologia Near Field Communication - NFC

    Conforme será observado no caṕıtulo 3, a tecnologia NFC não será utilizada em suatotalidade neste projeto. Sua utiliza¸ cão foi desenvolvida a partir do conceito de conex ão

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

    conhecida, é interessante que seja abordada além dos requisitos utilizados por car´ ater de

    conhecimento.

    2.1.1.1 Deni¸ cão

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

    Near Field Communication ou Comunicação de Campo Pr óximo refere-se a uma tecnologia

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

    - RFID , que possibilita trocar de informa¸cões entre dispositivos compat́ıveis sem o aux́ılio

    de ação, de forma segura e rápida, contanto que os dispositivos sejam aproximados e

    mantidos dentro de um limite mı́nimo para que a comunica¸ cão ocorra com sucesso.

    Assim que os dispositivos estejam sucientemente pr´oximos, a comunicação entre eles

    é estabelecida automaticamente, sem necessidade de congura¸ cões adicionais, pareamento

    ou autentica ção de usuário.

    2.1.1.2 Funcionamento

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

    nologia NFC é fundamentada pelo princı́pio f́ısico de indu¸ cão magnética, onde a incidência

    de um campo magnético sobre um circuito elétrico (espira) torna posśıvel produzir uma

    corrente elétrica induzida.Sendo que a ativa¸ cão de um módulo NFC ocorre quando ondas

    eletromagnéticas, geradas por um segundo modulo, s˜ ao captadas por suas antenas criandocanais de comunica ção, podendo ser de uma via, contando com um m´odulo transmissor e

    um módulo receptor, ou de duas vias ( peer-to-peer ) contando com dois módulos transmis-

    sores/receptores.

  • 8/17/2019 Tcc Andre Lira

    23/80

    2.1.1.3 Formas de utiliza¸ cão

    Um sistema NFC pode possuir dois tipos de elementos que podem ser ativos ou passivos.Um dispositivo passivo é constitúıdo por um m´ odulo incapaz de gerar sinais de conex ão,

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

    eletromagnéticos. Vale lembrar que uma conex˜ ao NFC só pode ser efetuada entre dois

    módulos por vez. Dito isto, podem-se obter três formas de utiliza¸ cão conforme citadas

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

    1. Modo Read/Write - Leitura ou altera ção de dados em um dispositivo NFC passivo.

    2. Modo Card Emulation - Dispositivo móvel pode simular um smart card , no entanto

    requer este possua um chip program´avel dedicado a criptograa.

    3. Modo Peer-to-Peer - Comunicação entre dois dispositivos NFC ativos.

    As guras 2.1 e 2.2 mostram a criação de um canal com uma via de comunica ção

    onde o leitor NFC em conjunto com sua antena representam um m´ odulo NFC embarcado

    que pode estar presente em diversos dispositivos moveis. Este m´odulo gera um campo

    magnético que incide sobre um m´odulo NFC passivo não alimentado retratado como Tag NFC .

    O princı́pio de indu¸cão magnética faz com que este campo induza a cria¸cão de uma

    corrente elétrica 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 gura 2.1, pode-se armar que se a Tag NFC fosse substituı́da

    por um módulo ativo, composto por outro conjunto de leitor e antena NFC ,mo sistema seria

    formado por dois módulos que captariam e interpretariam as ondas magnéticas geradas

    por cada ponta estabelecendo uma conex˜ao Peer-to-Peer (P2P) , onde ambos os módulos

    enviam e recebem mensagens.

    2.1.1.4 Especica¸ cões essenciais

    Em compara ção às demais tecnologias sem o, a tecnologia Near Field Communication

    - NFC possui um campo de conexão com alcance extremamente curto. O campo magnético

  • 8/17/2019 Tcc Andre Lira

    24/80

    Figura 2.1: Módulo leitor NFC gerando campo eletromagnético incidente sobre um ele-mento NFC passivo. [S.A. and M.2010]

    gerado pelas antenas NFC presente em dispositivos m óveis possui, em teoria, até 10 cm

    de alcance. No entanto, em meios pr áticos, este é reduzido para uma valor que oscila em

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

    Devido à limita ção de comprimento de campo magnético, para que uma conex˜ ao NFC

    seja bem sucedida é necess ário que os dispositivos transmissores/receptores sejam aproxi-

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

    segundo o dicionário [Michaelis2008], signica bater/encostar.

    A tecnologia opera em uma faixa de frequência de 13.56 MHz denida pela padroniza¸cão

    internacional ISO/IEC 18000-3 publicada no ano de 2004, mantendo taxas de transferência

    de dados vari áveis dentro de uma faixa correspondente a 106 à 424 kbit/s de acordo com

    as denições impostas pela padroniza¸cão internacional ISO/IEC 18092:2013 em [Coshum

    et al.2013], que especica esquemas de modularização e taxas de transferência de dados.

    Esta taxa de transfer̂encia pode ser considerada baixa, se comparada ` a prevista por

  • 8/17/2019 Tcc Andre Lira

    25/80

    Figura 2.2: Um módulo 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, obtém-se um ganho consider´ avel em

    economia de energia e em velocidade de conexão entre dispositivos chegando a ser menor

    que - 0,1 s - segundo [Coshum et al.2013], caracteŕıstica que permite sua utiliza¸cão comobootstrap para a inicializa ção de conexão através de protocolos sem o mais robustos,

    conforme informado na referência [NXP2009].

    2.1.1.5 Aplica¸ cões

    Segundo [Coshum et al.2013] por fazer parte de sua natureza promover automatiza¸ cão

    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 gura 2.3 seu leque de utilização varia desde a ativa ção

    e conguração de dispositivos móveis a serviços ligados recursos ligados à automatiza¸cão

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

    ações como: abertura de fechaduras e ativa¸cão de periféricos gerais como lâmpadas e

    eletrodomésticos.

    Podendo armar que se os procedimentos de ativa¸cão e desativa ção de uma atividade

    podem ser automatizados, esta automatiza¸ cão pode ser realizada atrav́es da utiliza¸ cão

  • 8/17/2019 Tcc Andre Lira

    26/80

    correta da tecnologia NFC .

    Figura 2.3 : Possı́veis Aplica ções da tecnologia NFC segundo [Forum2013].

    2.1.1.6 Elementos NFC Passivos - Tags

    A gura 2.4 mostra um m ódulo NFC passivo, conhecido como Tag ou tarja NFC em

    compara ção de tamanho em rela ção a uma moeda. Esta abordagem mostra que é posśıvel

    utilizar a tecnologia NFC mesmo em casos que tenham como requisito a ocupa ção de

    um espa ço f́ısico e peso reduzidos. Importante salientar que este item - Tag NFC - foi

    essencial na elabora ção da solução apresentada nesta monograa, sua importˆ ancia dentro

    deste projeto ser á apresentada na sess˜ao de arquitetura de solu¸cão no capitulo 3.

    2.1.1.6.0.1 Deni¸ cão Tag NFC retrata um elemento NFC passivo, um módulo

    capaz de reagir aos campos eletromagnéticos gerados por dispositivos NFC ativos possibi-

    litando que estes insiram novos dados para armazenagem ou extraia um conte´ udo previa-

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

  • 8/17/2019 Tcc Andre Lira

    27/80

    Figura 2.4 : Tag NFC tipo 1 em relação a seu tamanho.

    2.1.1.6.0.2 Composi¸ cão Analisando as guras 2.5 e 2.6, podem-se identicar os

    componentes que formam uma Tag NFC . Estes componentes s ão uma antena NFC e um

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

    de dados.

    Nota-se também a similaridade entre Tags NFC e Smartcards , no entando a composi ção

    do circuito é diferenciada permitindo ao Smart Card possuir maior quantidade de mem´oria

    e realizar opera ções com diferentes tipos de dados. Em ambos os casos tem-se à ausência de

    fontes de alimenta ção, conforme mencionado anteriormente toda a energiza¸ cão do circuito

    será realizada por indu ção magnética.As antenas /emphNFC presentes em elementos passivos n˜ ao são capazes de gerar cam-

    pos eletromagnéticos, apenas os captam e reagem a seus est́ımulos. Por m, o circuito

    /emphASIC (circuito produzido com uma nalidade espećıca) é respons´ avel por interpre-

    tar informa ções captadas pelas antenas e trat´ a-las de forma adequada.

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

  • 8/17/2019 Tcc Andre Lira

    28/80

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

    2.1.1.6.0.3 Tipos Com a nalidade de não subutilizar recursos, foram desenvolvi-

    dos diversos modelos de TagAGs NFC , onde cada modelo visa alcan çar uma adequa ção

    máxima ao tipo espećıco de utiliza ção-alvo. Este estudo aborda informa¸cões relativas

    apenas aos tipos de Tag que seguem ou que são compat́ıveis com a padroniza¸cão Ndef :

    • Tipo 1 - Tag produzida em formata ção Ndef com 96 bytes de memória.

    • Tipo 2 - Tag produzida em formata ção Ndef com 48 ou 144 bytes de memória.

    • Tipo 3 - Tag produzida em formata ção Ndef com 1, 4 ou 9 kilobytes de memória,

    possuindo um valor monet ário mais elevado que as de tipo 1 ou 2.

    • Tipo 4 - Tag produzida em formata¸cão Ndef com 4 ou 32 kilobytes de memória,

    possuindo o maior custo monet ário entre os demais tipos. Importante ressaltar que

    este modelo permite a grava ção de conteúdo ativo.

    • MIFARE Classic - Tag compat́ıvel com formata¸cão Ndef, possuindo 0.192, 0.768 ou

    3.584 kilobytes de memória.

    Ao planejar sua utiliza¸cão em um pro jeto, deve-se estudar com cuidado as informaç˜oes

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

    servir adequadamente como solu¸cão, tendo em vista os requisitos do projeto em rela¸cão

  • 8/17/2019 Tcc Andre Lira

    29/80

    ao tamanho do espa ço dispońıvel para armazenamento de dados nas Tags , tipo de dados,

    custo benef́ıcio, modo de utiliza ção e suporte.

    Tabela 2.1: Comparativo de tipos Tag NFC que suportam formata¸cão Ndef em relação àssuas especicações técnicas. [NXP2009]

    2.1.1.7 Dispositivos Celulares SuportadosA porção do ecossistema NFC voltada para telefonia m´ovel é suportada por sua im-

    planta ção 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 deniam as funcionalidades disponi-

    bilizadas no aparelho, hoje o usu ário consumidor de smartphones busca por serviços e isso

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

  • 8/17/2019 Tcc Andre Lira

    30/80

    Tabela 2.2: Comparativo de tipos Tag NFC que suportam formata¸cão Ndef em relação àssuas aplica ções. [NXP2009]

    ele opera e não sua marca.

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

    quais sistemas operacionais ela est á presente e operante do que citar especicamente em

    quais modelos de dispositivos ela se encontra.

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

  • 8/17/2019 Tcc Andre Lira

    31/80

    tre especicações de smartphones , podem ser encontrados mais de 250 modelos de celulares

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

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

    e maior ranking de popularidade mundial.

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

  • 8/17/2019 Tcc Andre Lira

    32/80

    2.1.1.8 Estimativas futuras

    O autor de [Hessel et al.2011], estima que a tecnologia NFC estar á presente em 80 porcento dos smartphones produzidos para o mercado Norte Americano. No entanto ainda n˜ ao

    há uma estimativa espećıca para o nicho brasileiro, mas observando sua difus˜ ao 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 é promissor e merecedor de

    aten ção.

    2.1.2 Ecossistemas Operacionais

    Durante a concep ção do projeto surgiu uma grande pergunta: Qual ecossistema ope-

    racional utilizar para a implementa¸ cão da solução? Esta pergunta resultou na escolha

    e utilização do sistema operacional Android . No entanto, n ão foi uma escolha aleat ória,

    pois vários fatores inuenciaram tal decis˜ao. A prinćı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 possúıam APIs que

    permitissem a utiliza¸cão de NFC em seus dispositivos. Esta etapa excluiu apenas o IOS

    pertencente à Apple Inc., pois este até o momento n ão aderiu à utiliza ção da tecnologia

    NFC em seus smartphones .

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

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

    a escolha nal ter preferenciado o ecossistema Android , seus concorrentes merecem men ção.

  • 8/17/2019 Tcc Andre Lira

    33/80

    2.1.2.1 Windows Phone 7

    Um sistema operacional promissor utilizado em smartphones Nokia (Linha Lumia) eSamsung. No entanto, ainda encontrava-se em fase de amadurecimento, sendo o desenvol-

    vimento de suas APIs e utilização 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) provê grande suporte ao desenvolvimento de

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

    ocorreu devido ao dif́ıcil acesso a referências de suporte à utiliza ção de seu componente

    Wi-Fi , onde, segundo a arquitetura da solu¸ cão presente no capitulo 3, dever á ser utilizado

    em conjunto com a tecnologia NFC .

    2.1.2.3 Meego OS

    Sistema operacional baseado em QT , desenvolvido em código aberto com kernel Linux ,pelas empresas Nokia e Intel com a nalidade de utiliza¸cão em smartphones . Conforme

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

    de conectividade Wi-Fi bem documentadas e de f ácil utiliza ção, no entanto foi descartado

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

    soluções pudessem ser implementadas.

    2.1.2.4 Android OS

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

    por Open Handset Alliance , liderada pelo Google . É utilizado em larga escala por v ários

    fabricantes de celulares como: HTC, Samsung, Sony, Motorola, LG e Positivo Inform´ atica .

    Sua popularidade e APIs bem documentadas serviram como incentivo `a sua utilizaç ão

    neste projeto. Porém, é importante mencionar que conforme pode ser visto em [Coshum

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

  • 8/17/2019 Tcc Andre Lira

    34/80

    sua versão 2.6.

    2.1.2.5 Windows Phone 8

    Sistema operacional criado pela Microsoft , utilizado em smartphones Nokia, não entrou

    como posśıvel solu ção ao projeto apenas por ter sido lan¸cado posteriormente à nalização

    da etapa de desenvolvimento do mesmo, entretanto merece men¸ cão nesta monograa 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 alcan çar uma posi ção de destaque no mercado.

    2.1.3 NFC F´ orum

    2.1.3.1 Hist́ oria do NFC Forum

    Conforme abertamente divulgado por NFC F´ orum [Forum2013], em 2004 três grandes

    empresas fabricantes de eletrˆonicos, Sony, Nokia e Philips se uniram e criaram um f órum de

    discurs ão para tratar das melhores formas de desenvolvimento da recém criada tecnologia

    NFC , com as seguintes metas:

    • Denir um padr ão internacional de protocolos e parˆametros a serem seguidos em

    projetos que envolvam a arquitetura de NFC.

    • Incentivar o desenvolvimento da tecnologia e a utiliza¸cão de dispositivos compat́ıveis.

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

    ções do fórum.

    • Criar uma cultura mundial de utiliza¸ cão da tecnologia por meio da dissemina ção de

    seu conhecimento.

    Atualmente o NFC F´ orum conta com a participa ção de mais de 170 empresas e cola-

    boradores ao redor do mundo conforme [Forum2013].

  • 8/17/2019 Tcc Andre Lira

    35/80

    2.1.3.2 Padroniza¸ cão Ndef por NFC f´ orum

    A padroniza ção internacional Ndef criada pelo NFC Forum constitui uma parte im-portante do ecossistema NFC , pois é uma normaliza ção internacional e multi-plataforma

    de formas de melhor utiliza ção da tecnologia. Diversas APIs relacionadas a sistemas ope-

    racionais implementam as deni ções impostas pela formata¸cão Ndef , entre elas à API

    Android.nfc conforme informações divulgadas por [Developer2013a].

    O acrônimo Ndef representa NFC Data Exchange Format ou Formata ção de troca de

    dados NFC , importante mencionar que esta formata¸ cão segue todos os requisitos impostos

    pelas padroniza ções ISO que envolvem a tecnologia NFC . Detalhes mais profundos desta

    padroniza ção serão mencionados no decorrer desta monograa.

    2.2 Ferramentas

    Durante o processo de codicação do projeto foram utilizadas ferramentas de suporte

    ao desenvolvimento de software . Essas ferramentas auxiliam o desenvolvedor em quest˜oes

    referentes a utiliza ção de APIs , indenta ção de código e simulação de testes. Em geral,

    cada desenvolvedor de software utiliza um conjunto personalizado de ferramentas. Nesteprojeto, com exceção do pacote de ferramentas Android SDK e APIs de desenvolvimento,

    todas as outras podem ser substitúıdas de modo a prover maior conforto aos seus usu´ arios.

    2.2.1 Android SDK

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

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

    taforma Android. Esta coletˆanea inclui um depurador, bibliotecas, um simulador, exemplos

    de documenta ção, de códigos e tutoriais [Developer2011]. Apesar da tecnologia NFC estar

    presente desde a vers ão 2.6 do sistema operacional Android , para este projeto foi utilizada

    a versão 4.1 - representada pela API 16 - onde podem ser encontrados recursos tais como:

    android.net.wi e android.nfc .

  • 8/17/2019 Tcc Andre Lira

    36/80

    2.2.1.1 android.net.wi

    Esta API provê meios pelos quais as aplica ções conseguem se comunicar com a ca-mada de baixo ńıvel controladora Wi-Fi . Permite as aplica ções executarem comandos

    de inicialização, congura ção e nalização de conexões sem o, conforme informado na

    referência [Developer2008].

    2.2.1.2 android.nfc

    Esta API provê acesso às funcionalidades NFC de um dispositivo sob plataforma An-

    droid , permite que os aplicativos manipulem mensagem com padroniza¸ cão Ndef gravadas

    em Tags NFC ou dispositivos em modo Card Emullation , conforme informado na referên-

    cia [Developer2013a].

    2.2.2 Eclipse IDE

    Toda a codica ção deste trabalho foi desenvolvida por meio da utiliza¸cão da IDE Eclipse

    distribui ção Indigo atualizado com um plugin Android SDK . Esta ferramenta é poderosa

    quando se diz respeito à edição de texto, permite uma codica¸cão rápida ao permitir na-vegação entre fun ções, APIs, documenta¸cões e ferramentas de depura ção. Além de ser

    altamente personaliz´avel de modo a permitir maior exibilidade ao desenvolvedor de soft-

    ware .

    2.3 Trabalhos Relacionados

    A inspira ção inicial deste projeto surgiu ap´os o conhecimentos das facilidades concedi-

    das pela implementa ção da tecnologia NFC em diversos casos de uso. Grande parte dessas

    aplica ções são 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 automa¸cão, existem diversas implementa¸cões que utilizam a

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

    serviços de compartilhamento de dados, onde o NFC é utilizado para prover uma conex˜ao

  • 8/17/2019 Tcc Andre Lira

    37/80

    rápida entre dispositivos m´oveis, enquanto a transferência de dados é realizada por proto-

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

    mais largas para transferências de dados e atuam ` a longa dist ância.

    Pode-se armar que esta forma de utiliza¸cão é bastante ´util, sendo implementada tanto

    em aplicativos-padr˜ao do Sistema Operacional Android , utilizados para troca de imagens

    e dados entre dispositivos, como em jogos que requeiram intera¸cão de múltiplos usu ários.

    Verica-se em [UOL2012], a utilização do NFC em aplicativos desenvolvidos por empre-

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

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

    soluções em pagamentos via dispositivos moveis de forma simples, r ápida e com seguran çagarantida aos usu´arios.

    Pode-se mencionar também a ades˜ ao à tecnologia NFC por aplicativos multi-plataforma

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

    gundo material de dispońıvel em sua API ocial [Foursquare2013], foi criada uma ´ area na

    documenta ção 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 . J á o aplicativo ocial Linkedin para sistema operacional Symbiam , disponi-

    bilizado em [LinkedIn2011] -Nokia Store - sofreu atualiza ções de modo a possibilitar que

    os dados de perl de usuário sejam exportados para uma Tag NFC , permitindo assim a

    visualização autom ática dos pers armazenados em cada Tag .

  • 8/17/2019 Tcc Andre Lira

    38/80

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

  • 8/17/2019 Tcc Andre Lira

    39/80

    Caṕıtulo 3

    Desenvolvimento Técnico

    Este caṕıtulo aborda todas as etapas relacionadas ao desenvolvimento técnico do projeto,

    desde suas especicações mais básicas de solução até a naliza¸cão de sua codicação e

    release do aplicativo prot ótipo NFC-WiFi.

    3.1 Especica¸ cãoEsta sess ão aborda todos os aspectos relacionados a deni¸cão da solução denida. Mos-

    trando conceitos inicias de como a ideia foi concebida e estruturada. Mostra também di-

    agramas técnicos que foram criados com base nos requisitos especicados ao analisar o

    contexto do problema.

    3.1.0.1 Deni¸ cão de solu¸ cão

    Analisando o problema proposto no caṕıtulo 1, pode-se visualizar um cen´ ario corres-pondente à distribui ção e inuência de redes Wi-Fi dentro de determinada localidade, e

    através de uma an´alise detalhada deste cen´ario e do problema proposto, é posśıvel tra-

    balhar na elabora¸cão de uma arquitetura de solu¸cão. Conforme pode ser observado na

    gura 3.1, as redes Wi-Fi possuem áreas de atua ção variáveis e independentes umas das

    outras, mesmo que presentes em um mesmo espa¸co f́ısico. Os principais respons áveis por

    essa varia ção de área de atua ção são o hardware utilizado e as congura ções denidas no

  • 8/17/2019 Tcc Andre Lira

    40/80

    momento de cria ção e manuten ção de cada hotspot Wi-Fi . Tirando como base o com-

    portamento apresentado e a disposi¸ cão das redes Wi-Fi no mundo real, foi denido como

    melhor solução ao problema - levando em considera ção fatores como custo de produ ção e

    satisfa ção dos usuários - a utiliza ção de Tags NFC como forma de disseminação de pontos

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

    ção de uma rede sem o, para que desse modo um dispositivo m óvel celular possa receber

    o conteúdo armazenado, identicar e conectar-se a uma rede-alvo. A gura 3.1 mostra

    uma visualiza ção de como podem ser utilizadas in úmeras Tags NFC para prover pontos

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

    como única dependência para que seja obtido um funcionamento adequado. Sua utiliza¸ cãoem um local abrangido pelo sinal emitido por seu hotspot Wi-Fi correspondente.

    Figura 3.1 : Disposição de redes sem o em uma localidade

  • 8/17/2019 Tcc Andre Lira

    41/80

  • 8/17/2019 Tcc Andre Lira

    42/80

    requeira uma senha de acesso v álida. Para estes casos devem-se considerar os campos

    PWD acrônimo para Password referente à senha e o protocolo de criptograa utilizado se

    aplicável, estes são nomeados por WEP, WPA, WPA2, WPA-PSK e WPA2-PSK . Seguindo

    esse raciocı́nio, infere-se que devem ser armazenados pelo menos três informa¸cões relativas

    à rede Wi-Fi em uma Tag NFC para conseguir automatizar o processo de conex ão: o SSID ,

    a Password e a criptograa. Esta inferência estaria absolutamente correta se n˜ ao houvesse

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

    consultar um SSID é retornado o tipo de criptograa empregado, logo foi posśıvel denir

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

    3.3.

    • Exemplos de SSIDs:

    – AndreMoreiraNetwork

    – UniversidadeAuditorio

    – AaxWRZtxY478T20 (Improv´avel entre usu ários comuns)

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

    A ação de obter a criptograa por meio de consulta diretamente na rede Wi-Fi pode vir

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

    de utilizar TAGs NFC que care¸cam de espaço de armazenamento onde a grava¸cão de um

    campo a mais poderia ser a diferen ça entre sucesso e falha.

  • 8/17/2019 Tcc Andre Lira

    43/80

    3.1.0.3 Estrutura¸ cão de dados em Tags NFC - Ndef

    A utiliza ção de Tags NFC como solução neste projeto ocorreu seguindo o formatode 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 gura 3.5, uma Ndef Message é composta

    por vários records ou registros, que por sua vez são compostos por dois campos: Header -

    Cabeçalho da mensagem e Payload - Corpo ou carga, área reservada ao dado [Forum2006].

    Enquanto a gura 3.4 mostra como ocorre o processo de identica ção de uma Tag NFC

    no sistema operacional Android. A formata¸cão Ndef disponibiliza RDTs ou Record Type

    Denitions , que representam deni ções de tipos de registros que compõem mensagens Ndef .

    Através dessas deni¸cões chegamos os TNFs ou Type Name Formats que são de fato os

    tipos de registros formados a partir das deni¸cões [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 Identier)

    ∗ URLs

    ∗ Contatos de agenda telef ônica

    ∗ Mensagens SMS

    – NFC Well Known Type

    ∗ Texto

    ∗ Par âmetros de Handover (PIN , Endere ço Bluetooth )

    3.1.0.4 A¸cões denidas

    Para criar uma arquitetura robusta para o projeto foram denidas a¸ cões, as quais o

    aplicativo deveria cumprir para atingir o nivél de qualidade esperado.

  • 8/17/2019 Tcc Andre Lira

    44/80

    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 formata¸cão NDEF .

    • Controlar hardware .

    • Congurar uma conex ão Wi-Fi .

  • 8/17/2019 Tcc Andre Lira

    45/80

    • Criar uma conex ão Wi-Fi .

    • Conter tela de informa ções.

    • Prover a menor intera¸cão posśıvel com o usuário.

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

    3.1.0.5 Arquitetura de solu¸ cão

    Após ter sido concretizada uma an álise conceitual do problema, levantado os requisi-

    tos funcionais priorit ários e elaborado um modelo de solução viável e de baixo custo, foi

    constitúıda uma ideia para inicial para o uxo de funcionamento da solu¸ cão, essa ideia é

    representada pela gura 3.6 mostrando que no momento da ocorrência de um evento Tap

    com uma Tag NFC , o smartphone deverá colher desta os par âmetros de identica ção de

    uma rede sem o gerada por um hotspot Wi-Fi e iniciar os processos de conguração e

    inicialização de conexão.

    A obten ção de um conceito de solução geral permitiu idealizar um posśıvel uxo para

    o projeto de aplicativo, conforme pode ser visto na gura 3.9. O diagrama de navega¸cão

    mostra a sequência de passos decorrentes da utiliza¸ cão do aplicativo a partir de sua telainicial, assim como as posśıveis a ções de tomada de decisão por parte do usu ário. Ao

    analisar mais a fundo este diagrama, nota-se que as a¸ cões de escrita em Tag NFC e Lei-

    tura/conex˜ ao em hotspot Wi-Fi ocorrem/atuam de forma isolada e independentes entre

    si, permitindo que sejam separadas e encaradas como dois aplicativos distintos espećıcos

    para cada fun ção.

    Essa condição também pode ser visualizada nas guras 3.7 e 3.8. No entanto, a

    abordagem de cria ção de dois aplicativos n ão foi aplicada neste projeto. Mantendo como

    decisão arquitetural criar um ´ unico aplicativo que cumprisse com ambas `as atividades,

    conforme apresentado no diagrama de classes exposto pela gura 3.10.

    • Funcionalidades principais do sistema.

    – Escrita de par âmetros de congura ção em Tag NFC .

    – Obten ção dos parâmetros escritos em Tag NFC .

  • 8/17/2019 Tcc Andre Lira

    46/80

    Figura 3.6 : Ideia inicial de funcionamento do aplicativo.

    – Processo de conexão em hotspot Wi-Fi .

    – Visualiza ção de tela de informações.

  • 8/17/2019 Tcc Andre Lira

    47/80

    Figura 3.7 : Diagrama de sequência do m ódulo write NFC

    Figura 3.8 : Diagrama de sequência do m ódulo responsável pela conexão WiFi e

  • 8/17/2019 Tcc Andre Lira

    48/80

    Figura 3.9 : Diagrama de navega ção do aplicativo

  • 8/17/2019 Tcc Andre Lira

    49/80

    F i g u r a 3

    . 1 0 :

    D i a g r a m a

    d e c l a s s e s

    d o p r o

    j e t o .

  • 8/17/2019 Tcc Andre Lira

    50/80

    3.2 Projeto

    Para um melhor gerenciamento deste projeto, de forma a mantê-lo sempre dentro dosprazos de entrega de funcionalidades, de acordo com os padr˜oes de qualidade exigidos,

    foram adotados pontos de controle como:

    • Metodologia ágil Scrum para projetos de desenvolvimento de software.

    • Elaboraç ão de um cronograma de desenvolvimento.

    • Elaboraç ão de lista de etapas de desenvolvimento.

    • Elaboraç ão de lista de itens fora de escopo.

    3.2.1 Metodologia de desenvolvimento

    Ao ińıcio do projeto foi adotada a metodologia ´agil de desenvolvimento de software

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

    pesquisa, codicação, refatora ção e testes de acordo com suas respectivas prioridades em

    função da disponibilidade de tempo. Foram adotadas seis sprints de quinze dias cada,totalizando três meses de desenvolvimento técnico, realizando todas as atividades descritas

    no product backlog composto pela tabela 3.1.

  • 8/17/2019 Tcc Andre Lira

    51/80

    T a b e l a 3

    . 1 :

    P r o

    d u c t

    B a c

    k l o g

  • 8/17/2019 Tcc Andre Lira

    52/80

    3.3 Implementa¸ cão

    A implementa ção do aplicativo prot ótipo NFC-Wi-Fi versão nal foi dividida em etapascom o propósito de manter o c ódigo organizado e criar uma modulariza¸cão de componentes

    funcionais.

    • Etapa NFC - Esta etapa consistiu em codicar 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 codicar 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 dispońıveis.

    – Congurar uma conex ão de rede Wi-Fi em dispositivo Android.

    – Iniciar processo de conexão com uma rede Wi-Fi

    – Teste funcional

    • Etapa de integra¸cão NFC e Wi-Fi - Esta etapa consistiu na integra¸ cão de ambos os

    módulos citados focando na obten ção do uxo previsto na arquitetura do projeto.

    – Inicializar dispositivo Wi-Fi

    – Identicar rede Wi-Fi utilizando par âmetros de conex ão (SSID Password ) ar-

    mazenados em Tag NFC .

    – Identicar protocolo de criptograa de rede utilizado

    – Iniciar processo de conexão

    • Etapa de refatora¸cão de código - Esta etapa consiste na cria¸cão de layouts para o

    prot ótipo vericação e busca por áreas passiveis a melhorias.

  • 8/17/2019 Tcc Andre Lira

    53/80

    3.3.1 AndroidManifest.xml

    Ao iniciar o desenvolvimento de um aplicativo que utilize funcionalidades pertencentesa um ou mais dispositivos de um smartphone Android , deve-se, primeiramente, gerar per-

    missões de utilização de cada dispositivo, requerer sua utiliza¸cão e indicar o ńıvel de API

    Android no qual o aplicativo dever á ser instalado. Sem as devidas permiss ões, o aplicativo

    não conseguirá efetuar nenhuma requisi¸cão de serviço. Todas as permiss ões de utilização

    de hardwares especı́cos, requerimentos de features e declarações 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 código 3.3.1 representa o arquivo AndroidManifest.xml e sua ex-

    plicação ocorrerá de acordo com as linhas do arquivo. Linhas 5, 6 e 7 - denem o ńıvel

    de API requisitado para a instala¸cão da App e o ńıvel ao qual ela é indicada. Para este

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

    versão Android 4.0 ICE-CREAM-SANDWICH , no entanto minSdkVersion=16 indica que

    sua instala ção deverá ser disponibilizada para dispositivos rodando sistema operacional

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

    NFC só foi disponibilizada a partir da vers ão Android 2.3 GINGER-BREAD ou API level 9 . Linhas 9 a 13 - conferem à App, permissões para utiliza ção Wi-Fi , de redes e de Internet .

    Linha 14 - confere à App permissão para utiliza ção de NFC . Linhas 16 e 17 - indicam que

    a disponibilidade de features NFC e Wi-Fi em dispositivo devem ser obrigat órias para o

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

    3.3.2 Etapa NFC

    O pacote NFC , conforme ilustrado na gura 3.11, é formado por quatro source les

    compostos de duas interfaces e duas classes que as implementam.

    • Interface 1: ForegroundDispatcher.java

    – Implementa ção: NfcForegroundDispatcher.java

    • Interface 2: NFC.java

    – Implementa ção: NfcDefaultProcessor.java

  • 8/17/2019 Tcc Andre Lira

    54/80

    1 5 8

    9 10 11 12 13 14 15

    16 17 18

    19 20 android:icon="@drawable/ic_launcher"21 android:label="@string/app_name"22 android:theme="@style/AppTheme" >23 26 27 28 29 30 31

    32 34 35 36 37 38 39

    40 41

    Código 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 ativa¸ cão ou desativa ção do modo

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

  • 8/17/2019 Tcc Andre Lira

    55/80

  • 8/17/2019 Tcc Andre Lira

    56/80

    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 }

    Código 3.3.2: Implementa ç˜ ao da interface Foreground Dispatcher

    3.3.2.2 Classe NfcDefaultProcessor

    A Classe NfcDefaultProcessor implementa quatro métodos p´ ublicos:

    • public String getSSID()

    • public String getPWD()

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

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

    NFC .

    Os dois primeiros est ão diretamente ligados à aquisição de parâmetros de congura ção

    Wi-Fi gravados em uma Tag NFC . Após ser realizada a leitura da Tag , esses métodos

  • 8/17/2019 Tcc Andre Lira

    57/80

    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 }

    Código 3.3.3: Instancia¸c˜ ao, habilita ç˜ ao e desativa ç˜ ao do modo Foreground Dispacher

    podem ser invocados de diferentes partes do c ódigo que possam lhes oferecer alguma uti-

    lidade. Os demais métodos ser˜ao explanados individualmente sob forma de subitens desta

    sessão.

    3.3.2.2.0.4 Escrita de Tag NFC O método writeNdefTag ( Tag tag, String ssid,

    String Password ) mostrado no c ódigo 3.3.4 permite a grava ção de Tags NFC contendo um

    record SSID e um Record Password . Caso os campos contendo as informa ções requisitadas

    estejam vazios ou nulos, uma exce ção é lan çada, resultando em falha de grava¸cão (Linhas03, 06, 09,12). Na linha 15, pode-se observar a criação de uma lista onde ser ão inseridos

    NdefRecords . Conforme denido na arquitetura do projeto, nesta lista constar˜ ao apenas

    dois records tipo texto correspondentes as conguara¸cões da rede Wi-Fi alvo. Cada um

    é criado com auxı́lio do método privado private NdefRecord createNdefRecord(String text) .

    Conforme consta no código 3.3.5, este método recebe um texto por parˆametro e retorna

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

  • 8/17/2019 Tcc Andre Lira

    58/80

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

    com a seleção da Tag detectada(linha 17), seguida pela abertura de uma conex˜ ao(linha

    18, gravação de dados(linha 19) e fechamento da Tag (linha 20). Ao nal deste método

    passamos a possuir uma Tag NFC contendo os par âmetros 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 }

    Código 3.3.4: Implementa ç˜ ao 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 }

    Código 3.3.5: Criando NdefRecord

    3.3.2.2.0.5 Leitura de Tag NFC O código 3.3.6 transcreve o método utilizado

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

    Wi-Fi e realizar a extra ção dessas informações. Este método recebe por parˆametro uma

    intent referente a ação de Tap NFC, e através dessa intente poder´ a ser feita a interpreta¸cão

    do conteúdo da Tag NFC . Observando a linha 04 vericamos que se a a ção presente na

    intent for a mesma realizada por a ção de descoberta de Tag NFC , signica que temos a

    correta. Logo, seu conte údo deverá resgatado e listado - linha 07 -, em seguida convertido

  • 8/17/2019 Tcc Andre Lira

    59/80

    para formata¸cão Ndef Message linha 09, e cada mensagem convertida dever á ter seus records

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

    13 e 18). Após encontrados, dever ão ter suas tags identicadoras removidas e o conte údo

    restante atribúıdo a vari´ aveis privadas da classe networkSSID e networkPWD - linhas 15 e

    20 -. Ao nalizar este processo tem-se os identicadores de rede Wi-Fi salvos em variáveis,

    podendo ser acessadas através dos métodos 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 }

    Código 3.3.6: Leitura de Tag NFC e extraç˜ ao de records SSID Password.

    3.3.3 Etapa Wi-Fi

    O pacote Wi-Fi é composto por três arquivos JAVA conforme demonstrado na gura

    3.12, sendo distribúıdos da seguinte forma:

    • Interface 1: WIFI.java

    – Implementa ção: WiFiController.java

  • 8/17/2019 Tcc Andre Lira

    60/80

    Figura 3.12 : Packet wiController

    • Classe independente: WiFiCongurator.java enditemize

    A interface WIFI.java disponibiliza de métodos de controle de adaptador Wi-Fi re-

    quisitados para a realiza¸cão de todas as ações deste projeto.

    – boolean checkWiEnabled()- Checa se o adaptador Wi-Fi está ativo.

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

    – boolean startWiScan()- Inicia busca por conex˜ oes Wi-Fi .

    – void addWiNetwork(WiFiCongurator wiCongurator)- Prepara rede con-

    gurada para conex ão .

    – void enableNetwork(int id)- Confere permiss˜ao de conexão.

    – void connect()- Inicia processo de conexão.

    – void disconnect() throws RuntimeException- Termina Conex˜ ao.

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

    de rede.

    – List< WiConguration > getConguredNetworks()- Lista as redes conguradas.

    Conforme mencionado, a implementa¸cão destes métodos ocorre na classe WiFiCon-

    troller de acordo com o código 3.3.7. O SDK possui uma APIs relativa à utiliza ção

    de adaptores Wi-Fi realmente bem documentados e de f ácil entendimento. O esfor ço

    maior dessa fase de desenvolvimento foi escolher quais métodos deveriam ser utiliza-

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

    6, 7 e 8, foram necessárias três deriva¸cões da API android .wi para preencher todos

    os requisitos deste projeto. O c ódigo 3.3.8 mostra a implementa¸cão da classe Wi-

    Congurator , utilizar esta deriva¸cão da API provou-se igualmente simples merecendo

  • 8/17/2019 Tcc Andre Lira

    61/80

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

    é necess ário que ao ińıcio e ao nal 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 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 getConfiguredNetworks(){53 return wifiManager.getConfiguredNetworks();54 }55 }

    Código 3.3.7: Implementa ç˜ ao WiFiController

  • 8/17/2019 Tcc Andre Lira

    62/80

    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 }

    Código 3.3.8: Implementa ç˜ ao WiFiCongurator

    3.3.4 Etapa de integra¸ cão NFC-WiFi - Cria¸cão de uxocompleto.

    Nesta etapa ser á mostrado detalhes da implementa¸ cão das funcionalidades NFC e

    Wi-Fi para a obten ção do prot ótipo de solução nal. Para alcan¸car o uxo de ativi-

    dades desejado, conforme mostrado na sess ão arquitetura de solu¸cão, 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 parˆ ametros Wi-Fi em

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

    ção de par âmetros Wi-Fi e procedimentos de conexão com a rede correta.

    3.3.4.1 NfcWriterActivity

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

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

  • 8/17/2019 Tcc Andre Lira

    63/80

    representa um record que deverá compor uma Ndef Message , após seu preenchimento

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

    código 3.4.2 - Os procedimentos para se efetuar a grava ção de uma Tag NFC : Na

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

    a estrutura¸cão de um objeto que representa a Tag lida pelo adaptador NFC . Nas linha

    24-27 são recuperados o SSID e o Password denidos pelo usuário, é concatenado,

    ao ińıcio de cada texto, uma string responsável por distinguir os campos e evitando

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

    de gravaç ão é efetivado.

    Figura 3.13 : Tela de grava ção de Tag NFC

    3.3.4.2 MainActivity

    A principal prevista para esta Activity são referentes a conexão Wi-Fi através de

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

    extra ção de conteúdo, an álise de parâmetros de rede e conexão com a rede Wi-Fi alvo.

    O código 3.4.1 mostra todo o trajeto percorrido desde a leitura da Tag NFC até a

    efetiva ção da conexão. Ao receber uma nova intent é necessário que seja garantido que

  • 8/17/2019 Tcc Andre Lira

    64/80

    os parâmetros de congura ção não sejam polúıdos por dados previamente salvos, logo

    as variáveis globais que guardam esses valores devem ser limpas recebendo conte údo

    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-, é realizada uma verica ção se a placa Wi-Fi do

    dispositivo est á ativada, caso contr´ario é feita a ativa¸cão -linhas 14 e 15-, lembrando

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

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

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

    -linha 28-. Em caso de sucesso é requisitado tipo de criptograa atuante na rede-linha 30- e uma nova congura ção de rede é criada utilizando os parˆametros SSID e

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

    rede Wi-Fi (linhas 31 e 35). Finalmente é realizada uma busca entre as conex˜oes

    conguradas, em busca da congura¸cão recém criada - linha 48 - e, ao encontr á-la

    (linha 49), iniciasse um processo de desconexão Wi-Fi , ativa ção da rede congurada

    e conexão (linhas 51 a 53).

    3.4 Conclus˜ oes

    A implementa ção deste projeto acarretou valiosos conhecimentos quanto à integra¸ cão

    de múltiplos dispositivos de hardware em um aplicativo, houve grande utiliza¸cão de

    APIs de controle disponibilizadas pelo sistema operacional, possibilitando a aquisi¸ cão

    experiências. Ao desenvolver este software de forma modular, p ôde-se vericar que

    cada dispositivo adaptador de hardware possui procedimentos espećıcos de ativa ção

    e controle. No entanto, verica-se que as APIs trabalham de forma a padronizartais procedimentos, possibilitando notar similaridades de utilaza¸ cão entre os vários

    dispositivos facilitando a compreens˜ao. Ao desenvolver o módulo Wi-Fi percebeu-se

    uma grande semelhan ça entre as funções de controle de seu adaptador e suas fun ções

    de conguração e por esta raz ão o desenvolvimento uiu com maior agilidade.

  • 8/17/2019 Tcc Andre Lira

    65/80

    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 WiFiConfigura