to de Aplicativo Para Smart Phone Com a ma Android

Embed Size (px)

Citation preview

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    1/50

    PONTIFCIA UNIVERSIDADE CATLICA DO RIO DE JANEIRO

    Desenvolvimento de Aplicativo paraSmartphone com a Plataforma Android

    Rafael J. Werneck de A. Martins

    PROJETO FINAL DE GRADUAO

    CENTRO TCNICO CIENTFICO -CTC

    DEPARTAMENTO DE INFORMTICACurso de Graduao em Engenharia de Computao

    Rio de Janeiro, Dezembro de 2009

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    2/50

    Rafael J. Werneck de A. Martins

    Desenvolvimento de Aplicativo paraSmartphone com a Plataforma Android

    Projeto final apresentado ao Curso Engenharia deComputao como requisito parcial para a obteno dottulo de Engenheiro de Computao.

    Orientador: Prof. Bruno Feij

    Rio de Janeiro

    Dezembro de 2009.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    3/50

    Agradeo aos meus pais e irmo, pelo incentivo e dedicao,

    e ao meu orientador, Prof. Bruno Feij, pelo apoio e conhecimento transmitido.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    4/50

    ResumoMartins, Rafael. Feij, Bruno. Desenvolvimento de Aplicativo paraSmartphone com a Plataforma Android. Rio de Janeiro, 2009. 50. RelatrioFinal de Projeto Final de Graduao Departamento de Informtica.Pontifcia Universidade Catlica do Rio de Janeiro.

    O presente trabalho destaca as principais qualidades da plataformaAndroid e como suas caractersticas podem ser exploradas no desenvolvimentode aplicativos para smartphones equipados com ela. So explicados no textoalguns detalhes da plataforma como sua arquitetura, componentes fundamentaisde suas aplicaes, interface com o usurio, recursos, internacionalizao,armazenamento de informaes, mapas, localizao e como publicar umaaplicao. Faz parte do trabalho ainda, um aplicativo real para Android, cujaimplementao est detalhada, que exibe rotas, capturadas atravs de GPS, emum mapa, utilizando a API do Google Maps.

    Palavras-chave

    Android, Google, GPS, mapa, smartphone.

    AbstractMartins, Rafael. Feijo, Bruno. Application Development for Smartphoneswith Android. Rio de Janeiro, 2009. 50. Final Report of GraduationProject Departamento de Informtica. Pontifcia Universidade Catlica doRio de Janeiro.

    This work highlights the main features of the Android platform and how theycan be used to develop applications for Android smartphones. In the text thereare some details of the platform, like architecture, key components of an

    application, user interface, resources, internationalization, data storage, maps,location and how to publish an application. The work also includes a realapplication whose implementation is detailed. The application shows routes ontop of a map and was created using GPS and the Google Maps API.

    Keywords

    Android, Google, GPS, map, smartphone.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    5/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    6/50

    Lista de Figuras

    Figura 1: Logotipo do Android ............................................................................. 1

    Figura 2: Smartphone HTC T-Mobile G1 ............................................................. 2

    Figura 3: Arquitetura da plataforma Android ........................................................ 5Figura 4: Ciclo de vida de uma atividade ............................................................. 8

    Figura 5: rvore de objetos Viewe ViewGroup................................................... 9

    Figura 6: Menu de opes, submenu e menu de contexto ................................ 10

    Figura 7: Notificao - Toast, barra de estado e dilogo ................................... 10

    Figura 8: Dilogo ANR ...................................................................................... 14

    Figura 9: Aplicativo Notepad, criado para testes ............................................... 17

    Figura 10: Jogo Sokoban, criado para testes .................................................... 18

    Figura 11: Aplicativo no dispositivo real ............................................................. 20Figura 12: Diagrama de estados do monitoramento .......................................... 21

    Figura 13: Esquema do banco de dados ........................................................... 22

    Figura 14: Tela inicial nos tamanhos HVGA (retrato e paisagem) e QVGA ....... 25

    Figura 15: Menu de opes modificado dinamicamente .................................... 25

    Figura 16: Tela que exibe a rota atual (carregando e ativa) ............................... 26

    Figura 17: Notificao na barra de estado (GPS disponvel) ............................. 27

    Figura 18: Tela inicial ........................................................................................ 28

    Figura 19: Dilogo de progresso (Salvando...) .................................................. 29

    Figura 20: Telas de listagem, de resumo e de mapa ......................................... 29

    Figura 21: Tela de preferncias ......................................................................... 30

    Figura 22: Telas de ajuda e de informaes sobre a aplicao ......................... 31

    Figura 23: Assistente de exportao ................................................................. 32

    Figura 24: Emulador .......................................................................................... 33

    Figura 25: Ferramenta DDMS........................................................................... 34

    Figura 26: Smartphone Samsung Galaxy .......................................................... 34

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    7/50

    1

    1. Introduo

    1.1 O surgimento do Android

    O mundo da telefonia mvel nunca esteve to aquecido quanto s

    demandas do mercado consumidor. De acordo com a consultoria IDC, as

    fabricantes de smartphone (telefone celular com funcionalidades avanadas)

    distriburam 43,3 milhes de dispositivos durante o terceiro trimestre de 2009,

    nmero 4,2% superior aos 41,5 milhes do mesmo perodo de 2008

    (Hamblen, 2009). J atentas a este mercado em constante crescimento, diversas

    empresas, entre elas a Google, se juntaram para formar, em novembro de 2007,

    a OHA (Open Handset Alliance) e lanar a plataforma Android (OHA, 2009a).

    O Android, como a plataforma tambm chamada, um conjunto

    completo de softwares para dispositivos mveis que inclui sistema operacional e

    importantes aplicativos. um projeto de cdigo aberto e foi idealizado para

    aparelhos com especificaes diversas (OHA, 2009b). Ele suporta tecnologias

    presentes nos smartphones mais modernos atualmente como touchscreen(tela

    sensvel ao toque) e GPS (Global Positioning System Sistema de

    Posicionamento Global; permite localizar a posio em termos de latitude e

    longitude da Terra). O logotipo do Android exibido na Figura 1 (OHA, 2009c).

    Figura 1: Logotipo do Android

    A plataforma inclui, dentre outros aplicativos instalados nativamente,

    navegador, discador, galeria de imagem, tocador de msica, gerenciador de

    contatos, calculadora, alarme e mensageiro (OHA, 2009c). E, assim como

    aquelas que competem em seu mercado, a Android permite que aplicaes

    sejam criadas por terceiros (Arima, 2009a). Porm, nela ainda possvel

    substituir facilmente as aplicaes nativas e acessar todos os recursos utilizadospor elas (Meier, 2009).

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    8/50

    2

    O Android conta com uma loja virtual, a Android Market, que possibilita ao

    desenvolvedor disponibilizar uma aplicao gratuitamente para o usurio final ou

    lucrar com a sua venda, em um modelo semelhante AppStore, loja virtual de

    aplicativos para o iPhone, smartphone da marca Apple. (Arima, 2009a).

    A plataforma Android possui tambm outras caractersticas interessantes,

    como a fcil integrao com servios oferecidos pelo Google. Alm disto,

    diversas ferramentas esto disponveis gratuitamente para os seus

    desenvolvedores (Meier, 2009). Estes temas sero abordados em mais detalhes

    no decorrer deste trabalho.

    O primeiro smartphone equipado com o Android, o T-Mobile G1 (veja

    Figura 2), fabricado pela HTC, foi lanado em setembro de 2008 nos Estados

    Unidos e, seis meses aps o seu lanamento, j havia vendido 1 milho de

    unidades (Gohring, 2009). Outras importantes empresas, entre elas Samsung e

    Motorola, j anunciaram dispositivos equipados com a plataforma

    (Machado, 2009). O Android foi anunciado no Brasil, muito recentemente, em

    setembro de 2009 (Arima, 2009b).

    Figura 2: Smartphone HTC T-Mobile G1

    1.2 Objetivos deste trabalho

    Este trabalho objetiva destacar as principais caractersticas do Android e

    demonstrar como elas podem ser utilizadas atravs da criao de uma aplicao

    que explore os recursos desta plataforma. Assim, ser til para os

    desenvolvedores interessados nela, que podem utilizar o projeto como uma fonte

    de estudos. Vale ressaltar que algumas consideraes feitas so aplicveistambm no desenvolvimento de aplicativos para dispositivos mveis em geral.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    9/50

    3

    Visando experimentar as capacidades da plataforma, foi desenvolvido um

    aplicativo para smartphone com Android 1.5 utilizando reconhecimento de

    interao atravs de touchscreen (tela sensvel ao toque), GPS (Global

    Positioning System Sistema de Posicionamento Global; permite localizar a

    posio em termos de latitude e longitude da Terra) e acelermetro (dispositivo

    que detecta movimentos). Alm destas funcionalidades, que esto presentes nos

    dispositivos mais modernos existentes atualmente, peculiaridades do Android

    foram utilizadas, como, por exemplo, a fcil integrao com o aplicativo de

    mapas Google Maps.

    Para alcanar o objetivo do trabalho, muito do que foi aprendido durante o

    curso de graduao foi aplicado. Por exemplo, a linguagem de programao

    utilizada Java (OHA, 2009c), ento os conceitos de orientao a objetos foram

    importantes. Alm disto, a plataforma Android dispe de um sistema de banco

    de dados SQLite para guardar informaes de aplicaes (OHA, 2009c).

    Esta funcionalidade foi explorada e, portanto, o conhecimento na rea de banco

    de dados fez diferena. Alm destes, as prticas de boa programao, tcnicas

    de modelagem, estruturas de dados, noes de lgica e algoritmos e princpios

    de interao com usurio e de segurana da informao influenciaram

    positivamente para um melhor produto final.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    10/50

    4

    2. Estado da arte

    Hoje existem muitas opes de sistemas operacionais para smartphones

    alm do Android. As principais so: Blackberry, da RIM, iPhone OS, da Apple,

    webOS, da Palm, Windows Mobile, da Microsoft e Symbian, da Nokia(Amaral, 2009).

    Muitas caractersticas presentes no Android, tais como grficos 3D e

    suporte a banco de dados nativo, tambm esto disponveis em outras

    plataformas mveis. Porm, apenas no Android h um componente que permite

    exibir e manipular um mapa do Google Maps, servio de mapas do Google,

    dentro de uma aplicao (Meier, 2009).

    Somente no Android todos os aplicativos so criados igualmente. Ou seja,

    nele no h diferena entre aplicaes nativas e as demais aplicaes, o quepossibilita uma grande personalizao do sistema, ao permitir a substituio

    completa de aplicativos nativos por outros, criados por terceiros. Alm disto,

    todos os aplicativos tem acesso s mesmas funcionalidades (Meier, 2009).

    Em termos de mercado, o nmero de dispositivos portteis tem tido um

    crescimento expressivo. O aumento da popularidade dos smartphones

    combinado com a crescente disponibilidade de internet tem criado um ambiente

    ideal para uma maior demanda de aplicaes para dispositivos mveis

    (Arima, 2009a).

    Mas, segundo Meier (2009), apesar de os avanos tecnolgicos ocorridos

    nos ltimos anos terem proporcionado o surgimento de dispositivos mveis mais

    potentes e com novas funcionalidades, quando comparados aos desktops e

    notebooks, ainda possuem relativamente:

    Menor poder de processamento;

    Memria RAM limitada;

    Capacidade de armazenamento persistente restrita;

    Tela pequena e de baixa resoluo;

    Altos custos associados transferncia de dados;

    Conexo pouco confivel e de baixa velocidade;

    Tempo de vida de bateria curto.

    Portanto, estas caractersticas devem ser consideradas durante o processo de

    desenvolvimento de aplicaes para dispositivos mveis em geral.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    11/50

    5

    3. Sobre a plataforma Android

    A seguir sero exibidos, de forma resumida, alguns conceitos importantes

    relacionados plataforma Android. Este resumo est baseado no guia disponvel

    no site voltado para os desenvolvedores da plataforma (OHA, 2009c).

    3.1 Arquitetura

    A plataforma Android composta pelos elementos mostrados na Figura 3.

    Figura 3: Arquitetura da plataforma Android

    Na base da pilha est um Linux Kernel verso 2.6. Alm de permitir uma

    abstrao entre o hardware e o software, ele o responsvel pelos principais

    servios do sistema como gerenciamento de memria e gerenciamento de

    processos.

    Embora as aplicaes para Android sejam escritas utilizando a linguagem

    Java, elas no so executadas em uma mquina virtual Java tradicional e sim

    em outra, chamada Dalvik. Assim como diversos componentes da plataforma,

    esta mquina virtual otimizada especialmente para dispositivos mveis.

    A plataforma tambm inclui uma coleo de bibliotecas C/C++ utilizadas

    por vrios componentes do sistema. Elas so as responsveis por prover, dentre

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    12/50

    6

    outros, udio, vdeo, grficos, banco de dados e navegador e so expostas para

    os desenvolvedores atravs do framework de aplicao.

    A arquitetura foi projetada para simplificar o reuso e a troca de

    componentes. Para tanto, a camada de framework de aplicao disponibiliza aos

    desenvolvedores as mesmas APIs (Application Programming Interface

    Interface de Programao de Aplicativos) usadas para criar as aplicaes

    originais do sistema.

    O Android j vem equipado com diversas aplicaes, escritas em

    linguagem Java. Dentre outras, h cliente de e-mail, navegador e gerenciador de

    contatos. Estas aplicaes esto localizadas no topo da pilha, juntamente com

    todas as demais, criadas por terceiros, instaladas no sistema.

    3.2 Conceitos fundamentais das aplicaes

    As aplicaes para Android so escritas em linguagem Java. O cdigo,

    depois de compilado, empacotado juntamente com outros recursos utilizados

    pela aplicao em um arquivo com o sufixo .apk. Este arquivo o veculo de

    distribuio para os usurios instalarem a aplicao em seus dispositivos.

    Por padro, cada aplicao executada em um processo prprio e cada

    processo tem a sua mquina virtual. Para cada aplicao designado um ID deusurio Linux nico e as permisses so dadas de forma que os arquivos fiquem

    visveis apenas para a aplicao dona.

    Uma aplicao no tem um nico ponto de entrada. Elas so construdas

    utilizando componentes que so instanciados no momento em que se tornam

    necessrios. Existem quatro tipos de componentes bsicos: atividades, servios,

    provedores de contedo e receptores de broadcast.

    Uma atividade geralmente corresponde a uma tela para o usurio.

    Servios no possuem uma interface visual e so utilizados para executar

    processamentos em segundo plano. Os provedores de contedo servem para

    disponibilizar dados especficos de uma aplicao para outras aplicaes. Por

    fim, os receptores de broadcast so componentes que ficam inativos e

    respondem a eventos.

    Exceto os provedores de contedo, todos os outros trs componentes so

    ativados atravs de mensagens assncronas. Intent o nome do objeto que

    contem a mensagem com a ao que se deseja executar. Por exemplo, para

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    13/50

    7

    iniciar uma atividade necessrio enviar um Intent cujo contedo especifique

    esta inteno.

    Existem dois tipos de Intents: explcitos e implcitos. No primeiro, o

    componente que deve ser executado j definido explicitamente. No segundo, a

    escolha do componente feita pelo sistema operacional que, baseado em

    alguns critrios, determina qual componente responde melhor quela inteno

    naquele momento.

    Cada pacote .apkcontm um arquivo de manifesto onde esto declarados

    todos os componentes da aplicao. O arquivo estruturado em linguagem XML

    e tambm utilizado para declarar as bibliotecas utilizadas, permisses, verso

    e requisitos.

    Quando o primeiro componente de uma aplicao precisa ser executado,

    um processo com um nico thread iniciado. Por padro, todos os componentes

    da aplicao so executados neste thread. O Android dispe de um mecanismo

    que permite a chamada de procedimentos remotos, executados em outros

    processos.

    Em determinado momento, quando a memria est escassa, por exemplo,

    o Android pode destruir um processo. Consequentemente, todos os

    componentes da aplicao que esto sendo executados naquele processo so

    destrudos. Para decidir qual processo deve ser eliminado, levada em conta a

    importncia dos processos para o usurio. Por exemplo, o sistema ir destruir

    primeiro aqueles que contm atividades que no esto mais visveis na tela.

    Cada componente de uma aplicao tem um ciclo de vida bem definido

    que inicia no momento em que instanciado e acaba quando destrudo.

    Enquanto o componente est sendo executado, seu estado pode ser alterado

    diversas vezes.

    Uma atividade possui essencialmente trs estados: ativo, pausado e

    parado. As transies entre estes estados so notificadas atravs de chamadasa sete mtodos especiais, conforme demonstrado na Figura 4. Estes mtodos

    so utilizados para realizar as aes apropriadas a uma determinada mudana

    de estado.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    14/50

    8

    Figura 4: Ciclo de vida de uma atividade

    Durante o tempo entre as chamadas dos mtodos onStart() e onStop(), a

    atividade pode ser vista pelo usurio. Entre os mtodos onResume() e

    onPause() a atividade est na frente de todas as outras atividades e o usurio

    est interagindo com ela. E, devido ao fato de o onPause() ser o nico mtodo

    cuja chamada garantida antes do processo ser eventualmente destrudo, ele

    deve ser utilizado para armazenar, de forma persistente, dados para posterior

    restaurao.

    Como as atividades, os servios tambm possuem estados e mtodos de

    ciclo de vida que podem ser implementados para responder a mudanas de

    estado. Os receptores de broadcast possuem apenas um mtodo de ciclo de

    vida que chamado no momento em que uma mensagem chega para ele e o

    componente considerado ativo apenas durante a execuo deste mtodo, ou

    seja, enquanto reage mensagem.

    3.3 Interface com o usurio

    No Android a interface com o usurio construda utilizando uma

    hierarquia de objetos View e ViewGroup. Nesta hierarquia, representada em

    forma de uma rvore, as folhas so do tipo Viewe os ramos do tipo ViewGroup,

    como na Figura 5. Uma Viewcontrola uma rea retangular especfica da tela e

    serve de base para a implementao de objetos como campos de texto e

    botes, chamados de widgets. A classe ViewGroup serve de base para os

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    15/50

    9

    layouts, utilizados para organizar a maneira como os objetos so dispostos na

    tela.

    Figura 5: rvore de objetos Viewe ViewGroup

    Os objetos podem ser organizados automaticamente, dentro de uma

    regio especfica da tela, entre outras, de forma linear, relativa ou absoluta. Para

    cada uma delas, deve ser utilizado um layout especfico. Por exemplo, os

    objetos filhos do ViewGroup LinearLayoutso dispostos na tela linearmente e os

    filhos do ViewGroup AbsoluteLayout, de forma absoluta.

    Embora seja possvel especificar exatamente as coordenadas e o tamanho

    do componente a ser desenhado na tela, esta abordagem deve ser evitada. A

    organizao em layouts no absolutos mais vantajosa, pois possibilita uma

    melhor adaptao da interface da aplicao s diferentes telas (resoluo e

    tamanho distintos) dos dispositivos nos quais pode ser executada.

    A plataforma disponibiliza diversos widgets e layouts prontos que, em

    conjunto, permitem criar uma interface com o usurio bastante rica. Porm, se

    necessrio, tambm possvel construir e adicionar componentes customizados.

    E, quando o objetivo for personalizar objetos de forma uniforme, podem ser

    aplicados estilos e temas.Para tornar o visual da aplicao ainda mais atrativo, o sistema

    disponibiliza algumas maneiras de animar grficos em duas dimenses de forma

    facilitada. Uma das possibilidades a animao quadro a quadro, onde so

    especificadas as imagens e a ordem na qual elas devem ser trocadas. Tambm

    possvel utilizar uma animao Tween, que executa uma srie de

    transformaes simples (posio, tamanho, rotao e transparncia) em um

    objeto View.

    A plataforma tambm permite a criao de menus padronizados (vejaFigura 6). Existem trs tipos fundamentais de menus: opo, submenu e

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    16/50

    10

    contexto. O primeiro exibido quando o usurio pressiona a tecla MENU do

    dispositivo e, em alguns casos, quando um de seus itens selecionado, um

    submenu revelado. J o contexto um tipo de menu que aparece quando o

    usurio pressiona de forma longa um objeto View.

    Figura 6: Menu de opes, submenu e menu de contexto

    Ao notificar o usurio sobre um evento que tenha ocorrido na aplicao,

    deve ser utilizada a tcnica adequada dentre as trs disponveis no Android:

    Toast, dilogo ou barra de estado (veja Figura 7). Resumidamente, a primeira

    til para mensagens pequenas que no requerem interao. O dilogo ideal

    para chamar a ateno do usurio e capturar uma resposta. Quando a aplicao

    est executando em segundo plano e necessita notificar o usurio, a barra deestado deve ser utilizada. Ao lanar uma notificao na barra de estado,

    possvel tambm emitir um som ou vibrar o dispositivo, desde que a aplicao

    tenha a permisso para isto.

    Figura 7: Notificao - Toast, barra de estado e dilogo

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    17/50

    11

    3.4 Recursos e internacionalizao

    Geralmente, uma aplicao para Android contm recursos, que so

    elementos externos referenciados dentro dela, como imagens, sons e layouts,

    por exemplo. Todos os recursos devem estar dentro do diretrio res/, que resideno topo da rvore do projeto, no mesmo nvel do src/, onde ficam os arquivos

    com o cdigo fonte.

    Tudo que est localizado dentro do diretrio res/ pode ser acessado pela

    aplicao utilizando a classe R, gerada automaticamente pelas ferramentas de

    desenvolvimento. Esta classe contm subclasses para cada tipo de recurso

    suportado pelo Android com identificadores dos recursos compilados.

    possvel disponibilizar diferentes recursos dependendo da lngua ou das

    configuraes do dispositivo. Para isto, devem ser criados diretrios paralelosnomeados com qualificadores. Existem muitos qualificadores disponveis para

    diferenciar, por exemplo, a lngua e o tamanho de tela e eles podem ser

    utilizados em conjunto. O sistema seleciona automaticamente o diretrio cuja

    qualificao a mais adequada configurao do dispositivo naquele momento.

    3.5 Armazenamento de informaes

    Diferentemente de sistemas operacionais para desktop, que geralmente

    disponibilizam um sistema de arquivos comum, no Android todos os dados so

    visveis apenas para a aplicao dona. Para que estas informaes sejam

    acessadas por outras aplicaes, deve ser utilizado um componente do tipo

    provedor de contedo.

    O Android permite que os dados sejam armazenados de diversas formas,

    como atravs de um mecanismo chamado de preferncias, onde possvel

    armazenar tipos primitivos. Esta possibilidade geralmente utilizada paraguardar as preferncias do usurio.

    Tambm possvel armazenar dados diretamente no aparelho ou em um

    dispositivo de memria removvel, utilizando arquivos. A aplicao pode,

    alternativamente, com o SQLite, armazenar informaes em tabelas em um

    banco de dados. A plataforma suporta ainda o acesso a operaes de rede que

    podem ser utilizadas para guardar ou requisitar dados.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    18/50

    12

    3.6 Mapas e localizao

    O sistema disponibiliza provedores de localizao que podem ser

    utilizados na construo de aplicaes baseadas na posio corrente do

    dispositivo. O componente central de localizao o objeto LocationManager.Com este objeto possvel listar os provedores de localizao disponveis,

    registrar para receber informaes peridicas sobre mudanas de localizao do

    dispositivo ou registrar um Intent para ser enviado quando o dispositivo se

    aproxima de um dado local, definido em termos de latitude e longitude.

    No momento em que feito o registro para receber informaes peridicas

    sobre mudanas de localizao do dispositivo, possvel selecionar um

    provedor de localizao especfico, pelo seu nome, ou atravs de um critrio

    considerando a preciso necessria para aplicao. Entre os provedores delocalizao disponveis, geralmente esto a rede da operadora de telefonia

    mvel e o GPS. Estes provedores variam dependendo das especificaes do

    dispositivo. Vale ressaltar que, para utilizar um provedor de localizao,

    necessria a respectiva permisso.

    Alm de escolher o provedor de localizao, ao fazer o registro para

    receber informaes peridicas sobre mudanas de localizao do dispositivo,

    possvel tambm determinar um tempo mnimo e uma distncia mnima entre as

    atualizaes. importante determinar um tempo mnimo para economizarenergia.

    Uma opo para exibir um mapa na tela utilizar um componente

    MapView, disponvel na biblioteca do Google Maps. Esta biblioteca no padro

    da plataforma Android e, portanto, necessrio indicar a sua importao no

    arquivo de manifesto. Para utilizar este componente, preciso estar de acordo

    com os termos de servios do Google Maps e se registrar para obter uma chave.

    Esta chave fornecida gratuitamente e sem ela o componente no funciona.

    O componente MapView exibe um mapa cujo contedo requisitado em

    tempo real utilizando uma conexo com a internet. Portanto, necessrio que a

    aplicao tenha a permisso para o acesso internet. Obviamente, mesmo com

    a permisso de acesso, caso a internet no esteja disponvel no momento, o

    mapa no ser exibido.

    O MapView disponibiliza mtodos para controlar o mapa que est sendo

    exibido. E, para personalizar ainda mais o mapa, utilizada uma classe especial

    (Overlay) que implementa uma camada sobre ele na qual podem ser

    desenhados diversos elementos.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    19/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    20/50

    14

    Figura 8: Dilogo ANR

    Alm destas consideraes, importante lembrar que a plataforma

    Android pode estar presente em dispositivos com caractersticas bem variadas.

    As diferenas podem ser no tamanho da tela e em sua resoluo ou na ausncia

    de teclado fsico, por exemplo. Portanto, necessrio projetar a aplicao de

    forma a possibilitar uma execuo adequada aos diversos dispositivos nos quais

    ela pode estar inserida.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    21/50

    15

    4. Experincias com o Android

    4.1 Atividades realizadas

    Apesar de um pequeno conhecimento prvio na rea de desenvolvimento

    para celulares, adquirido em uma disciplina durante o curso, tudo relativo

    plataforma Android era novo. Ento, inicialmente foi realizado um estudo

    detalhado sobre ela, utilizando como material, principalmente, o guia disponvel

    no site de desenvolvedores para Android (OHA, 2009c). Alm dele, um livro de

    Lecheta (2009) e outro, de Meier (2009), foram consultados. No menos

    importantes foram os vdeos de apresentaes voltadas para desenvolvedores

    da plataforma criados pelo Google (2009). Muitos deles foram gravados durante

    o evento Google I/O, realizado em maio de 2009 nos Estados Unidos, e

    proporcionam horas de informaes relevantes.

    A maior parte do tempo foi aplicada neste estudo sobre a plataforma

    Android, incluindo, dentre outros, os conceitos fundamentais de suas aplicaes,

    formas de interagir com os usurios, utilizao de recursos e as recomendaes

    oficiais de boas prticas. Alm disto, foram estudadas tambm funcionalidades

    mais sofisticadas, como acelermetro e GPS junto ao Google Maps.

    importante destacar que o estudo destas funcionalidades menos triviais exigiu

    um esforo maior, pois no foram encontrados bons manuais didticoscompletos.

    Apesar de a plataforma ter sido idealizada para facilitar o trabalho dos

    desenvolvedores e permitir um rpido desenvolvimento (Meier, 2009), uma

    poro de tempo expressiva foi consumida no seu aprendizado, pois se optou

    por um melhor entendimento ao invs de uma abordagem mais simplista.

    Lembrando que este entendimento menos superficial crucial no

    desenvolvimento de uma boa aplicao para diferentes dispositivos mveis com

    Android, onde o poder de processamento e a autonomia da bateria so limitadose as caractersticas dos dispositivos (tamanho de tela e presena de teclado

    fsico, por exemplo) variam.

    Como a linguagem de programao utilizada Java, foi necessrio um

    pequeno aperfeioamento na mesma, pois, apesar de contar com um

    conhecimento prvio adquirido durante o curso de graduao, a experincia de

    programao nela no era grande. Para este propsito, foi consultado o tutorial

    da Sun (2009).

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    22/50

    16

    4.2 Avaliaes e recomendaes

    Para o desenvolvimento dos aplicativos, foi escolhido o IDE Eclipse 3.4

    (ltima verso disponvel no incio do projeto), pois alm de ser um ambiente

    gratuito bastante conhecido, o mais recomendado pelas referncias oficiais eh um bom plugin oficial para ele, o ADT (Android Development Tools) 0.9, que

    tambm foi utilizado na produo. Nenhuma alternativa ao Eclipse foi cogitada,

    j que o ADT est disponvel apenas para ele (OHA, 2009c). Tal plugin facilita a

    criao dos arquivos XML, a edio dos layouts, o gerenciamento de recursos e

    conta com uma boa integrao com o emulador. Apesar de seu uso no ser

    obrigatrio, o ADT, como o esperado, proporcionou um grande ganho de

    produtividade.

    O SDK oficial do Android fundamental no desenvolvimento de aplicativospara a plataforma (OHA, 2009c) e, portanto, foi utilizado (verso 1.5). Nele, alm

    das bibliotecas necessrias, esto presentes importantes ferramentas de apoio

    ao desenvolvimento, como o emulador, que capaz de simular um smartphone

    com Android e, por isto, foi extremamente til nos testes do aplicativo. Com ele

    foi possvel testar inclusive as mudanas na localizao GPS e caractersticas

    inerentes ao dispositivo, como diferentes tamanhos de telas.

    Mas, apesar de ser bastante bom, o emulador no completo e carece,

    por exemplo, de uma simulao para o acelermetro. Para suprir estadeficincia, foi tentado um programa gratuito, disponvel por terceiros, chamado

    SensorSimulator. Porm, devido s atualizaes no SDK, este programa no se

    mostrou compatvel e acabou no sendo utilizado. Por esta razo, o

    acelermetro foi testado apenas no dispositivo real.

    A familiarizao com o ambiente e com as ferramentas mais importantes

    disponveis no foi trabalhosa, apesar de algum tempo para baixar, instalar e

    configurar todos os componentes ter sido necessrio. Mas, assim como

    aconteceu com as documentaes e com o plugin, o SDK tambm sofreu

    importantes atualizaes no decorrer do projeto, o que exigiu algumas

    adaptaes. Alm disto, foram encontrados alguns bugs que demandaram

    tempo para serem contornados.

    Vale ressaltar que j foram lanadas verses do IDE, do SDK e do plugin

    ainda mais recentes. Porm, as novas verses no adicionaram facilidades que

    pudessem ser aplicadas diretamente no trabalho. Portanto, o tempo necessrio

    para configurar todo o ambiente de desenvolvimento com as novas verses no

    seria compensado e, por isto, elas no foram utilizadas.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    23/50

    17

    Para consolidar os conceitos estudados e experimentar as funcionalidades

    disponveis para os desenvolvedores de aplicativos para Android, algumas

    pequenas aplicaes foram criadas. Entre elas, um Notepad, mostrado na

    Figura 9, onde foram aplicados alguns conceitos importantes de ciclo de vida da

    aplicao, de interface e de armazenamento em um banco de dados.

    Figura 9: Aplicativo Notepad, criado para testes

    Depois, foi criado um jogo no estilo Sokoban (jogo de tabuleiro onde o

    jogador deve empurrar as caixas para os locais marcados), mostrado na

    Figura 10. Apesar de aparentemente simples, nesta criao esto presentes

    diversos conceitos como: ciclo de vida e propriedades do componente atividade,

    utilizao de recursos como imagens e sons, criao de layouts mais

    sofisticados com XML, animao com XML, tratamento de diferentes formas de

    interao com o usurio, criao de menu com XML, tratamento de preferncias

    do usurio e persistncia utilizando banco de dados. Muitos destes conceitos

    esto presentes no aplicativo final deste trabalho.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    24/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    25/50

    19

    emulador foram feitos progressivamente, sempre que uma nova funcionalidade

    era adicionada.

    Depois, com o lanamento de dispositivos equipados com Android no

    Brasil, foi adquirido um aparelho para testar a aplicao em um ambiente real.

    Infelizmente, algumas dificuldades s permitiram a compra do aparelho em

    novembro de 2009. Mas, apesar do tempo exguo disponvel, foi possvel realizar

    os testes como o desejado.

    A conexo entre o dispositivo real e o computador no qual o aplicativo

    estava sendo desenvolvido (para utilizar a ferramenta adb) foi bastante

    trabalhosa devido incompatibilidade do driver. Aps muito tempo e diversas

    tentativas, o problema foi solucionado instalando um driver genrico existente

    em uma verso antiga do SDK.

    Depois de conectado com o computador, foi possvel, utilizando a

    ferramenta adb, depurar o aplicativo no dispositivo real. Isto foi essencial para

    testar e ajustar o uso de seu sensor de movimento (acelermetro), utilizado para

    detectar chacoalhadas no dispositivo.

    Um problema que dificultou os testes de monitoramento no dispositivo foi a

    fraca recepo de seu GPS e o grande tempo que decorre entre o seu

    acionamento e a captura da primeira posio. O GPS do dispositivo utilizado s

    funcionou em ambientes externos, onde a aplicao teve que ser testada. E,

    mesmo assim, o sinal no era sempre bom, provavelmente devido grande

    quantidade de prdios em algumas ruas. Alm disto, o sinal do GPS tambm era

    afetado pelas condies climticas. Os melhores resultados foram obtidos na

    beira da praia com um tempo aberto.

    No geral, a passagem para o dispositivo real foi bem sucedida e os

    resultados obtidos foram bastante satisfatrios, iguais aos obtidos utilizando o

    emulador, concluindo assim o trabalho como almejado inicialmente. A Figura 11

    exibe o aplicativo sendo executado no dispositivo real.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    26/50

    20

    Figura 11: Aplicativo no dispositivo real

    Portanto, como visto anteriormente, o cronograma (veja Apndice 1),

    planejado durante o Projeto Final I, s precisou ser levemente alterado: os testes

    no dispositivo real foram atrasados em um ms, pois dependiam da

    disponibilidade de um aparelho.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    27/50

    21

    5. Projeto e especificao do sistema

    O produto final criado um aplicativo para smartphones equipados com a

    plataforma Android. O aplicativo, cujo nome MyRoute, est focado em

    proprietrios de smartphones com este sistema. O artefato utiliza mapas e GPSe foi construdo para o monitoramento de rotas em ambientes externos.

    Basicamente, o aplicativo armazena rotas percorridas pelo usurio, capturando

    as posies do dispositivo ao longo do tempo, e alguns dados relacionados a

    elas.

    Atravs de um boto na tela inicial do aplicativo, possvel iniciar um

    monitoramento novo e, atravs de seu menu, acessar as telas de preferncias,

    de informaes sobre o aplicativo e de ajuda. Na tela de preferncias, algumas

    opes podem ser personalizadas como a preciso da captura de posies (alta,mdia ou baixa), os alertas (sonoro e/ou vibratrio ou desligado) e a unidade de

    medida utilizada (quilmetro ou milha).

    Ao ligar o monitoramento, um cone adicionado na barra de estado do

    sistema. Com o monitoramento ativo, a rota que o usurio percorre passa a ser

    exibida na tela em um mapa. Alm dela, tambm so exibidos o tempo, a

    velocidade instantnea e a distncia percorrida at o dado momento. Para isto,

    quando acionado, um componente que executa aes em segundo plano

    criado. Este componente se registrada a um provedor de localizao e recebe as

    atualizaes de mudanas de posio do dispositivo.

    A aplicao controla o estado do monitoramento, que pode estar ligado e

    carregando, ligado e ativo ou desligado, com indicado no diagrama da Figura 12.

    Ligado /Carregando

    Ligado / Ativo

    Desligado

    Usurio finalizao monitoramento

    Primeira localizaoGPS obtida

    Fim

    Incio

    Usurio acionao monitoramento

    A rota armazenada

    LocalizaoGPS obtida

    Figura 12: Diagrama de estados do monitoramento

    O provedor de localizao utilizado o GPS, por ser mais preciso, e seutempo mnimo para receber atualizaes de mudanas de posio do dispositivo

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    28/50

    22

    especificado baseado nas preferncias de preciso do usurio. Mudanas no

    estado do provedor de localizao so notificadas para o usurio. Para tanto, o

    cone exibido na barra de estado do sistema quando o monitoramento est ativo

    colorido de verde, de amarelo ou de vermelho, dependendo do estado do

    provedor de localizao. A cor verde indica que o GPS est ligado e disponvel.

    A cor amarela utilizada caso o GPS esteja ligado, mas temporariamente

    indisponvel. Por fim, a cor vermelha indica que o GPS est desligado ou fora de

    servio. Alm do cone, mensagens e alertas sonoros e vibratrios notificam o

    usurio. Estes alertas tambm podem ser personalizados por ele.

    Para a exibio do mapa, utilizado o Google Maps e a rota

    representada na tela atravs de linhas interligando os pontos (posies)

    capturados desenhadas em uma camada sobre ele. Conforme novos pontos so

    adicionados, o mapa movimentado para manter a ltima posio no centro.

    Nesta tela tambm h um menu, que permite ao usurio selecionar o nvel de

    zoom do mapa desejado.

    Se o usurio desejar, pode fechar a tela do aplicativo depois de acionar o

    monitoramento e este continuar ativo, em segundo plano. Porm, com a tela

    fechada, o aplicativo no exibe nenhuma informao (mapa com a rota, tempo,

    velocidade e distncia).

    Ao desligar o monitoramento, possvel visualizar um mapa com a rota

    percorrida, o tempo e a distncia totais e a velocidade mdia. Estas informaes

    so armazenadas no banco de dados, divididas em duas tabelas, conforme o

    esquema da Figura 13.

    - _id : int

    -name : string

    -date : string-time : string-speed : float-distance : float

    Routes

    - _id : int

    -route_id : int-latitude : int-longitude : int

    Points1 2..*

    Figura 13: Esquema do banco de dados

    Ao escolher a opo de consultar as rotas anteriores na tela inicial, uma

    nova tela aberta onde so listadas todas as rotas armazenadas, com as mais

    recentes exibidas no topo. Nesta tela possvel apagar e modificar os nomes

    das rotas. E, ao selecionar uma delas, todas as suas informaes so exibidas.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    29/50

    23

    Na tela que exibe o mapa de uma rota armazenada possvel mov-lo e

    alterar o seu nvel de zoom. E, para que a rota volte a ser exibida no centro,

    existe uma opo no menu. Outra forma de centralizar a rota chacoalhando o

    dispositivo. Neste caso, o acelermetro utilizado.

    O aplicativo foi criado para funcionar bem em aparelhos diversos, com

    telas de tamanho diferente, nos modos retrato e paisagem, e tambm naqueles

    que no possuem tela sensvel ao toque ou que carecem de um acelermetro.

    Obviamente, em determinados casos, algumas funcionalidades no esto

    disponveis. As nicas caractersticas obrigatrias so o GPS e um acesso

    internet. O primeiro necessrio para realizar a funo principal do aplicativo,

    que o monitoramento de rotas atravs da captura da posio do dispositivo; o

    segundo indispensvel para acessar o Google Maps para exibir os mapas.

    Por fim, importante salientar que o aplicativo est disponvel em duas

    lnguas: ingls e portugus (se o sistema no qual est o aplicativo estiver

    configurado para portugus, o contedo ser apresentado em lngua portuguesa

    e, caso contrrio, em lngua inglesa).

    Estruturalmente, o aplicativo composto por oito telas (principal, mapa

    atual, resumo, mapa antigo, lista de rotas armazenadas, preferncias,

    informaes sobre o aplicativo e ajuda), um componente que executa

    processamento em segundo plano (monitoramento utilizando o GPS) e duas

    tabelas em um banco de dados, que armazenam as informaes das rotas cujos

    monitoramentos foram concludos.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    30/50

    24

    6. Implementao e avaliao

    6.1 Como a aplicao foi implementada

    A aplicao utiliza oito telas que exibem, cada uma delas, uma interface

    diferente com o usurio. Portanto, foram necessrios oito componentes do tipo

    atividade. Alm disto, um componente do tipo servio foi utilizado para

    possibilitar que a aplicao execute em segundo plano.

    Todos os componentes utilizados esto descritos no arquivo de manifesto

    (AndroidManifest.xml), onde tambm constam as permisses para garantir

    aplicao o acesso internet (android.permission.INTERNET), ao GPS

    (android.permission.ACCESS_FINE_LOCATION) e ao vibrador do dispositivo

    (android.permission.VIBRATE) e uma declarao de uso de uma biblioteca

    externa (com.google.android.maps) necessria para a exibio dos mapas

    atravs do Google Maps. No arquivo ainda consta qual componente (Main) deve

    ser iniciado quando o usurio escolher o cone da aplicao na lista de

    aplicaes instaladas no dispositivo.

    Exceto no caso da atividade de preferncias (Preferences), cuja interface

    gerada automaticamente pela plataforma, todas as interfaces com o usurio dos

    outros componentes do tipo atividade (About, Help, Main, RouteMap,

    OldRouteMap, OpenListe Summary) foram definidas em XML. Cada uma delasest escrita em um arquivo individual, localizado no diretrio res/layout, onde

    consta a sua hierarquia de objetos Viewe ViewGroup. A interface carregada

    em um componente assim que este criado, em seu mtodo onCreate().

    Apesar de ser possvel construir a interface diretamente no cdigo, em

    linguagem Java, a utilizao dos arquivos em formato XML bastante vantajosa,

    pois permite uma maior separao entre a lgica e o visual. importante

    lembrar que a aplicao foi pensada para funcionar bem em diferentes

    dispositivos. Para tanto, os layouts utilizam posicionamentos e unidades relativasao invs de absolutas. A Figura 14 mostra como a tela inicial se adapta a

    tamanhos diferentes, como HVGA (480x320) e QVGA (240x320), e aos modos

    retrato e paisagem.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    31/50

    25

    Figura 14: Tela inicial nos tamanhos HVGA (retrato e paisagem) e QVGA

    Todas as atividades, exceto trs (About, Help e Summary), possuem

    menus de opes especficos que, assim como as interfaces com o usurio,

    foram definidos em arquivos no formato XML. Os menus so carregados no

    mtodo onCreateOptionMenu() da atividade correspondente, j que este mtodo

    chamado na primeira vez em que a tecla MENU do dispositivo pressionada

    enquanto a atividade est sendo exibida.

    Em alguns casos, necessrio modificar o menu de opes

    dinamicamente e isto feito dentro do mtodo onPrepareOptionMenu(), que

    chamado sempre que a tecla MENU do dispositivo pressionada. Por exemplo,

    na atividade que lista as rotas armazenadas (OpenList), a opo de apagar

    todas elas deve estar ou no habilitada; caso a lista esteja vazia, a opo

    desabilitada dinamicamente, como na Figura 15.

    Figura 15: Menu de opes modificado dinamicamente

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    32/50

    26

    Assim que o usurio escolhe dar incio a um novo monitoramento,

    selecionando o boto Iniciarna tela inicial do aplicativo (Main), uma atividade

    com um mapa (RouteMap) exibida, como na Figura 16. Esta atividade inicia

    um servio (BackgroundService) que requisita as atualizaes da posio do

    dispositivo utilizando GPS. Assim que criado, este servio lana uma

    notificao na barra de estado do sistema. Esta notificao persiste at que o

    monitoramento seja explicitamente desligado, mesmo que a tela com o mapa

    no esteja mais sendo exibida.

    Figura 16: Tela que exibe a rota atual (carregando e ativa)

    Para controlar as notificaes na barra de estado, a classe

    StatusBarNotification utilizada. Seu mtodo fireNotification() recebe como

    parmetro o tipo de notificao, entre os listados abaixo:

    GPS ligado

    GPS desligado

    GPS disponvel

    GPS temporariamente indisponvel GPS indisponvel

    Padro

    Dependendo do tipo de notificao, a cor do cone, as mensagens e os

    alertas da notificao lanada so diferentes. Como estes alertas podem ser

    personalizados na tela de preferncias, antes de enviar um, a preferncia atual

    do usurio verificada e respeitada. Na Figura 17 mostrada como exemplo a

    notificao que enviada na barra de estado para indicar a disponibilidade do

    GPS, aps este estar fora de servio.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    33/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    34/50

    28

    Figura 18: Tela inicial

    importante lembrar tambm que o sistema multitarefa. Ou seja,

    enquanto o aplicativo est carregando (aguardando a primeira posio adquirida

    utilizando o GPS) ou em qualquer outro momento, o usurio pode fechar esta

    tela para trabalhar em um aplicativo diferente e quando retornar espera

    encontrar o aplicativo funcionando corretamente.

    Para exibir o mapa na tela (veja Figura 16), a atividade utiliza um

    MapView. A construo da rota no mapa feita em uma camada sobre ele,

    utilizando a classe RouteOverlay, filha da classe Overlay. Mais especificamente,

    nela foram desenhados segmentos de retas interligando os pontos. Estes

    pontos, capturados atravs do GPS, so inseridos, enquanto o monitoramento

    est ativo, em um vetor (ArrayList) em forma de sistema de coordenadas

    geogrficas (latitude e longitude). Visando desprezar as informaes

    desnecessrias e facilitar a converso de tipos, objetos da classe MyPoint so

    utilizados para armazenar os pares de coordenadas.

    Quando o usurio escolhe encerrar o monitoramento (apertando o boto

    Parar), todos os pontos, bem como a velocidade mdia, a distncia, o tempo do

    percurso, o nome da rota e a data atual so armazenados em um banco de

    dados. A classe RoutesDatabase a responsvel pelo acesso ao banco de

    dados bem como a disponibilizao de mtodos que implementam as consultas

    utilizadas. Os comandos SQL utilizados por esta classe esto no Apndice 2.

    O armazenamento de uma rota pode ser demorado, principalmente

    quando esta composta por muitos pontos. Ento, para no bloquear o thread

    principal, da interface, esta ao feita em um thread separado. Para tanto,

    utilizada a classe SaveRoute, que recebe como parmetro um objeto Route, com

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    35/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    36/50

    30

    Alm de um menu de opes, a atividade que lista as rotas armazenadas

    (OpenList) prov ainda um menu de contexto, criado em seu mtodo

    onCreateContextMenu(). Com o menu de contexto, exibido quando o usurio

    pressiona de forma longa um item da lista, possvel modificar o nome de uma

    rota ou remov-la.

    Para que o usurio possa escolher as suas opes preferenciais, uma

    atividade (Preferences) do tipo PreferenceActivityfoi utilizada. Este componente

    carrega, utilizando o mtodo addPreferencesFromResource(), um arquivo de

    preferncias quando criado. O arquivo construdo em XML e com ele o

    sistema capaz de definir os itens a serem exibidos na tela (veja Figura 21) bem

    como responder interao com o usurio e armazenar as suas preferncias.

    Depois de armazenadas, todos os componentes que necessitam acessar o valor

    de uma preferncia o fazem utilizando a chave da preferncia de interesse.

    Figura 21: Tela de preferncias

    As outras duas telas utilizadas na aplicao, mostradas na Figura 22, so

    a de ajuda e a de informaes sobre a aplicao. A primeira contm um texto

    (veja Apndice 3) que explica a forma como a aplicao deve ser utilizada. E, na

    segunda, constam informaes sobre a aplicao, como verso e autoria.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    37/50

    31

    Figura 22: Telas de ajuda e de informaes sobre a aplicao

    Por fim, vale salientar que, tal como os arquivos que definem os layouts e

    menus, todos os outros recursos que no fazem parte da lgica da aplicao

    esto separados de seu cdigo, dispostos em diretrios especficos. Por

    exemplo, as imagens esto no diretrio res/drawableem formato PNG e os sons

    no diretrio res/raw em formato OGG (estes formatos de arquivos foram

    utilizados, pois so os recomendados na documentao oficial do Android). Os

    recursos so acessados dentro do cdigo Java atravs da classe R, que

    gerada automaticamente pelas ferramentas disponveis no SDK. Todos os

    arquivos utilizados no trabalho esto listados no Apndice 4.

    No caso das strings, elas esto armazenadas em dois arquivos XML de

    mesmo nome (strings.xml) em dois diretrios: res/values e res/values-pt. Isto

    permite que a aplicao funcione em ingls e em portugus, dependendo da

    configurao do dispositivo na qual est instalada, utilizando a funcionalidade de

    recursos alternativos provida pela plataforma: o sistema seleciona

    automaticamente o diretrio no qual deve ser acessado o arquivo (values/ou

    values-pt/, onde pt o qualificador para lngua portuguesa).

    Ou seja, no arquivo values/strings.xmlficam armazenados todos os textos

    padres utilizados na aplicao, em ingls. Em values-pt/strings.xml esto

    alguns textos traduzidos para o portugus. Caso o dispositivo esteja executando

    em portugus, o sistema buscar as strings no arquivo values-pt/strings.xmle

    aquelas strings no encontradas (por exemplo, o ttulo da aplicao, que igual

    em todas as lnguas) so buscadas no arquivo values/strings.xml.

    Depois de pronta, foi atribuda uma verso (1.0) para a aplicao no

    arquivo de manifesto (AndroidManifest.xml). E, para possibilitar a sua instalaoem um dispositivo, a aplicao foi assinada digitalmente. Para assinar a

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    38/50

    32

    aplicao, foi utilizado o assistente de exportao do plugin ADT (veja

    Figura 23), que executa todas as aes necessrias, inclusive criando um

    keystore(repositrio de chaves e certificados), se preciso.

    Figura 23: Assistente de exportao

    Em complemento, todos os cdigos implementados foram devidamente

    comentados e esto disponveis, juntamente com os recursos (imagens e sons)

    utilizados, no CD que integra este relatrio e tambm no sitehttp://www.icad.puc-rio.br/~projetos/android.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    39/50

    33

    6.2 Testes realizados

    Primeiramente, os testes foram realizados no emulador, ferramenta

    disponvel no SDK. O emulador, mostrado na Figura 24, um dispositivo mvel

    virtual executado no computador que simula as configuraes reais tpicas dehardware e software de um smartphone com Android.

    Figura 24: Emulador

    Para testar o funcionamento do GPS, simulando a mudana de localizao

    do dispositivo, foi utilizada a ferramenta DDMS, para enviar coordenadas

    geogrficas para uma instncia do emulador em execuo. Estas coordenadas

    fictcias foram geradas utilizando outro programa, o Google Earth. Nele, uma

    rota foi criada e gravada em um arquivo .kmlque depois foi importado em um

    painel da DDMS(veja Figura 25) para facilitar os testes.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    40/50

    34

    Figura 25: Ferramenta DDMS

    No final do trabalho, depois de ter a aplicao funcionando bem no

    emulador, ela foi testada em um dispositivo real. Para tanto, foi utilizado o

    smartphone Samsung Galaxy (veja Figura 26) cujas especificaes esto

    detalhadas no Apndice 5.

    Figura 26: Smartphone Samsung Galaxy

    Os primeiros testes no dispositivo real foram realizados para verificar se as

    telas e o funcionamento bsico vistos no emulador seriam reproduzidos

    corretamente. Depois, aconteceu o teste do reconhecimento de chacoalhada,que utiliza o sensor de movimento do dispositivo (acelermetro). Para tanto, foi

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    41/50

    35

    utilizada a ferramenta adb, disponvel no SDK, que permite depurar uma

    aplicao em fase de desenvolvimento em um dispositivo real, conectado ao

    computador atravs de sua porta USB. Este teste foi essencial para ajustar o

    sensor adequadamente.

    Durante os testes no dispositivo, foi experimentado tambm outro provedor

    de localizao alm do GPS: a rede da operadora de telefonia mvel. Porm,

    apesar da mesma ser rpida e estar disponvel, inclusive em ambientes

    fechados, se mostrou extremamente imprecisa, como j era esperado. Em

    alguns casos, a posio informada distava mais de 500 metros da posio real,

    algo inaceitvel para o contexto desta aplicao. Ento, o GPS permaneceu

    como nico provedor de localizao utilizado na aplicao, apesar deste s ter

    tido possibilidade de uso em ambientes abertos.

    O teste funcional total da aplicao, incluindo o monitoramento utilizando o

    GPS, foi, posteriormente, executado, exclusivamente, no dispositivo, em um

    ambiente externo (para obter uma melhor recepo do GPS). Por fim, os

    resultados de todos os testes realizados foram bastante satisfatrios: todas as

    funes presentes no aplicativo funcionam adequadamente.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    42/50

    36

    7. Consideraes finais

    O presente trabalho procurou destacar o bom momento do mercado de

    telefonia mvel, no qual se encontra os smartphones, e a importncia de

    novidades como o Android neste cenrio. Foram demonstradas as principaiscaractersticas desta plataforma e como as ferramentas de desenvolvimento

    disponveis podem ser utilizadas na construo de uma aplicao real para ela.

    Portanto, o contedo apresentado ser til aos interessados no desenvolvimento

    de aplicativos para dispositivos mveis, especialmente aqueles equipados com a

    plataforma Android.

    A realizao do trabalho possibilitou um grande aprendizado na plataforma

    Android. Alm disto, foram assimilados importantes conceitos relacionados com

    a rea de dispositivos mveis, a qual possui caractersticas bem singulares. E,por fim, permitiu a aplicao do conhecimento adquirido durante o curso de

    graduao na construo de um artefato real, com utilidade prtica.

    Como visto ao longo do texto, aos interessados na rea, a plataforma

    Android representa uma boa oportunidade, pois fornece muitas facilidades para

    o desenvolvedor criar aplicaes interessantes. Alm disto, atualmente j

    possvel encontrar uma boa bibliografia sobre ela. E, quanto ao mercado, a

    possibilidade de estar em diferentes dispositivos, de diversos fabricantes, tem

    feito aumentar muito a quantidade de seus usurios. Vale lembrar que, quando a

    proposta deste trabalho foi redigida, havia apenas um modelo de dispositivo

    equipado com Android. Hoje, menos de um ano depois, j so mais de dez.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    43/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    44/50

    38

    OHA. Alliance Overview. Disponvel em:

    . Acesso em: 20

    mar. 2009a.

    OHA. Android Overview. Disponvel em: . Acesso em: 20 mar. 2009b.

    OHA. The Developer's Guide. Disponvel em:

    . Acesso em: 20 mar.

    2009c.

    SUN. The Java Tutorials. Disponvel em:

    . Acesso em: 6 jun. 2009.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    45/50

    39

    Apndices

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    46/50

    40

    A1: Cronograma

    Projeto Final I Projeto Final II

    Tarefa Mar/09 Abr/09 Mai/09 Jun/09 Ago/09 Set/09 Out/09 Nov/091 X X X2 X X3 X X4 X5 X X6 X X X X7 X X X8 X

    1 - Estudo da plataforma Android

    2 - Estudo de acelermetro e GPS com Google Maps3 - Anlise e escolha das ferramentas que sero utilizadas

    4 - Anlise de possveis aplicaes

    5 - Especificao do sistema

    6 - Implementao e reviso da aplicao

    7 - Testes no emulador

    8 - Testes no aparelho

    Observao:

    Os testes no aparelho estavam previstos, inicialmente (Projeto Final I), para os

    meses de outubro e novembro. Entretanto, foram feitos apenas no ms de

    novembro, pois dependiam da disponibilidade de um aparelho, o qual foi obtido

    efetivamente em novembro.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    47/50

    41

    A2: Banco de dados (modelo e comandos SQL)

    - _id : int

    -name : string-date : string-time : string-speed : float-distance : float

    Routes

    - _id : int-route_id : int-latitude : int-longitude : int

    Points

    1 2..*

    Criar tabelas de rotas e de pontoscreate table routes (_id integer primary key autoincrement, name

    text, date text, speed float, distance float, time text)create table points (_id integer primary key autoincrement,

    route_id integer, latitude integer, longitude integer)

    Selecionar uma rota (sem seus pontos)select * from routes where _id = id_rota

    Selecionar dados identificadores de todas as rotas em ordem decrescenteselect _id, name, date from routes orderby _id desc

    Selecionar pontos de uma rotaselect * from points where route_id = id_rota orderby _id

    Adicionar uma rotainsert into table routes (name, date, speed, distance, time)values (nome, data, velocidade, distncia, tempo)

    insert into table points (route_id, latitude, longitude)values (id_rota, latitude_ponto1, longitude_ponto1)

    insert into table points (route_id, latitude, longitude)values (id_rota, latitude_ponto2, longitude_ponto2)

    (...)

    insert into table points (route_id, latitude, longitude)values (id_rota, latitude_pontoN, longitude_pontoN)

    Renomear uma rotaupdate routes set name = novo_nome where _id = id_rota

    Apagar uma rotadelete from points where route_id = id_rotadelete from routes where _id = id_rota

    Apagar todas as rotasdelete * from routesdelete * from points

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    48/50

    42

    A3: Texto da tela de ajuda

    O que ?

    MyRoute uma aplicao que permite monitorar uma rota. Quando o

    monitoramento acionado, utilizando o GPS e acessando a internet, exibe a sua

    rota em um mapa juntamente com sua velocidade, distncia e tempo.

    Como usar?

    Selecione Iniciarpara dar incio a um novo monitoramento. Este continuar

    ativo, mesmo se a tela for fechada, at que seja selecionado Parar. Quando

    desativado, a rota ser armazenada automaticamente. Selecione Continuarpara

    reabrir uma tela fechada anteriormente.

    Selecione Abrire ser exibida uma lista com todas as rotas armazenadas.

    Escolha a rota desejada para visualizar seus detalhes. Nesta tela tambm

    possvel apagar e modificar o nome das rotas.

    Como customizar?

    Na tela de preferncias possvel modificar a preciso do GPS (reduzir a

    preciso ajuda a economizar energia). Voc tambm pode modificar a unidadede medida e os alertas.

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    49/50

  • 8/6/2019 to de Aplicativo Para Smart Phone Com a ma Android

    50/50