CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTÔNIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS DIOGO OLIVA BERTIN LEONARDO AUDI BARROS APLICAÇÃO PARA DISPOSITIVO MÓVEL COM INTEGRAÇÃO AO FACEBOOK PARA IDENTIFICAÇÃO DE PONTOS TURÍSTICOS LINS/SP 2° SEMESTRE/2013 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTÔNIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS DIOGO OLIVA BERTIN LEONARDO AUDI BARROS APLICAÇÃO PARA DISPOSITIVO MÓVEL COM INTEGRAÇÃO AO FACEBOOK PARA IDENTIFICAÇÃO DE PONTOS TURÍSTICOS Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo em Banco de Dados. Orientador: Prof. Me. Anderson Pazin. LINS/SP 2° SEMESTRE/2013 DEDICATÓRIA Em primeiro lugar, dedicamos este trabalho a Deus, por esta grande conquista e pela sua ajuda nos momentos de grandes dificuldades. Além disso, dedicamos a nossa família que nos incentivou e motivou a seguir sempre em frente. Diogo Oliva Bertin Leonardo Audi Barros AGRADECIMENTO Neste momento de grande importância em nossas vidas, não podemos deixar de expressar nossos agradecimentos às pessoas que de alguma maneira contribuíram para que esse sonho fosse realizado. Agradecemos especialmente ao nosso orientador, Prof. Me. Anderson Pazin, que sempre nos ajudou e esteve presente em todas as vezes que precisamos. Agradecemos ao professor Fábio Lucio Meira, que nos ajudou a florescer a ideia deste trabalho. Aos professores(as) Adriana de Bortoli, Alexandre Ponce e Luciane Noronha pela correção do nosso trabalho e pela grande motivação e incentivo para a finalização deste. E por fim, aos nossos amigos de turma pela amizade, ajuda e confiança. “Paciência e perseverança tem o efeito mágico de fazer as dificuldades desaparecerem e os obstáculos sumirem.” John Quincy Adams RESUMO Pesquisas apontam que a Copa do Mundo de 2014 trará ao Brasil um grande número de turistas, além dos próprios brasileiros que irão para as cidades sedes dos jogos para prestigiar este grande evento mundial. Dessa maneira, está acontecendo também a grande expansão na venda de smartphones, cujo número de aparelhos deverá ultrapassar, no final de 2013, os 7 bilhões de linhas ativas. Este fato deve-se a necessidade dos consumidores em navegar na Internet, acessar aplicativos e utilizar os diversos serviços disponíveis nestes dispositivos. Dentre as aplicações mais utilizadas em smartphones e, também, acessível de qualquer dispositivo com acesso à Internet temos as redes sociais, que são atualmente os sites mais acessados. Sendo assim, a finalidade deste trabalho é o desenvolvimento de um aplicativo para a plataforma Android, que apresente os pontos turísticos das cidades sedes da Copa do Mundo de 2014 e que seja capaz de se comunicar com a API do Google Maps e do Facebook e com um servidor remoto para armazenar comentários dos utilizadores desse aplicativo. Para a implementação do aplicativo proposto foram utilizados a linguagem de programação Java, banco de dados SQLite e MySQL e a API do Google Maps e do Facebook. Palavras-chave: dispositivos móveis, Android, redes sociais, Java, API. ABSTRACT Research indicates that the World Cup 2014 in Brazil will bring a large number of tourists, besides the Brazilians themselves who will go to the headquarters of the games cities to honor this great world event. Thus, it is also happening in the booming smartphone sales, the number of devices expected to exceed, in late 2013, the 7 billion active lines. This fact is due to the need of consumers to surf the Internet, access applications and use the various services available on these devices. Among the most used applications on smartphones and also accessible from any device with Internet access have social networks, which are currently the most accessed sites. Thus, the purpose of this work is to develop an application for the Android platform, presenting the sights of the host cities of the 2014 World Cup and is able to communicate with the Google Maps API and Facebook and a remote server to store user comments that application. To implement the proposed application to the Java programming language, database SQLite and MySQL and Google Maps API and Facebook were used. Keywords: mobile devices, Android, social networking, Java API. LISTA DE ILUSTRAÇÕES Figura 1.1 – Arquitetura Android. .............................................................................. 20 Figura 1.2 – Objeto JSON. ........................................................................................ 26 Figura 1.3 – Objeto JSON. ........................................................................................ 26 Figura 1.4 – Array JSON. .......................................................................................... 26 Figura 1.5 – Valor JSON. .......................................................................................... 27 Figura 1.6 – String JSON. ......................................................................................... 27 Figura 1.7 – Arquitetura dos Web Services. .............................................................. 28 Figura 1.8 – Arquitetura da Aplicação. ...................................................................... 28 Figura 2.1 – Guia Quatro Rodas 1001 Lugares......................................................... 30 Figura 2.2 – SPMobile. .............................................................................................. 31 Figura 2.3 – Turismo Bento. ...................................................................................... 32 Figura 2.4 – Diagrama de Classe. ............................................................................. 34 Figura 2.5 – Diagrama de Classe do banco de dados SQLite. ................................. 35 Figura 2.6 – Diagrama de Classe do banco de dados MySQL.................................. 35 Figura 2.7 – Diagrama de Caso de Uso. ................................................................... 35 Figura 2.8 – Diagrama de Atividade. Inserir Comentário. .......................................... 36 Figura 2.9 – Diagrama de Atividade. Excluir Comentário. ......................................... 36 Figura 2.10 – Diagrama de Atividade. Alterar Comentário. ....................................... 37 Figura 2.11 – Diagrama de Atividade. Responder Comentário. ................................ 37 Figura 2.12 – MVC. Manter Comentários. ................................................................. 38 Figura 2.13 – Diagrama de Sequência. Inserir Comentário. ..................................... 38 Figura 2.14 – Diagrama de Sequência. Excluir Comentário. ..................................... 38 Figura 2.15 – Diagrama de Sequência. Alterar Comentário. ..................................... 39 Figura 2.16 – Diagrama de Sequência. Listar Comentários. ..................................... 39 Figura 2.17 – Diagrama de Atividade. Mostrar Ponto Turístico. ................................ 40 Figura 2.18 – Diagrama de Atividade. Traçar Rota. .................................................. 40 Figura 3.1 – Ícone do aplicativo, tela de carregamento e tela inicial. ........................ 41 Figura 3.2 – Tela da lista de cidades e da Info. ......................................................... 42 Figura 3.3 – Pesquisa por ponto turístico. ................................................................. 42 Figura 3.4 – Tela de uma cidade e a lista de pontos turísticos da mesma. ............... 43 Figura 3.5 – Tela da descrição e das fotos de um ponto turístico. ............................ 43 Figura 3.6 – Tela do mapa do ponto turístico. ........................................................... 44 Figura 3.7 – Tela de autenticação do Facebook. ...................................................... 44 Figura 3.8 – Tela de comentários e seus possíveis erros. ........................................ 45 Figura 3.9 – Realizar comentário. ............................................................................. 45 Figura 3.10 – Publicação no Facebook. .................................................................... 46 Figura 3.11 – Todos Comentários. ............................................................................ 46 Figura 3.12 – Meus Comentários. ............................................................................. 47 Figura 3.13 – Pagina autor comentário. .................................................................... 47 Figura 3.14 – Método para inserir Comentário no servidor. ...................................... 48 Figura 3.15 – Método para abrir e fechar banco de dados local. .............................. 48 Figura 3.16 – Método listar todas cidades. ................................................................ 49 Figura 3.17 – Método exibir mensagens. .................................................................. 49 Figura 3.18 – Método exibir mensagens. .................................................................. 50 Figura 3.19 – Código xml da tela de abertura do aplicativo. ..................................... 50 Figura A.1 – Página de download da IDE do Eclipse. ............................................... 55 Figura A.2 – Página de downloads do JDK. .............................................................. 56 Figura A.3 – Página de download do SDK do Android. ............................................. 56 Figura A.4 – SDK Manager. ...................................................................................... 57 Figura A.5 – Criando uma máquina virtual Android no AVD Manager. ..................... 58 Figura A.6 – Adicionando plug-in do Android ao Eclipse. .......................................... 60 Figura A.7 – Criação de um projeto Android. ............................................................ 61 Figura A.8 – Criação de um projeto Android. ............................................................ 61 Figura A.9 – Criação de um projeto Android. ............................................................ 62 Figura A.10 – Criação de um projeto Android. .......................................................... 63 Figura A.11 – Código inicial de um projeto Android. ................................................. 63 Figura A.12 – Aplicativo compilado pela máquina virtual. ......................................... 64 Figura B.1 – Criando um projeto no Google Cloud.................................................... 65 Figura B.2 – API Google Maps Android habilitada. ................................................... 66 Figura B.3 – Registrando novo aplicativo Google Cloud. .......................................... 66 Figura B.4 – Facebook Developers. .......................................................................... 67 Figura B.5 – Estrutura do projeto Mapas. .................................................................. 67 Figura B.6 – Adicionando a biblioteca do Google Service ao projeto. ....................... 68 Figura B.7 – Permissões no AndroidManifest.xml. .................................................... 68 Figura B.8 – APP Key AndroidManifest.xml. ............................................................. 68 Figura B.9 – Código classe Principal. ........................................................................ 69 Figura B.10 – Código principal.xml. ........................................................................... 69 Figura B.11 – Código classe Mapa. .......................................................................... 69 Figura B.12 – Código mapa.xml. ............................................................................... 70 Figura B.13 – Tela do Exemplo Mapas. .................................................................... 70 Figura C.1 – Facebook Developers. .......................................................................... 71 Figura C.2 – Opção de Criar Novo Aplicativo Facebook. .......................................... 71 Figura C.3 – Configurações básicas API Facebook. ................................................. 72 Figura C.4 – Configurações básicas API Facebook. ................................................. 73 Figura C.5 – Estrutura do projeto APIFacebook. ....................................................... 73 Figura C.6 – Adicionando a biblioteca do Facebook ao projeto. ............................... 74 Figura C.7 – Código para acessar e recuperar o nome do Facebook. ...................... 74 Figura C.8 – Código da tela activity_main.xml. ......................................................... 75 Figura C.9 – Telas do exemplo em funcionamento. .................................................. 75 LISTA DE ABREVIAÇÕES E SIGLAS API - Applications Programming Interface DVM - Dalvik Virtual Machine GPL - General Public License GPS - Global Positioning System HTTP - Hypertext Transfer Protocol JSON - Java Script Object Notation OHA - Open Handset Alliance PHP - Hypertext Preprocessor SAAS - Software as a Service SDK - Software Development Kit SGBD - Sistema de Gerenciamento de Banco de Dados SOAP - Simple Object Access Protocol SQL - Structured Query Language UID - Unix User Identification URL - Uniform Resource Locator XML - eXtensible Markup Language SUMÁRIO INTRODUÇÃO ..................................................................................... 13 1 TECNOLOGIAS ENVOLVIDAS ......................................................... 15 1.1 MYSQL ................................................................................................................ 15 1.2 SQLITE................................................................................................................ 17 1.3 ANDROID ............................................................................................................ 18 1.3.1 Versão 1.0 ........................................................................................................ 21 1.3.2 Versão 1.5 (Cupcake)....................................................................................... 21 1.3.3 Versão 1.6 (Donut) ........................................................................................... 21 1.3.4 Versão 2.0/2.1 (Eclair) ...................................................................................... 22 1.3.5 Versão 2.2 (Froyo) ........................................................................................... 22 1.3.6 Versão 2.3 (Gingerbread) ................................................................................. 22 1.3.7 Versão 3.0 (Honeycomb).................................................................................. 22 1.3.8 Versão 4.0 (Ice Cream Sandwich) .................................................................... 23 1.3.9 Versão 4.1/4.2/4.3 (Jelly Bean) ........................................................................ 23 1.3.10 Versão 4.4 (Kit Kat) ........................................................................................ 23 1.4 API FACEBOOK .................................................................................................. 23 1.5 API GOOGLE MAPS ........................................................................................... 25 1.6 JAVA SCRIPT OBJECT NOTATION (JSON) ...................................................... 25 1.7 WEB SERVICE ................................................................................................... 27 2 ANÁLISE E PROJETO DO SISTEMA ............................................... 30 2.1 ANÁLISE DE MERCADO .................................................................................... 30 2.1.1 Guia Quatro Rodas 1001 Lugares .................................................................... 30 2.1.2 SPMobile .......................................................................................................... 31 2.1.3 Turismo Bento .................................................................................................. 32 2.2 ATORES E ENVOLVIDOS NO PROCESSO ...................................................... 33 2.3 PERSPECTIVA DO PRODUTO .......................................................................... 33 2.4 CARACTERÍSTICAS ........................................................................................... 33 2.5 ANÁLISE DE REQUISITOS ................................................................................ 34 2.6 DIAGRAMA DE CLASSE .................................................................................... 34 2.7 DIAGRAMA DE CASO DE USO ......................................................................... 35 2.8 ESPECIFICAÇÕES DE HISTÓRIAS E DIAGRAMAS ......................................... 36 2.8.1 Manter Comentário ........................................................................................... 36 2.8.2 Manter Mapa .................................................................................................... 39 3 IMPLEMENTAÇÃO ........................................................................... 41 3.1 INTERFACE GRÁFICA ....................................................................................... 41 3.1.1 Tela Principal.................................................................................................... 41 3.1.2 Tela Cidades .................................................................................................... 42 3.1.3 Tela Pontos Turísticos ...................................................................................... 43 3.2 DISCUSSÃO DO CÓDIGO-FONTE .................................................................... 47 CONCLUSÃO ....................................................................................... 51 REFERÊNCIAS BIBLIOGRÁFICAS ..................................................... 52 APÊNDICE A – INSTALAÇÃO E CONFIGURAÇÃO DO SDK E ADT DO ANDROID E DA IDE DO ECLIPSE ...................................................... 55 APÊNDICE B – CONFIGURAÇÃO DA API DO GOOGLE MAPS ......... 65 APÊNDICE C – CONFIGURAÇÃO DA API DO FACEBOOK ............... 71 13 INTRODUÇÃO A presença da tecnologia pode ser evidenciada no uso cotidiano de diversos dispositivos portáteis, como por exemplo, smartphones e tablets. Esses dispositivos permitem acesso à Internet por meio de comunicação sem fio e graças a isso, é possível ter acesso à informação e a qualquer tipo de serviço independentemente da localização (TONIN, 2012). A evolução desses dispositivos tem acirrado a briga entre os fabricantes, devido à grande diversidade de hardware e software, sendo que um dos principais componentes analisados para a aquisição de um dispositivo é o sistema operacional. (MOREIRA, 2012) Segundo o site G1(2012), dentre os sistemas móveis o que tem maior participação no mercado é o Android, que está presente em 68,3% dos dispositivos em todo o mundo em uma pesquisa realizada em 2012, apontando ainda que esse mercado será dominante até 2016, prevendo que estará em 63,8% dos dispositivos móveis. Mostra-se também que esses números estão diretamente relacionados aos vários parceiros que a Google possui no desenvolvimento do Android, gerando um amplo número de modelos de smartphones e tablets. Outra ferramenta que se tornou popular em proporções maiores que os sistemas móveis são as redes sociais. Um mecanismo que tem por finalidade a interação de pessoas pela Internet, compartilhando fotos, vídeos e informações, tornando quase uma necessidade publicar para a rede de amigos. (DAQUINO, 2012) Enfim, com a popularidade dos sistemas móveis, no qual se tornou possível ter acesso à Internet e a aplicações de diversos seguimentos, as redes sociais se tornaram mais utilizadas e importantes para o relacionamento pessoal, pois de onde quer que o usuário esteja ele poderá ter acesso, compartilhando ou vendo informações de seus amigos. Aproveitando o momento atual, em que o Brasil será sede da Copa do Mundo de Futebol em 2014, o objetivo deste trabalho é o desenvolvimento de um aplicativo para Android, que reúnem os principais pontos turísticos das doze cidades que irão sediar o evento. A proposta é que o usuário possa ter acesso a informações sobre os pontos turísticos, tais como: descrições, mapas de como chegar, a partir da localização geográfica, ver fotos, ler e fazer comentários, que se integrarão a rede 14 social Facebook e a aplicação. Desta forma, o usuário terá informações pertinentes sobre os pontos turísticos antes de conhecê-los efetivamente. Esse trabalho justifica-se pelo crescente número de usuários que utilizam os sistemas móveis, sendo que a maioria desses contam com grande facilidade ao acesso à Internet, no qual torna-se fácil e rápida a busca por informações. Além disso, busca-se mostrar aos turistas um pouco da beleza que cada cidade sede tem a oferecer. No primeiro capítulo estão descritas todas as tecnologias utilizadas, dispondo sobre o Android, Applications Programming Interface (API) utilizadas e também a forma de armazenamento dos dados. O segundo capítulo traz a análise e o projeto do sistema, descreverá a análise de mercado, em que estão contidos alguns exemplos de aplicações, que serviram de ideias para o desenvolvimento deste, e mostra os requisitos e diagramas, que serviram de base para o desenvolvimento desta aplicação. O terceiro capítulo aborda a aplicação pronta, exemplificando o funcionamento de cada funcionalidade através de imagens e códigos, comentando cada uma deles. Iniciou-se o desenvolvimento do projeto com o levantamento da literatura, métodos e forma de desenvolvimento. No passo seguinte, coletou-se e analisou-se os dados para que o sistema supra a necessidade do usuário. Feita a análise dos dados, deu-se início ao desenvolvimento do software, desde o banco de dados até a aplicação, realizando testes, para corrigir possíveis erros. Ao final elaborou-se um relatório com todas as funcionalidades. 15 1 TECNOLOGIAS ENVOLVIDAS Este capítulo descreve as tecnologias que serão necessárias para o desenvolvimento do trabalho. 1.1 MYSQL Em 1996 na Suécia os amigos Allan Larson, David Axmark e Michael Monty Widenius, sentiram a necessidade de um mecanismo que permitisse fazer conexões entre tabelas, e para isso usaram o mSQL, ou Mini SQL, que segundo o site Hughes Technologies, é um banco de dados SQL, que possui bom desempenho e uso da memória, além da portabilidade; porém perceberam que essa ferramenta não lhes atendiam, então passaram a trabalhar em uma solução própria, assim surgiu o MySQL no mesmo ano. Em 2008, o MySQL foi comprado pela Sun Microsystems. (ALECRIM, 2008) O MySQL é um dos Sistemas Gerenciador de Banco de Dados (SGBD) relacionais mais populares, além de ser um banco de dados, que tem a finalidade de armazenar uma coleção de dados estruturados. Um banco de dados relacional armazena dados em tabelas distintas em vez de colocar todos em apenas um local, no qual se proporciona velocidade e flexibilidade. A linguagem utilizada pelo MySQL é a Structured Query Language (SQL), que é uma linguagem de consulta usada para manipular o banco de dados. O MySQL possui duas licenças, no qual uma é livre que usa a General Public License (GPL), o que significa que qualquer um pode estudá-lo ou alterá-lo conforme a necessidade, no qual deve-se apenas de atentar a licença que define o que pode ou não fazer no software em diferentes situações, e a outra paga, projetada inicialmente para trabalhar com aplicações de pequeno e médio porte, porém hoje atende também sistemas de grande porte, no qual oferece mais vantagens que a livre. (ALECRIM, 2008) É comum encontrar serviços de hospedagem que ofereçam o MySQL, pois está disponível para qualquer sistema operacional e para servidores. O servidor de banco de dados MySQL é rápido, confiável e fácil de usar, no qual vários recursos foram desenvolvidos em cooperação com usuários. O servidor MySQL foi desenvolvido originalmente para manipular banco de dados muito grandes de 16 maneira rápida e eficiente, usado em ambientes de produção de alta demanda. Hoje oferece um conjunto de funções, dentre elas a conectividade, velocidade e a segurança, que faz com que o MySQL seja altamente adaptável para acessar o banco de dados na Internet. (MAFFEI, 2011) As características fundamentais são o desempenho, por ser multitarefa, multiusuário e possuir suporte a multithreads, que significa que se pode usar múltiplos processadores, se disponível. Por ser escrito totalmente na linguagem C e C++, permite funcionar em diversas plataformas de sistemas operacionais. O SQL utilizado é altamente veloz, devido ao fato de ter sido implementado por meio de uma biblioteca de classes, com códigos e funções altamente otimizadas, essa característica tem como consequência uma grande vantagem, que é a velocidade na execução dos códigos SQL e uma desvantagem é que nem todos os padrões da versão mais atual do SQL foram implementados no MySQL, assim podendo comprometer a velocidade do banco de dados. (MAFFEI, 2011) O SGBD MySQL disponibiliza vários tipos de tabelas para o armazenamento de dados, no qual cada tipo possui suas próprias características. A vantagem dessa variedade de tabelas é a possibilidade de escolher o tipo em cada situação diferente. Enquanto um tipo prioriza velocidade, outro prioriza volume de dados. Para o volume de dados, esse SGBD possui alto poder de execução e armazenamento, no qual fica se limitado somente ao tamanho máximo de arquivos com que a plataforma pode manipular. Disponibiliza também criar tabelas hash em memória que são usadas como tabelas temporárias. (MAFFEI, 2011) Ainda mais, o MySQL possui componentes de segurança contra ameaças externas e também protege os dados dos próprios usuários, para isso apresenta vários níveis de segurança em relação ao acesso e utiliza um sistema de senhas e privilégios que é muito flexível. Outro componente de segurança são as conexões que trabalham com criptografia no tráfego de senhas, quando se conecta ao servidor. Ainda, em complemento ao uso de autenticação baseado em senhas, é possível habilitar uma espécie de firewall de autenticação, responsável por habilitar as conexões somente para estações e domínios especificados em uma lista de acesso. (MILANI, 2007) O MySQL possui várias vantagens dentre elas, pode-se ressaltar: a baixa exigência de processamento, se comparado com outros SGBD e recursos como 17 transações, conectividade segura, indexação de campos de texto, consistência e suporte a diversos idiomas para mensagens de erro. E também possui desvantagens como: não suporte a um tamanho muito grande do banco de dados de uma forma eficiente, as versões inferiores não possuem recursos que são necessários como stored procedure e commit, a forma como armazenam dados, pois quando é criado um banco de dados o MySQL cria uma pasta e conforme são adicionadas tabelas é criado um arquivo dentro da pasta com o nome da tabela, com isso não existe nada que impeça que qualquer um tenha acesso e possa apagar o banco inteiro que estará contido em apenas uma tabela, não executa backup consistente com a base de dados que está online, se atualizações estiverem sendo efetuadas, não tem recurso contra falhas no desligamento do banco durante a atualização de dados e não verifica as restrições de integridade referencial por padrão. (MILANI, 2007) 1.2 SQLITE O SQLite é um biblioteca desenvolvida na linguagem de programação C, que implementa um banco de dados que utiliza a linguagem de consulta SQL. O SQLite é considerado um pequeno SGBD, pois não possui ferramentas robustas em recursos para receber um grande volume de dados, mas essa falta de recursos faz com que seja uma ferramenta prática, forte, consistente e rápida, no qual se recomenda apenas para aplicações que a simplicidade da administração, implementação e manutenção são mais importantes. Basicamente o SQLite é utilizado em aplicações móveis e embarcadas. (GONÇALVES, 2010) Esse SGBD pode ser livremente distribuído, e seu código pode ser manipulado conforme a necessidade, seguindo uma licença de uso, além de ser bem documentado, para quem quer conhecer um SGBD por dentro. Não necessita instalação, configuração ou administração, além de ser independente de uma estrutura cliente-servidor e possuir instruções transacionais como o commit e o rollback, comandos que são utilizados respectivamente, para salvar o banco de dados e para restaurar o mesmo até o último ponto salvo. (DALL'OGLIO, 2007) Assim como qualquer banco de dados o SQLite permite armazenar e manipular dados, mas a forma de armazenamento é bem diferente se comparada 18 com outros. O SQLite realiza a leitura e a escrita dos dados diretamente em arquivos locais, juntamente com a aplicação, sendo capaz de manter diversas tabelas nele, ou seja, um banco de dados completo contido em um único arquivo de disco, no qual é capaz de armazenar terabytes de dados. Esse arquivo gerado, além de possuir tamanho pequeno com todos seus recursos ativados, possui um formato capaz de ser executado em qualquer plataforma de sistema operacional e através de sua conexão é possível integrá-lo a diversos programas escritos em diferentes linguagens. (DALL'OGLIO, 2007) O SQLite se baseia na simplicidade e confiabilidade, no qual a simplicidade deve-se ao fato do SQLite sacrificar recursos e características, como alta concorrência, controle de acesso e procedimentos armazenados e a confiabilidade se deve a praticidade em operar o banco, assim com menos complicação, menos chance de dar errado. Então antes de escolher o SQLite deve-se verificar a finalidade do banco e se todos os recursos necessários terá disponível. (ABOUT SQLITE, 2013) Esse SGBD possui algumas desvantagens, das quais pode se ressaltar que, não possui integridade referencial, ou seja, chave estrangeira que segundo Aguiar (2012) é responsável por referenciar duas tabelas quando uma delas possuir mais de uma vez a referência da outra. Além disso, não é recomendado para uso em sistemas ou aplicações web de grande porte. O SQLite é mais utilizado em aplicações embarcadas e em sistemas móveis, justamente por ser leve, rápido e por ler e gravar todos os dados localmente. (ABOUT SQLITE, 2013) 1.3 ANDROID Em 2003 na Califórnia – EUA, Andy Rubin, Rich Miner, Nick Sears e Chris White fundaram a Android, Inc. Uma empresa que desenvolvia sistemas operacionais para celulares baseados em Linux, mas todos seus projetos eram secretos. Em 2005, a Google, com o intuito de desenvolver uma nova plataforma para dispositivos móveis, comprou a Android Inc. (MARTINS, 2011) Com o objetivo de desenvolver um sistema operacional barato, resolveram criar uma plataforma gratuita, com isso basearam-se em Linux, assim proporcionouse uma estrutura flexível e atualizável, chamando-o de Android. (MARTINS, 2011) 19 Quando o Android estava em desenvolvimento, todos seus processos foram pensados para conseguir tornar os celulares que tivessem esta plataforma mais baratos. Com esse objetivo fizeram do Android uma plataforma aberta e totalmente gratuita, na qual qualquer pessoa pode ter acesso e modificá-la conforme a necessidade e sendo assim, foi atraído um grande número de parceiros. Segundo Lecheta (2010), estes parceiros formam um grupo denominado Open Handset Alliance (OHA), que liderados pela Google, são responsáveis pelo desenvolvimento do Android. Este grupo, segundo o próprio site da OHA, atualmente é formado por 84 empresas de tecnologia móvel que se uniram com o propósito de desenvolver uma plataforma moderna, flexível e abrangente. Segundo Tanenbaum (2000) arquitetura é um conjunto de operações e tipos de dados, em que a do Android é referenciada como uma pilha de softwares, no qual cada camada dessa pilha suporta funções específicas do sistema. Na base da pilha está o kernel, assim como no Linux, pois o Android foi construído a partir da versão 2.6 do sistema, em que foram incluídos softwares de gerenciamento de memória e de energia, configurações de segurança e vários drivers de hardware. A camada seguinte inclui bibliotecas C/C++, que são um conjunto de instruções que mostra ao dispositivo como lidar com diferentes tipos de dados, como suporte a 2D e 3D e a formatos de áudio e vídeo. Ainda nesse nível temos a camada de tempo de execução do sistema, que inclui uma máquina virtual chamada Dalvik Virtual Machine (DVM), usada para cada aplicação ter seu próprio processo. Esta máquina é uma otimização da máquina virtual da linguagem Java, a diferença é que após gerar, depois da compilação, o arquivo .class, a DVM converte este para um arquivo com extensão .dex que é nativa do Android, e este por sua vez gera consumo mínimo de memória. Este mecanismo também faz com que o sistema consiga executar vários aplicativos simultaneamente, e gera um código único a cada aplicação, para que nenhuma dependa da outra, assim se uma aplicação para, ela não afeta quaisquer outras aplicações que estão em execução no dispositivo. A DVM utiliza funções do kernel, como gerenciamento de memória a baixo nível e executa os aplicativos em baixa frequência, devido à pouca memória disponível nos dispositivos móveis. (STRICKLAND, 2009) Seguindo na pilha temos a camada de framework de aplicação, no qual são 20 incluídos os programas que gerenciam as funções básicas do sistema, como alocação de recursos, aplicações de telefone, mudança entre processos ou programas e acesso a localização física do aparelho. Essa camada é acessível aos desenvolvedores de aplicações e que por sua vez possuem acesso total a ela, no qual possibilita construir aplicações complexas que suportem diversos recursos e que possam tirar proveito da capacidade de processamento do sistema. (STRICKLAND, 2009) A última camada possui as aplicações, na qual estão localizadas as funções básicas do dispositivo, como acessar o navegador web ou as aplicações. É apenas a essa camada que o usuário final terá acesso, utilizando uma interface gráfica (STRICKLAND, 2009). A arquitetura do Android está representada da figura 1.1. Figura 1.1 – Arquitetura Android. Fonte: Perboni, 2013. Com a grande disseminação do Android e da Internet nos smartphones e tablets, também começou a se discutir a segurança, pois é um dos fatores que mais está em pauta nos dias atuais. Segundo uma reportagem do jornal Folha de São Paulo (2012) o sistema Android é o mais vulnerável a ataques. Como segurança o Android implementa o conceito de Unix User Identification (UID), no qual o UID é alocado à aplicação e não a uma pessoa, para isolar assim uma aplicação da outra, cada uma com permissões de uso distintas. As permissões são direitos cedidos às 21 aplicações para usar o Global Positioning System (GPS) ou até mesmo para tirar fotos. O grande problema é que cabe ao usuário decidir se determinada aplicação pode fazer uma operação, e é ele também que decide se quer instalar uma aplicação ou não, pois é possível fazer o download direto de um computador e depois instalar no Android, no qual é o usuário que determina a confiabilidade do autor. As aplicações confiáveis estão à disposição para download na loja de aplicativos da Google, a Google Play, são retirados da loja aplicativos com fins maliciosos ou que podem danificar o aparelho, mas estas podem ficar disponíveis na Internet, podendo ser instaladas pelo usuário sem nenhum impedimento. (TAURION, 2010) Outro problema em relação à segurança é que o Android, por possuir código aberto, é possível atualizar o firmware, o sistema, com atualizações não oficiais, feitas por qualquer desenvolvedor, assim o sistema poderá estar de portas abertas para possíveis fins maliciosos. (TAURION, 2010) 1.3.1 Versão 1.0 O primeiro aparelho Android, foi o HTC Dream G1, que foi lançado em 2008. Possuía funcionalidades bem avançadas para época, como janela de notificações, navegador web, multitarefa, mensageiro instantâneo, wi-fi, Bluetooth 1.0, integração com a caixa de emails do Google, o Gmail, e o aplicativo da loja de aplicativos do Google, que antes era o Android Market. (DANA, 2012) 1.3.2 Versão 1.5 (Cupcake) Em 2009 foi liberada pelo Google a versão 1.5, com o nome de Cupcake. Curiosamente, a partir desta versão, todas as próximas trazem nomes de doces seguidos em ordem alfabética. A versão 1.5 trazia entre as novidades teclado virtual, capacidade de gravar vídeos, widgets, possibilidade de colocar animações nas transições de tela, integração com o Youtube e capacidade de realizar comandos de copiar e colar textos. (DANA, 2012) 1.3.3 Versão 1.6 (Donut) 22 Também em 2009, foi lançada a versão 1.6, apelidado de Donut. Trouxe grandes novidades em relação à Cupcake, dentre elas estão uma caixa de pesquisa rápida, compatibilidade com câmeras, gravador de voz, galeria de imagens e vídeos, indicador do nível da bateria e suporte a tela de até 480x800 pixels. (DANA, 2012) 1.3.4 Versão 2.0/2.1 (Eclair) Apenas um mês depois de lançar a versão Donut, o Google lançou a versão 2.0, conhecida como Eclair. Permitia múltiplas contas de email, nova interface do navegador, suporte a Bluetooth 2.1 e HTML 5, novas ferramentas de navegação no Google Maps, permitia papéis de parede animados, melhor contraste da tela, suporte a multitouch e suporte a mais resoluções. (DANA, 2012) 1.3.5 Versão 2.2 (Froyo) Em 2010 foi lançada a versão 2.2, apelidada de Froyo. Dentre as novidades, estava o aumento da velocidade na realização de tarefas, a opção de salvar aplicativos em cartões de memória, suporte a hotspot, que é a possibilidade de compartilhar uma conexão de Internet por meio de wi-fi, suporte ao Adobe Flash, atualizações automáticas dos aplicativos do Android Market e a melhoria no desempenho geral do sistema. (DANA, 2012) 1.3.6 Versão 2.3 (Gingerbread) Lançado seis meses depois, a versão 2.3, conhecida por Gingerbread, possuía interface para telas de maior dimensão e ajustada para possuir simplicidade e rapidez, novo teclado para maior rapidez de digitação, chamadas pela Internet, suporte a Near Field Communication (NFC), no qual apenas com a proximidade de dois dispositivos eletrônicos compatíveis, é possível realizar troca de informações, reconhecimento de sensores para rotação da tela, possibilidade de usar mais de uma câmera, capacidade para vídeo chamadas e a otimização das opções de copiar, colar e recortar. (DANA, 2012) 1.3.7 Versão 3.0 (Honeycomb) 23 Em 2011, foi lançada a versão 3.0, conhecida como Honeycomb, que teve o sistema reformulado para ter compatibilidade com telas de tablets, que já estavam ganhando o mercado. Dentre as novidades pode-se citar a customização da tela principal, a opção de compartilhamento por Bluetooth, a aceleração de vídeo por hardware e suporte a processadores com múltiplos núcleos. (DANA, 2012) 1.3.8 Versão 4.0 (Ice Cream Sandwich) A versão 4.0, apelidada de Ice Cream Sandwich, foi liberada em 2011. Passou a oferecer maior facilidade de compartilhamento de arquivos, calendário unificado, opções de alinhamento de câmera, fotos panorâmicas com o movimento do aparelho, desbloqueio por reconhecimento facial e um centro de análise de dados. (DANA, 2012) 1.3.9 Versão 4.1/4.2/4.3 (Jelly Bean) Em 2012 o Google anunciou esta versão. Trouxe uma nova interface de usuário, animações e gráficos, novas formas de conectividade com acesso ao 4G, novos recursos multimídia, melhor desempenho e possui mais estabilidade. Ainda poucos aparelhos possuem esta versão e apenas os que possuem hardware mais avançado. (LANDIM, 2013) 1.3.10 Versão 4.4 (Kit Kat) Lançada no final de outubro de 2013, é a versão mais recente do Android. Dentre as melhorias desta versão pode-se ressaltar: editor de fotos, gerenciamento de processos, a opção de imprimir direto do celular através de wireless em impressoras compatíveis e o reconhecimento de comandos de voz através do Google Now. (DAQUINO, 2013) 1.4 API FACEBOOK API é um conjunto de rotinas, instruções, padrões de programação, classes e 24 objetos, para ter acesso a um software ou ferramenta da Internet, o qual permite que um aplicativo se comunique com outro em locais remotos, com comunicação via Internet. As API’s são lançadas pelas empresas para que os desenvolvedores de softwares possam criar produtos que usem seus serviços (ROOS, 2009). Uma API se assemelha ao Software as a Service (SaaS), que são basicamente sites que utilizam a Cloud Computing para oferecer serviços online. (VALIN, 2009) A API do Facebook foi desenvolvida para oferecer ferramentas aos desenvolvedores que desejam integrar experiências da rede social em suas aplicações, seja ela mobile ou web. (DEVELOPERSWORKS BRASIL, 2011) Com a grande expansão da rede social, essa API se tornou de extrema importância para sistemas, pois por meio da rede social consegue-se obter dados pessoais que podem ajudar, ou até mesmo remover, o processo de cadastro do usuário, assim evita-se a criação de identidades falsas e a perda de tempo na obtenção de dados para um cadastro. Outra vantagem é a publicidade, pois através da API, o usuário pode realizar comentários na rede social, no qual juntamente com estes poderá haver a divulgação da aplicação, para ser descoberta por pessoas que querem utilizá-la. (DEVELOPERSWORKS BRASIL, 2011) Para utilizar a API, o Facebook disponibiliza um Software Development Kit (SDK), que ajuda o desenvolvedor a integrar o Facebook a sua aplicação. Este SDK possui versões para Android, iOS, Hypertext Preprocessor (PHP) e JavaScript. O SDK trás algumas classes como a classe principal Facebook e a classe Facebook Dialog. (DEVELOPERSWORKS BRASIL, 2011) A classe Facebook encapsula métodos para autorizar o usuário, criar diálogos e fazer solicitações, desconectar o usuário e definir informações de acesso, status e sessão. (DEVELOPERSWORKS BRASIL, 2011) A classe Facebook Dialog implementa métodos para a criação de visualizações na Internet e manipula respostas de Uniform Resource Locator (URL) do Facebook. (DEVELOPERSWORKS BRASIL, 2011) A principal API do Facebook é a Graph, que permite que leia e grave dados a partir do Facebook e de forma consistente manipula os objetos, que são os usuários, amigos e postagens. Com a API é possível procurar, atualizar objetos e até mesmo filtrar resultados. (FACEBOOK API, 2013) Os aplicativos tem por padrão apenas acesso aos dados públicos do usuário, 25 para possuir acesso aos dados privados deve-se primeiro solicitar permissões ao usuário, que são chamadas de permissões estendidas. Obtendo essas permissões, o aplicativo que as chamou recebe autorização para acessar os dados autorizados. (FACEBOOK API, 2013) 1.5 API GOOGLE MAPS Lançada em 2005 a API do Google Maps é uma ferramenta desenvolvida para ser incorporada a software, seja mobile, web ou desktop, mapas, localizações e todos os recursos que a versão padrão possui e facilitar a criação de aplicativos por parte dos desenvolvedores que gostariam de integrar o Google Maps a seus softwares. Os complementos da API oferecem bibliotecas para que se possa desenvolver, construir e executar aplicativos baseados em mapas, com acesso a todos os dados do Google Maps. O Google Maps permite buscar endereços, cidades e locais específicos, trazendo mapas e localizações, de forma gratuita, desde que não seja para uso comercial. Esses locais podem ser cadastrados de forma simples e gratuita. A partir de um ponto corretamente cadastrado os usuários possuem a possibilidade de realizar comentários e avaliações, e o dono do estabelecimento ou quem cadastrou o local, pode consultar a quantidade de pessoas que visualizaram as informações do ponto, principais termos de consultas e interagir com os usuários, seja para deixar agradecimentos ou responder críticas. (GOOGLE DEVELOPERS, 2013) Esta API é uma biblioteca externa do Google Maps, na qual foram incorporada a renderização e o armazenamento em cache de blocos de mapas, assim como uma variedade de opções e controles de exibição. A principal classe nesta biblioteca é a MapView que exibe um mapa com dados obtidos a partir do serviço do Google Maps. Quando a API está em uso ela é responsável por capturar o pressionamento de teclas ou gestos de toque para gerar os mapas, ampliando ou reduzindo o zoom automaticamente. Também oferece elementos de interface do usuário que são necessários para que estes controlem o mapa. Os métodos da classe são disponíveis para controlá-la através de programação, no qual se podem traçar diversos tipos de sobreposições no mapa. (GOOGLE DEVELOPERS, 2013) 1.6 JAVA SCRIPT OBJECT NOTATION (JSON) 26 É um modelo de formatação dos dados, utilizado principalmente nas trocas de dados entre sistemas homogêneos ou heterogêneos, pois possui suporte a todas as linguagens de programação atuais, independentemente de qual for utilizada. (JSON, 2013) Em JSON os dados são apresentados de cinco formas diferentes (objeto, array, valor e string). Os objetos são um conjunto desordenado de pares nome/valor. Os dados são expressados entre chaves, a separação entre o nome e o valor é feita com dois pontos e cada par nome/valor é separado com vírgula. (JSON, 2013) Figura 1.2 – Objeto JSON. Fonte: JSON, 2013. Figura 1.3 – Objeto JSON. Fonte: Elaborada pelos autores, 2013. Um array é uma coleção de valores ordenados. Os dados são expressados entre colchetes e cada valor é separado por vírgula. (JSON, 2013) Figura 1.4 – Array JSON. Fonte: JSON, 2013. Um valor pode ser uma string ou um número ou um boolean (verdadeiro ou falso) ou um nulo ou um objeto ou uma array. (JSON, 2013) 27 Figura 1.5 – Valor JSON. Fonte: JSON, 2013. Uma string é uma coleção de nenhum ou mais caracteres, no qual deve estar entre aspas duplas. Para uso de caracteres especiais faz-se uso da barra invertida. Figura 1.6 – String JSON. Fonte: JSON, 2013. 1.7 WEB SERVICE 28 O Web Service surgiu para preencher a necessidade do mercado de integração entre sistemas heterogêneos além das redes locais que não se comunicavam por não existir um padrão. Seus objetivos são realizar a integração entre sistemas, a comunicação entre aplicações diferentes, independente do sistema operacional ou da linguagem de programação usada e fortalecer o desenvolvimento distribuído, de forma a trabalhar em conjunto com os novos recursos de comunicação da Internet. (DURÃES, 2005) O Web Service funciona como se estivesse instalado localmente, mas sua principal vantagem é que pode estar instalado em qualquer máquina, independentemente de sua localização, somente com a necessidade de estar conectado à Internet, para poder obter acesso remotamente. (DURÃES, 2005) Para realizar a troca de informações entre os sistemas, a aplicação dispara o processamento no servidor remoto e este responde para a aplicação. O único formato dos dados enviados ou recebidos são Extensible Markup Language (xml). Como usam à Internet, os protocolos Hypertext Transfer Protocol (HTTP) e o Simple Object Access Protocol (SOAP) são responsáveis pelo transporte dos dados na rede. (DURÃES, 2005) A arquitetura dos Web Services está representado na figura 1.7. Figura 1.7 – Arquitetura dos Web Services. Fonte: Mendes, 2013. As tecnologias são a base para este trabalho, no qual cada uma terá sua importância. O Android é a plataforma em que o aplicativo será desenvolvido e somente nele o aplicativo poderá ser instalado depois de pronto. A API do Google Maps será responsável por trazer as localizações de cada ponto turístico, no qual também através de uma conexão GPS será possível traçar rotas até determinado 29 local. A API do Facebook dará ao usuário a possibilidade de realizar comentários sobre determinado ponto turístico. O SQLite armazenará todos os dados dos pontos turisticos junto com a instalação da aplicação, assim o aplicativo funcionará tanto offline como online. E por fim o MySQL armazenará em um servidor todos os comentários realizados pelos usuários no Facebook, pois assim será possível recuperar em cada ponto turístico todos os comentários e listá-los no aplicativo, mas esta opção por ter que acessar um servidor, somente estará disponível se o usuário estiver conectado à Internet. A figura 1.8 representa a arquitetura da aplicação. Figura 1.8 – Arquitetura da aplicação. Fonte: Próprios autores, 2013. 30 2 ANÁLISE E PROJETO DO SISTEMA Este capítulo descreve a análise de mercado em que estão contidos alguns exemplos de aplicações, e relata a parte documental do sistema, com a estruturação e os requisitos coletados. 2.1 ANÁLISE DE MERCADO Atualmente, existem vários aplicativos desenvolvidos para Android que visam os turistas. Para efeito de comparação, vale citar: Guia Quatro Rodas 1001 Lugares, SPMobile e Turismo Bento. 2.1.1 Guia Quatro Rodas 1001 Lugares O Guia Quatro Rodas apresenta atrações com imagens, textos explicativos e serviços necessários para planejar viagens, além de criar listas com lugares já visitados e lugares a visitar. A figura 2.1a, exibe uma sequência aleatória de imagens com atrativos turísticos, e se selecionada, exibirá a descrição do local. Figura 2.1 – Guia Quatro Rodas 1001 Lugares. Fonte: Guia Quatro Rodas 1001 Lugares, 2013. O aplicativo traz localizações e mapas, usando a função GPS do aparelho, podendo também buscar por proximidade dentro do mapa e traçar rotas até os pontos de interesse, além de manter um banco de dados no aparelho móvel, não precisa de conexão para consultar as descrições das atrações, conforme figura 2.1b. 31 O software possui API’s do Facebook, Google Maps e Twitter, no qual o usuário pode compartilhar comentários e visualizar mapas das atrações cadastradas, conforme figura 2.1c. Esse aplicativo está disponível gratuitamente no Google Play, a loja de aplicativos do Android. 2.1.2 SPMobile SPMobile é uma realização da empresa oficial de turismo da cidade de São Paulo (SPTuris). O aplicativo está disponível para smartphones e tablets, um guia eletrônico que disponibiliza diversas informações e dá dicas de passeio. A navegação é simples e autoexplicativa, feita através de ícones, com datas e locais de eventos em toda a capital paulista. A figura 2.2a, exibe a tela principal do aplicativo. Figura 2.2 – SPMobile. Fonte: SPMobile, 2013. A figura 2.2b exibe a imagem de um ponto turístico, a descrição e oferece opção de mapa, link para acesso ao site do local e efetuar ligação direto do aplicativo. O diferencial do aplicativo é que ao invés de apenas mostrar dados sobre a oferta turística e cultural, a aplicação também acessa sites dos estabelecimentos e possui acesso ao GPS calculando itinerários. Conforme figura 2.2c, tela no qual o usuário informa o local de origem, o destino e o meio de transporte que irá utilizar, e o aplicativo trará como resultado a rota a seguir ou o ponto de ônibus mais próximo. 32 O aplicativo é gratuito e pode ser encontrado no Google Play e na App Store, que é a loja de aplicativos da Apple. 2.1.3 Turismo Bento A cidade de Bento Gonçalves localizada no Rio Grande do Sul, lançou o guia turístico oficial para dispositivos móveis, o projeto é uma parceria entre a Secretaria Municipal de Turismo e o Bento Convention Bureau. O usuário tem informações de cerca de 200 pontos turisticos e estabelecimentos comerciais de Bento Gonçalves. A tela principal, na figura 2.3a, exibe um menu com as funções do aplicativo, como guia, mapas, pesquisas e informações sobre a cidade, e no rodapé existe uma parte que mostra uma sequência aleatória de imagens de locais que podem ser visitados. Figura 2.3 – Turismo Bento. Fonte: Turismo Bento, 2013. Através do mapa da cidade o usuário consegue visualizar todas as opções de lazer, conforme figura 2.3b, quando seleciona o local desejado, o aplicativo abre uma tela com informações sobre a escolha, contendo fotos, descrição, sugestões e mapa de como chegar ao local, conforme figura 2.3c. O aplicativo é gratuito e pode ser encontrado no Google Play. Com o intuito de formular ideias para o desenvolvimento deste trabalho, foram feitas estas análises, no qual pode-se extrair de cada aplicação analisada pontos interessantes para serem utilizados no desenvolvimento deste, dentre eles pode-se ressaltar: a transição de imagens dos pontos turísticos e o uso da API do Google Maps, para visualizar localizações e planejar rotas, e do Facebook, para o usuário 33 compartilhar comentários sobre locais visitados e obter seus dados sem precisar realizar um cadastro. A proposta deste trabalho é desenvolver um aplicativo Android que listará os principais pontos turisticos das cidades sedes da Copa do Mundo de 2014, o qual terá integração com a rede social Facebook, para realizar comentários e com os mapas do Google Maps, para traçar rotas. 2.2 ATORES E ENVOLVIDOS NO PROCESSO O único ator do sistema é o Usuário, que poderá listar as cidades sedes da Copa do Mundo, assim como os pontos turisticos correspondentes a cada uma, também terá as opções de gerar rotas e realizar comentários no Facebook, a partir de um ponto turístico. 2.3 PERSPECTIVA DO PRODUTO A intenção do produto é proporcionar ao usuário uma forma de conhecer um determinado ponto turístico de seu interesse antes de visitá-lo efetivamente, pois através dos comentários gerados por usuários que já visitaram, pela descrição e pelas fotos deste ponto é possível ter uma ideia geral do local. 2.4 CARACTERÍSTICAS A seguir serão descritas as funcionalidades da aplicação que poderão ser realizadas pelo Usuário: Visualização de Cidades. Funcionalidade para visualizar as cidades sedes. Visualização de Pontos Turisticos. Funcionalidade para visualizar os pontos turisticos de cada cidade sede; Visualização de descrições e fotos. Funcionalidade para visualizar a descrição e as fotos de cada ponto turístico; Gerar rotas. Funcionalidade que gera uma rota até um ponto turístico, usando para isso a API do Google Maps; Inserção de comentários. Funcionalidade que insere comentários no 34 Facebook e no banco de dados sobre um ponto turístico. Visualização de comentários. Funcionalidade para visualizar os comentários sobre um ponto turístico. Exclusão de comentários. Funcionalidade que o usuário poderá excluir comentários realizados por ele sobre um ponto turístico. Alteração de comentários. Funcionalidade que o usuário poderá alterar comentários realizados por ele sobre um ponto turístico. Responder comentários. Funcionalidade que o usuário poderá responder comentários realizados por outros usuários. 2.5 ANÁLISE DE REQUISITOS A aplicação deverá possibilitar: A listagem das cidades sedes e de seus pontos turísticos; A listagem da descrição e de fotos de cada ponto turístico; A geração de rotas para cada ponto turístico; A submissão de novos comentários; A listagem de comentários de cada ponto turístico; A remoção e alteração de comentários; Dar respostas a comentários. A visualização dos dados do aplicativo. 2.6 DIAGRAMA DE CLASSE Figura 2.4 – Diagrama de Classe. Fonte: Elaborada pelos autores, 2013. 35 A figura 2.5 representa a parte do diagrama que compreende o banco de dados SQLite. Figura 2.5 – Diagrama de Classe do banco de dados SQLite. Fonte: Elaborada pelos autores, 2013. A figura 2.6 representa a parte do diagrama que compreende o banco de dados MySQL. Figura 2.6 – Diagrama de Classe do banco de dados MySQL. Fonte: Elaborada pelos autores, 2013. 2.7 DIAGRAMA DE CASO DE USO Figura 2.7 – Diagrama de Caso de Uso. Fonte: Elaborada pelos autores, 2013. 36 2.8 ESPECIFICAÇÕES DE HISTÓRIAS E DIAGRAMAS 2.8.1 Manter Comentário O usuário pode submeter comentários em cada ponto turístico. Tem como objetivo a interação dos usuários e mostrar o ponto de vista dos usuários em relação ao ponto turístico. Figura 2.8 – Diagrama de Atividade. Inserir Comentário. Fonte: Elaborada pelos autores, 2013. Figura 2.9 – Diagrama de Atividade. Excluir Comentário. Fonte: Elaborada pelos autores, 2013. 37 Figura 2.10 – Diagrama de Atividade. Alterar Comentário. Fonte: Elaborada pelos autores, 2013. Figura 2.11 – Diagrama de Atividade. Responder Comentário. Fonte: Elaborada pelos autores, 2013. 38 Figura 2.12 – MVC. Manter Comentários. Fonte: Elaborada pelos autores, 2013. Figura 2.13 – Diagrama de Sequência. Inserir Comentário. Fonte: Elaborada pelos autores, 2013. Figura 2.14 – Diagrama de Sequência. Excluir Comentário. Fonte: Elaborada pelos autores, 2013. 39 Figura 2.15 – Diagrama de Sequência. Alterar Comentário. Fonte: Elaborada pelos autores, 2013. Figura 2.16 – Diagrama de Sequência. Listar Comentários. Fonte: Elaborada pelos autores, 2013. 2.8.2 Manter Mapa Mapas que o usuário pode acessar para visualizar o ponto turístico. Também possui a funcionalidade de traçar rota, no qual tem como objetivo direcionar o usuário do local em que esteja até o ponto turístico de interesse. 40 Figura 2.17 – Diagrama de Atividade. Mostrar Ponto Turístico. Fonte: Elaborada pelos autores, 2013. Figura 2.18 – Diagrama de Atividade. Traçar Rota. Fonte: Elaborada pelos autores, 2013. 41 3 IMPLEMENTAÇÃO Neste capítulo são apresentadas as interfaces gráficas da aplicação, bem como partes do código fonte utilizado para o desenvolvimento do projeto. 3.1 INTERFACE GRÁFICA Nesta seção são mostradas as telas da aplicação. 3.1.1 Tela Principal A figura 3.1 representa as interfaces gráficas, desde a tela contendo o ícone da aplicação até a tela principal. Ao iniciar a aplicação através do ícone, é apresentada a tela de carregamento com o logo e após o carregamento ser concluído, o usuário é levado à tela principal da aplicação contendo um ícone de pesquisa por ponto turístico, um ícone da aplicação para sair e três abas com o foco na aba Início, que contém uma transição de imagens aleatórias dos pontos turísticos. Figura 3.1 – Ícone do aplicativo, tela de carregamento e tela inicial. Fonte: Elaborada pelos autores, 2013. A figura 3.2 representa a tela das outras abas da tela principal. A aba Cidades apresenta uma lista das cidades sedes da Copa do Mundo de 2014, com seus respectivos estados. A aba Info apresenta a versão do aplicativo e o sobre do mesmo. 42 Figura 3.2 – Tela da lista de cidades e da Info. Fonte: Elaborada pelos autores, 2013. A opção de pesquisar por ponto turístico é apresentada na figura 3.3. Esta função está presente em todas as telas da aplicação, no qual o usuário digitando o nome ou parte do nome do ponto turístico mostra uma lista com o local correspondente. Pressionando-o, o usuário é levado ao ponto turístico. Figura 3.3 – Pesquisa por ponto turístico. Fonte: Elaborada pelos autores, 2013. 3.1.2 Tela Cidades A figura 3.4 representa a tela de Cidades que é apresentada sempre que o usuário selecionar uma cidade através da lista de Cidades na tela Principal. Nesta tela, assim como nas próximas é apresentado um ícone da aplicação para voltar à página anterior e o nome da cidade selecionada, logo abaixo do nome do aplicativo. Possui duas abas com o foco na Descrição, que mostra uma breve descrição 43 da cidade selecionada, e a outra aba Pontos Turísticos é exibida uma lista com os pontos turísticos desta cidade. Figura 3.4 – Tela de uma cidade e a lista de pontos turísticos da mesma. Fonte: Elaborada pelos autores, 2013. 3.1.3 Tela Pontos Turísticos A figura 3.5 representa a tela de Pontos Turísticos que é apresentada sempre que o usuário selecionar um ponto turístico através da lista de Pontos Turísticos ou pela pesquisa ou selecionando uma imagem no início. Possui quatro abas com o foco na primeira, Descrição, que mostra uma breve descrição do ponto turístico selecionado e a segunda aba Fotos é exibida algumas imagens do ponto turístico, que para realizar a transição entre as imagens deve-se fazer o movimento de slide na tela do dispositivo móvel. Figura 3.5 – Tela da descrição e das fotos de um ponto turístico. Fonte: Elaborada pelos autores, 2013. 44 A figura 3.6 representa a terceira aba da tela de Pontos Turísticos. A aba Mapa apresenta duas opções de visualizar o mapa através da API do Google Maps. A primeira é a imagem de satélite do ponto turístico, e a segunda é a opção de traçar rota, no qual é obtida por meio da Internet a localização geográfica do dispositivo e através do banco de dados da aplicação é obtida as coordenadas do ponto turístico, traçando uma linha vermelha no trajeto a ser percorrido. Caso o usuário não esteja conectado com a Internet será apresentado uma mensagem e o mapa ficará indisponível. Figura 3.6 – Tela do mapa do ponto turístico. Fonte: Elaborada pelos autores, 2013. A figura 3.7 representa a última aba da tela de Pontos Turísticos, os Comentários, no qual é necessária uma conta ativa no Facebook para acessá-la, assim, quando o usuário seleciona está opção pela primeira vez, a API do Facebook é invocada para que seja realizada a autenticação do usuário. Figura 3.7 – Tela de autenticação do Facebook. Fonte: Elaborada pelos autores, 2013. 45 Após a autenticação ser realizada com sucesso, será apresentada a tela de permissões, a qual informa ao usuário quais permissões Brazil Tourism deseja ter acesso da conta Facebook, como publicar mensagens na linha do tempo, por exemplo. Com as permissões autorizadas pelo usuário, automaticamente é apresentado o menu da aba Comentários, com as opções de visualizar todos os comentários realizados pelos usuários, visualizar comentários feitos pelo próprio usuário e a opção de efetuar comentário, conforme é mostrado na figura 3.8. Caso não exista conexão com a Internet ou a autenticação com o Facebook foi mal sucedida aparecerá mensagens de erro. Figura 3.8 – Tela de comentários e seus possíveis erros. Fonte: Elaborada pelos autores, 2013. A figura 3.9 representa a terceira opção Comentários, que possibilita compartilhar um comentário. É possível postar um comentário no Facebook com uma imagem do ponto turístico e este por sua vez também é armazenado em um banco de dados de um servidor, para posteriormente outros usuário acessarem. Figura 3.9 – Realizar comentário. Fonte: Elaborada pelos autores, 2013. 46 A publicação no Facebook ficará conforme a figura 3.10. Figura 3.10 – Publicação no Facebook. Fonte: Elaborada pelos autores, 2013. A figura 3.11 representa a primeira opção da aba de Comentários, que possibilita visualizar todos os comentários realizados pelos usuários, os quais são listados em ordem de data e carregados conforme se chega ao fim da lista para evitar sobrecarregamento. Selecionando um comentário é possível visualizá-lo por extenso, comentá-lo e visualizar uma lista com todos os comentários sobre este comentário, também por ordem de data. Quando se Comentar o Comentário, o comentário apenas é armazenado no banco de dados no servidor e não será postado no Facebook. E quando se seleciona um comentário da lista de comentários é possível apenas visualiza-lo por extenso. Figura 3.11 – Todos Comentários. Fonte: Elaborada pelos autores, 2013. 47 A figura 3.12 representa a segunda opção da aba de Comentários, que possibilita visualizar todos os comentários realizados pelo usuário, possui as mesmas funções da opção de visualizar todos os comentários, com a diferença de que nesta opção é possível alterar ou excluir o comentário realizado. Figura 3.12 – Meus Comentários. Fonte: Elaborada pelos autores, 2013. Em ambas as opções de Todos Comentários e Meus Comentários, quando selecionado um comentário e aparece o nome do autor em itálico, se o usuário pressionar em cima, será aberto o navegador padrão de Internet e redirecionado para a página do Facebook do autor do comentário, apresentado na figura 3.13. Figura 3.13 – Pagina autor comentário. Fonte: Elaborada pelos autores, 2013. 3.2 DISCUSSÃO DO CÓDIGO-FONTE Nesta seção, são mostradas partes dos códigos-fonte de métodos que 48 compõem a aplicação. O código abaixo apresenta o método responsável por se comunicar com o Web Service, inserindo no banco um comentário especifico. O método chamado inserirComentario recebe como parâmetro um objeto Comentário, no qual este é transformado em JSON, através do objeto Gson, que é de uma biblioteca importada para tal finalidade, para ser enviado para o Web Service. Após este procedimento é preciso passar o caminho do Web Service e verificar se a comunicação e a resposta foram bem sucedidas. Figura 3.14 – Método para inserir Comentário no servidor. Fonte: Elaborada pelos autores, 2013. A figura 3.15 mostra os métodos responsáveis por abrir e fechar, respectivamente, o banco de dados local. Para abrir o banco é necessário indicar o caminho do diretório em que esteja e o nome do banco de dados criado. Figura 3.15 – Método para abrir e fechar banco de dados local. Fonte: Elaborada pelos autores, 2013. A figura 3.16 mostra o método responsável por retornar todas as cidades cadastradas no banco de dados local. Para isto é preciso passar a consulta a ser realizada, através de um objeto Cursor, que é responsável por armazenar o conteúdo de uma consulta ao banco de dados, criar uma List para armazenar as cidades e um laço de repetição, que processa registro por registro conforme foi 49 retornado do banco de dados, atribuindo o nome da cidade e o estado a um objeto Cidade, e este é atribuído a lista, que é retornada pelo método, mas antes é necessário fechar a conexão com o banco. Figura 3.16 – Método listar todas cidades. Fonte: Elaborada pelos autores, 2013. A figura 3.17 mostra o método responsável por exibir mensagens na tela de comentários, recebendo como argumento a mensagem a ser exibida. Este processo é realizado dentro de uma Thread para não sobrecarregar a memória, pois assim fará parte de um processo. Figura 3.17 – Método exibir mensagens. Fonte: Elaborada pelos autores, 2013. A figura 3.18 mostra o método responsável por verificar a conexão com a Internet, no qual é verificado através de um objeto ConnectivityManager se existe alguma conectividade com a Internet, seja ela através de uma conexão de dados ou 50 wireless. O retorno será verdadeiro ou falso. Figura 3.18 – Método exibir mensagens. Fonte: Elaborada pelos autores, 2013. A figura 3.19 mostra o código xml da tela de abertura da aplicação. Figura 3.19 – Código xml da tela de abertura do aplicativo. Fonte: Elaborada pelos autores, 2013. 51 CONCLUSÃO Pensando nos eventos esportivos no Brasil nos próximos anos, no mercado do sistema operacional Android e no crescimento da rede social Facebook, este trabalho apresenta o desenvolvimento de uma aplicação Android que contém informações pertinentes sobre pontos turísticos, tais como, descrições, fotos, mapas e comentários dos usuários, para isso ser possível integramos APIs a aplicação. Para desenvolver aplicativos para a plataforma Android, são necessários vários testes e adaptações em diferentes versões e/ou modelos, justamente pela grande variedade de hardware e software disponíveis, dificultando seu desenvolvimento, no qual precisa-se tornar a aplicação mais genérica possível ou desenvolver outras versões com suporte a diferentes versões do sistema ou tamanho de telas. As grandes dificuldades encontradas foram à integração do aplicativo com o banco de dados no servidor, para armazenar os comentários, e com as APIs, mas isto foi facilmente superado com estudos e pesquisas, buscando sempre a melhor forma de desenvolver. O trabalho atingiu o seu objetivo no desenvolvimento da aplicação móvel visando a Copa do Mundo 2014 com integração a rede social Facebook e outros recursos serão adicionados em futuras atualizações do aplicativo, como: denúncia de comentários mal intencionados pelos usuários, cadastro para patrocinadores, atualização automática dos pontos turisticos sem a necessidade de gerar uma nova atualização para a aplicação e uma versão para iOS. 52 REFERÊNCIAS BIBLIOGRÁFICAS ABOUT SQLITE. SQLite. Disponível em: <http://www.sqlite.org/about.html> Acesso em: 13 mai. 2013. AGUIAR, G. M. Índices e Foreing Keys. Disponível em: <http://gustavomaiaaguiar.wordpress.com/tag/chaves-estrangeiras/> Acesso em: 13 mai. 2013. ALECRIM, E. Banco de dados MySql e PostgreSQL. 2008. Disponível em: <http://www.infowester.com/postgremysql.php> Acesso em: 13 mai. 2013. ANDROID ATINGE 68% DE PARTICIPAÇÃO DE MERCADO. G1 Tecnologia e Games. 2012. Disponível em: <http://g1.globo.com/tecnologia/noticia/2012/12/ android-atinge-68-de-participacao-de-mercado-em-2012-diz-pesquisa.html> Acesso em: 17 mar. 2013. ANDROID É O SISTEMA MÓVEL MAIS VULNERÁVEL. Folha de S.Paulo. 2012. Disponível em: < http://www1.folha.uol.com.br/tec/1055411-android-e-o-sistemamovel-mais-vulneravel-a-hackers-diz-estudos.html> Acesso em: 15 mai. 2013. ANISZCZYK, C; GALLARDO, D. Introdução à Plataforma Eclipse. 2012. Disponível em: <http://www.ibm.com/developerworks/br/library/os-eclipse-platform/> Acesso em: 13 mai. 2013. API ANDROID DO GOOGLE MAPS. Google Developers. Disponível em: <https://developers.google.com/maps/documentation/android/?hl=pt-BR> Acesso em: 15 mai. 2013. API DO GOOGLE MAPS. Google Developers. Disponível em: <https://developers.google.com/maps/mobile-apps?hl=pt-br> Acesso em: 15 mai. 2013. DANA, L. CONHEÇA A HISTÓRIA DO ANDROID. Super Interessante. Disponível em:<http://super.abril.com.br/galerias-fotos/conheca-historia-android-sistemaoperaci onalmobile-google-688822.shtml#9> Acesso em: 13 mai. 2013. DAQUINO, F. A história das redes sociais: como tudo começou. Tecmundo. 2012. Disponível em: <http://www.tecmundo.com.br/redes-sociais/33036-a-historia-dasredes-sociais-como-tudo-comecou.htm> Acesso em: 17 mar. 2013. DAQUINO, F. 14 novos recurso Android Kit Kat. Tecmundo. 2013. Disponível em: http://www.tecmundo.com.br/kitkat/4682214novosrecursosuteisepoucocomentadosd oandroidkitkat.htm?utm_source=outbrain&utm_medium=recomendados&utm_campa ign=outbrain=obinsite> Acesso em: 25 nov. 2013. DALL'OGLIO, P. Usando o SQLite. 2007. Disponível em <http://pablo.blog.br/49> Acesso em: 17 mai. 2013. 53 FACEBOOK API, 2013. Graph API. 2012. Disponível em: <https://developers.facebook.com/docs/reference/api> Acesso em: 15 mai. 2013. DEVELOPERSWORKS BRASIL. Imasters. 2011. Disponível em: http://imasters.com.br/artigo/20274/apis/explorando-funcionalidades-das-apis-dofacebook> Acesso em: 15 mai. 2013. < FAQ. Open Handset Alliance. Disponível em: <http://www.openhandsetalliance. com/oha_faq.html> Acesso em: 13 mai. 2013. FREITAS, R. A IMPORTÂNCIA DO GOOGLE MAPS NO MARKETING DIGITAL. Being. Disponível em: <http://blog.being.com.br/index.php/marketing/google-mapsno-marketing-digital/> Acesso em: 15 mai. 2013. GONÇALVES, E. C. SQLite, Muito Prazer. 2010. Disponível em: <http://www.devmedia.com.br/sqlite-muito-prazer/7100> Acesso em: 13 mai. 2013. JAVA E ORIENTAÇÃO A OBJETOS. Caelum. Disponível em: <http://www.caelum. com.br/apostila-java-orientacao-objetos/> Acesso em: 15 mai. 2013. LANDIM, W. Android 4.2, traz pequenas atualizações. 2013. Disponível em: <http://www.tecmundo.com.br/android/36526-android-4-2-2-traz-pequenas-atualizac oes.htm> Acesso em: 13 mai. 2013. LECHETA, R. Google Android. 2. ed. São Paulo: Novatec, 2010. LEITE, G. História do Android. Disponível em: <http://tecnologiaeprogramas android.blogspot.com.br/2013/03/historia-do-android.html> Acesso em: 13 mai. 2013. MAFFEI, P. SGBD MYSQL. Mania de Estudar. 2011. Disponível em: < http://www.maniadeestudar.com/2011/11/sgbd-mysql-2-03112011.html> Acesso em: 15 mai. 2013. MARTINS, G. História do sistema operacional Android. 2012. Disponível em: < http://www.celular-android.com/historia-do-sistema-operacional-android/> Acesso em: 13 mai. 2013. MILANI, A. MySQL – Guia do Programador. 1. ed. São Paulo: Novatec, 2007. MINI SQL. Hughes Technologies. Disponível em: <http://www.hughes.com.au/ products/msql/> Acesso em: 13 mai. 2013. MOREIRA, E. A ONU quer estabelecer a paz entre os fabricantes de smartphones. Target HD. 2012. Disponível em: <http://targethd.net/a-onu-quer-estabelecer-a-pazentre-os-fabricantes-de-smartphones/> Acesso em: 01 abr. 2013. NOSSA HISTÓRIA A FUNDO. Google. Disponível em: <http://maps.google. com.br/intl/pt-BR/about/company/history/> Acesso em: 15 mai. 2013. 54 OVERVIEW OF THE FACEBOOK PLATFORM. Facebook Developers. Disponível em: <http://developers.facebook.com/docs/overview/> Acesso em: 14 mai. 2013 PERBONI, M. APLICAÇÕES ANDROID. Marcos Perboni. 2013. Disponível em: <http://marcosvperboni.wordpress.com/2013/02/15/utilizando-recursos-nativos-desms-em-aplicacoes-android/> Acesso em: 17 mai. 2013. ROOS, D. COMO APROVEITAR MELHOR UMA API. Como tudo funciona. 2009. Disponível em: <http://informatica.hsw.uol.com.br/conferencia-api3.htm> Acesso em: 21 mai. 2013. STRICKLAND, J. COMO FUNCIONA O ANDROID. Como tudo funciona. Disponível em: <http://informatica.hsw.uol.com.br/google-phone2.htm> Acesso em: 15 mai. 2013. TANENBAUM, Andrew S. Organização Estruturada de Computadores. 5. Ed. São Paulo: Prentice Hall (Pearson), 2007. TAURION, C. SEGURANÇA NO ANDROID. DeveloperWorks. 2010. Disponível em: <https://www.ibm.com/developerworks/mydeveloperworks/blogs/ctaurion/entry/segur an_c3_a7a_no_android?lang=en> Acesso em: 15 mai. 2013. TONIN, G. S. Tendências em comutação móvel. São Paulo: Universidade de São Paulo, 2012. Disponível em: <http://grenoble.ime.usp.br/~gold/cursos/2012/movel /mono-1st/2305-1_Graziela.pdf> Acesso em: 17 mar. 2013. VALIN, A. O QUE É SAAS E WAAS?. Tecmundo. 2009. Disponível em: <http://www.tecmundo.com.br/jogos/2616-o-que-e-saas-e-waas-.htm> Acesso em: 21 mai. 2013. VINICÍUS, C. A história do sistema Android. Disponível em: <http://www.dicas paraandroid.com/2013/02/a-historia-do-sistema-android.html> Acesso em: 13 mai. 2013. 55 APÊNDICE A – INSTALAÇÃO E CONFIGURAÇÃO DO SDK E ADT DO ANDROID E DA IDE DO ECLIPSE Este anexo descreve a instalação e a configuração do SDK e ADT do Android e descreve um pouco sobre a Integrated Development Environment (IDE) do Eclipse. Para instalar o SDK é preciso ter instalado a versão mais recente de dois softwares que não fazem parte do SDK, que são o Java Development Kit (JDK), que oferece ferramentas como o compilador Java, e o IDE do Eclipse. Pode-se desenvolver em outras IDE’s, a escolha do Eclipse se deve ao fato de oferecer suporte ao maior número de ferramentas do SDK do Android. Caso o JDK já esteja instalado não é necessário reinstalá-lo. Para fazer o download do Eclipse, é só escolher uma das versões, conforme figura A.1, para este projeto foi utilizado o Eclipse Classic, extrair da pasta e começar a utilizar, disponível neste endereço: http://www.eclipse.org/downloads/. Figura A.1 – Página de download da IDE do Eclipse. Fonte: Eclipse, 2013. Para fazer o download do JDK, basta abrir a página de download e automaticamente será detectada a versão do sistema, assim como está representado na figura A.2, disponível em: http://www.oracle.com/technetwork/java /javase/do wnloads/index.html. 56 Figura A.2 – Página de downloads do JDK. Fonte: Oracle, 2013. Com esses softwares instalados, basta baixar o SDK do Android correspondente ao seu sistema e extrair os arquivos, conforme a figura A.3, disponível no endereço: http://developer.android.com/sdk/index.html. Figura A.3 – Página de download do SDK do Android. Fonte: Android Developers, 2013. 57 Depois de baixado e descompactado, abra a pasta e acesse o arquivo SDK Manager, é um gerenciador de downloads, no qual é possível instalar pacotes que oferecem suporte a diversas versões do Android e a vários níveis de API, conforme mostra a figura A.4. Figura A.4 – SDK Manager. Fonte: Próprios autores, 2013. É possível escolher qualquer versão em que se deseja desenvolver, desde a mais recente até a mais antiga. É importante lembrar que o SDK Manager é um gerenciador de downloads, e dependendo da conexão com a Internet e da quantidade de pacotes a serem baixados, poderá demorar muito tempo. Depois de instalado e feito o download das versões necessárias, é possível criar uma máquina virtual delas com configurações simulando um smartphone ou tablet, através do AVD Manager. É possível simular o tamanho da tela, o tamanho da memória e outras características do hardware emulado. É necessário tê-lo configurado com uma versão do Android para poder testar suas aplicações, caso não tenha um dispositivo real. Para criar uma nova máquina virtual abra o AVD Manager, que já está incluído no pacote no SDK, e clique em new, depois dê um nome, escolha o 58 tamanho da tela, a versão em que deseja criar a máquina e as características do hardware a ser emulado, conforme a figura A.5. Na escolha das versões aparecerão escrito Android e a outra Google, representando a mesma versão. A diferença entre elas é que a que está escrito Google, já possui a aplicação do Google Maps, caso haja necessidade de testar alguma aplicação que use o aplicativo. Figura A.5 – Criando uma máquina virtual Android no AVD Manager. Fonte: Próprios autores, 2013. Com o SDK e o AVD instalados e configurados, para começar a programar é preciso de uma IDE para o desenvolvimento e para isso foi utilizado o Eclipse. O Eclipse é uma que foi criado pela IBM em 2001. A IBM doou todo o código do Eclipse para a Eclipse Foundation, empresa fundada em 2004, que não visa a lucratividade e se mantém através de seus associados que hospedam projetos do Eclipse e que tem a responsabilidade de gerenciar e dirigir o desenvolvimento contínuo do Eclipse. Este software livre é uma plataforma, baseada em Java, para o desenvolvimento de aplicações, no qual é composto de estruturas e ferramentas para o desenvolvimento e gerenciamento de softwares. O Eclipse possui diversos 59 plug-ins e a possibilidade de se adicionar mais, para procurar atender diferentes necessidades de diferentes programadores. Dentre estes se podem citar o Java Development Toolkit (JDT), responsável por interpretar todo o código Java, além de plug-ins para gerar diagramas Unified Modeling Language (UML), que suportam servidores de aplicações e até visualizadores de banco de dados. Embora seja desenvolvido na linguagem de programação Java, o Eclipse não se limita apenas ao Java, já que existem plug-ins que suportam diferentes linguagens de programação como C/C++ e COBOL. (ANISZCZYK, 2012) Esta IDE gera uma workspace, ou um espaço de trabalho que define um diretório que será gravado os projetos e as configurações. O Eclipse possui inovações em relação à maioria das IDEs. Possui a funcionalidade de customização do ambiente de trabalho, no qual é composto por painéis, conhecidos como visualizações, no qual várias visualizações denomina-se perspectiva, que é um conjunto básico de visualizações para gerenciar projetos, visualizar e editar arquivos de um projeto. Usa a biblioteca gráfica chamada Standart Widget Toolkit (SWT), que utiliza componentes nativos do sistema operacional. (ANISZCZYK, 2012) Também, possui a ferramenta, no qual à medida que o código é salvo o Eclipse compila em segundo plano e verifica possíveis erros de sintaxe, por padrão esses erros são sublinhados em vermelho, e um ponto vermelho aparece na margem indicando o local. Outros erros são indicados com uma lâmpada na margem esquerda, estes são problemas que o editor encontrou recursos para possível correção. Assim que o código é compilado sem erros é possível executar o programa. Também é possível executar o código no depurador Java, com a possibilidade de definir pontos de interrupções. (ANISZCZYK, 2012) Outro recurso disponível é o quick fixes, que corrige boa parte dos erros na programação e ajuda na digitação de códigos repetitivos. Também existe o refactor, que auxilia na alteração do código, para melhorar a clareza e organizá-lo, faz com que ao mudar o nome de uma variável, método ou mesmo uma classe, haja a atualização de todas as outras referências usadas no código. (ANISZCZYK, 2012) Após conhecer um pouso da plataforma, temos que adicionar ao Eclipse um plug-in Android Developer Toolkit (ADT), que adiciona funcionalidades específicas do Android, no qual permite que o Eclipse compile aplicativos para o Android, inicie o emulador Android, se conecte aos seus serviços de depuração, edite arquivos 60 Extensible Markup Language (XML) e crie pacotes de aplicativos para o Android, arquivos com extensão .apk. Para configurar esse plug-in no Eclipse entre no menu Help e acesse a opção Install New Software. No campo Work With digite o seguinte endereço: https://dl-ssl.google.com/android/eclipse/. Clicando em Add aparecerão alguns plugins, marque a opção Developer Tools, conforme a figura A.6, depois continue, clicando em Next. Figura A.6 – Adicionando plug-in do Android ao Eclipse. Fonte: Próprios autores, 2013. Na página seguinte aparecerá apenas se a instalação deu certo, então clique em Next novamente. Em seguinte terá que aceitar os termos de uso de determinados aplicativos. Por fim apenas clicando em Finish o Eclipse irá reiniciar. Assim tudo estará pronto para começar o desenvolvimento para aplicações Android. Para criar uma aplicação Android, abra o Eclipse entre no menu File e na opção New, clique em Project. Na janela que abre selecione Android Application Project e clique em Next. Em seguida aparecerá uma janela em que terá que colocar o nome da aplicação, do projeto e do pacote do projeto, e escolher qual será a mínima versão do Android suportada, a versão máxima suportada, a versão em que o aplicativo será compilado e um tema para o aplicativo, que dependerá da versão 61 escolhida. Figura A.7 – Criação de um projeto Android. Fonte: Próprios autores, 2013. Clicando em Next, aparecerá alguns itens para serem escolhidos ou não, como criar ícone customizável para o aplicativo, criar uma Activity inicial, que é uma atividade em que cada tela possui uma e o caminho a ser salvo o projeto. Figura A.8 – Criação de um projeto Android. Fonte: Próprios autores, 2013. 62 Na próxima tela, será a escolha do ícone da aplicação, no qual é disposto em três tamanhos diferentes, devido a grande variedade de resoluções de telas nos dispositivos com Android. Pode-se deixar o ícone padrão ou procurar um na opção Image File. Clicando em Next aparecerá uma janela para escolha do tema da Activity criada, essa também dependerá da versão escolhida, pois algumas versões mais antigas não dão suporte a temas. Depois do Next, surgirá a última tela, em que é escolhido o nome da Activity criada e do layout da aplicação, e o modo da navegação da aplicação, mas esta opção dependerá da versão escolhida para o desenvolvimento. Após isso clique em Finish. Figura A.9 – Criação de um projeto Android. Fonte: Próprios autores, 2013. Após finalizar, o Eclipse criará o projeto com diversas pastas, criando uma estrutura de diretórios e arquivos. A pasta src, é o diretório do projeto que contém as classes Java, é onde foi criado a Activity. O diretório gen contém a classe R, que é gerada automaticamente e permite que a aplicação acesse recursos como arquivos e imagens utilizando as constantes desta classe, está classe jamais deve ser alterada manualmente. A pasta assets contém arquivos opcionais do projeto, como uma fonte customizada. O diretório res contém recursos da aplicação, como imagens, layouts das telas e arquivos de internacionalização, no qual possui três subpastas: drawable, layout e values. A pasta drawable contém as imagens da 63 aplicação, incluindo o ícone, possui três pastas para colocar imagens de diferentes resoluções para ficar com tamanhos bons para cada tela. A pasta layout contém arquivos Extensible Markup Language (XML) de layouts para construir telas de aplicação e com a possibilidade de editá-las com o editor do Eclipse. O diretório values contém os arquivos XML utilizado para internacionalização da aplicação. Figura A.10 – Criação de um projeto Android. Fonte: Próprios autores, 2013. A Activity criada possui a estrutura ilustrada na figura A.11, no qual é uma herança da classe Activity e o acessar a qualquer componente do layout, inclusive o próprio layout, deve-se usar a classe R. Figura A.11 – Código inicial de um projeto Android. Fonte: Próprios autores, 2013. 64 Para ser compilado deve-se ter configurado uma máquina virtual no AVD compatível com a versão criada, ou ter plugado no computador pelo Universal Serial Bus (USB). Para executar clique no play localizado nas opções, ou clique com o botão direito em cima do projeto, selecione a opção Run as e clique em Android Application, já será detectado se tem algum dispositivo Android plugado no computador, se não irá abrir o AVD Manager caso tenha mais de uma máquina virtual, ou se tiver apenas uma abrirá direto. Assim o aplicativo executará. Figura A.12 – Aplicativo compilado pela máquina virtual. Fonte: Próprios autores, 2013. 65 APÊNDICE B – CONFIGURAÇÃO DA API DO GOOGLE MAPS Este anexo descreve a configuração da API do Google Maps em um projeto Android. Para começar a configuração é necessário obter a APP Key, que é uma chave única para cada aplicativo, necessária para fazer a comunicação com o Google Maps. Esta chave é gerada através de um certificado digital conhecido com SHA-1. Para obter este certificado, que é único para cada computador, basta digitar o comando abaixo no Prompt de Comando do Windows na seguinte pasta: C:\Program Files\Java\jre7\bin. Após obtido o certificado digital SHA-1, é preciso acessar o site: https://cloud.google.com/ e clicar em Get Started, para obter a chave do Google Maps. Em seguida irá solicitar a criação de um novo projeto, conforme figura B.1. Figura B.1 – Criando um projeto no Google Cloud. Fonte: Google Cloud, 2013. Com o projeto criado é possível adicionar diversos recursos. Dentro do projeto o menu do lado esquerdo possui a opção APIs & auth e no submenu desta, a opção API, que lista todas as APIs do Google. Para utilizar o Google Maps dentro de um aplicativo Android, utilizou-se a API Google Maps Android API v2. Clicando nela basta liga-la, pois de padrão todas as APIs ficam desligadas. A figura B.2 representa a tela do Google Cloud com a API do Google Maps Android habilitada. 66 Figura B.2 – API Google Maps Android habilitada. Fonte: Google Cloud, 2013. Acessando a opção Registered Apps no menu, aparecerá a opção Register App e em seguida um pequeno formulário deverá ser preenchido com o nome do aplicativo e do pacote e com o certificado SHA-1, conforme figura B.3. Figura B.3 – Registrando novo aplicativo Google Cloud. Fonte: Google Cloud, 2013. Na tela seguinte na opção Android Key já irá aparecer a API Key. Antes de realizar o exemplo com o Google Maps, é necessário realizar o download no próprio SDK Manager do Android o arquivo Google Play Service que traz a biblioteca do Google Maps, conforme figura B.4. 67 Figura B.4 – Facebook Developers. Fonte: Próprios autores, 2013. Após instalada, a biblioteca se encontrará dentro da pasta Android>Extras>google>google_play_services>libproject e deverá ser adicionada ao projeto. Antes é preciso criar o projeto selecionando uma versão Google API, com Android 4.0+ e lembrando que o pacote deve possuir o mesmo nome que foi dado no registro do aplicativo no Google Cloud. A estrutura do projeto está representada na figura B.5. Figura B.5 – Estrutura do projeto Mapas. Fonte: Próprios autores, 2013. 68 Para adicionar a biblioteca do Google Service deve-se selecionar a opção File>Import>Existing Android Code Into Workspace, e procurar a biblioteca. Logo após, será necessário adicionar ao projeto está biblioteca, selecionando o projeto e acessando a opção Project>Properties e na opção Library, basta ir em Add e selecionar a biblioteca do Facebook adicionada anteriormente, conforme figura B.6. Figura B.6 – Adicionando a biblioteca do Google Service ao projeto. Fonte: Próprios autores, 2013. A figura B.7 representa parte do arquivo AndroidManifest.xml, no qual é necessário fornecer algumas permissões para o aplicativo e a figura B.8 representa o local que se deve colocar o APP Key para acessar o Google Maps dentro deste mesmo arquivo. Figura B.7 – Permissões no AndroidManifest.xml. Fonte: Próprios autores, 2013. Figura B.8 – APP Key AndroidManifest.xml. Fonte: Próprios autores, 2013. 69 Para este exemplo foram criadas duas classes, a Principal, que é uma atividade, é responsável apenas por abrir a classe Mapa, que é um Fragmento. A classe Principal está representado na figura B.9 e seu layout, o principal.xml, na figura B.10. Figura B.9 – Código classe Principal. Fonte: Próprios autores, 2013. Figura B.10 – Código principal.xml. Fonte: Próprios autores, 2013. A figura B.11 representa a classe Mapa que é responsável por trazer o mapa na tela e a figura B.12 representa o layout desta classe, o arquivo mapa.xml. Figura B.11 – Código classe Mapa. Fonte: Próprios autores, 2013. 70 Figura B.12 – Código mapa.xml. Fonte: Próprios autores, 2013. Está quase pronto, antes porém é necessário instalar no emulador dois aplicativos necessários para o funcionamento do mapa. Estes arquivos estão disponíveis nos sites: https://www.dropbox.com/s/udjg63v0m8ual1f/com.android. vending-20130716.apk e https://www.dropbox.com/s/al5sn58t9ju7jm4/com.google. android.gms-20130716.apk. Para instalar no emulador é preciso primeiramente abrir o emulador e depois abrir o Prompt de Comando e ir até a pasta do Android, no seguinte caminho: Android>platform-tools e digitar o comando abaixo para cada aplicativo. Assim executando o aplicativo, exibirá o mapa, conforme figura B.13. Figura B.13 – Tela do Exemplo Mapas. Fonte: Próprios autores, 2013. 71 APÊNDICE C – CONFIGURAÇÃO DA API DO FACEBOOK Este anexo descreve sobre a configuração da API do Facebook em um projeto Android. Para começar a configuração é necessário realizar o download do SDK do Facebook, disponível https://developers.facebook.com/resources no endereço: /facebook-android-sdk-current.zip. Também é necessário configurar o aplicativo no Facebook Developers, através do site: https://developers.facebook.com/, acessando a opção Apps, disponível na barra de menu superior, conforme representa a figura C.1. Figura C.1 – Facebook Developers. Fonte: Facebook Developers, 2013. Na página seguinte aparecerá a opção Criar Novo Aplicativo, no qual será cadastrado o aplicativo que deseja obter acesso ao Facebook. A figura C.2 representa a opção Criar Novo Aplicativo. Figura C.2 – Opção de Criar Novo Aplicativo Facebook. Fonte: Facebook Developers, 2013. 72 Clicando em continuar, irá surgir uma tela de verificação de segurança, no qual basta preencher o campo com o texto da imagem. Com esta primeira etapa concluída, a tela seguinte terá algumas configurações básicas para a aplicação, como o nome do aplicativo e a opção de Sandbox Mode, que restringe a visualização das publicações realizadas pelo aplicativo apenas ao desenvolvedor, além de apresentar o App ID, que será o código de acesso entre o aplicativo e o Facebook. A figura C.3 representa a tela das configurações básicas. Figura C.3 – Configurações básicas API Facebook. Fonte: Facebook Developers, 2013. Após este procedimento deve-se selecionar a opção Aplicativo Nativo do Android, disponível um pouco mais abaixo. Antes de preencher estes campos é necessário possuir a Key Hashes, uma chave que é única para cada computador. Para obtê-la basta digitar o comando abaixo no Prompt de Comando do Windows na seguinte pasta: C:\Program Files\Java\jre7\bin. Agora deve-se preencher, o nome do pacote e da classe do projeto Android que deverá ser igual ao que será criado, selecionar se deseja ou não uma tela de login padrão do Facebook e uma tela de publicação e copiar a chave para o campo Key Hashes, conforme a figura C.4. 73 Figura C.4 – Configurações básicas API Facebook. Fonte: Facebook Developers, 2013. Finalizado estas configurações deve-se salvar na opção disponível no fim da página. Agora é necessário criar o aplicativo que acesse o Facebook, por meio da API. Crie um aplicativo com os dados usados na configuração no Facebook, apenas o nome do projeto pode ser diferente, conforme figura C.5. Figura C.5 – Estrutura do projeto APIFacebook. Fonte: Próprios autores, 2013. É preciso adicionar o SDK do Facebook ao projeto. Deve-se selecionar a opção File>Import>Existing Android Code Into Workspace, e procurar a pasta do SDK e selecionar apenas o projeto Facebook, que na verdade é uma biblioteca. Logo após, será necessário adicionar ao projeto está biblioteca, selecionando o projeto e acessando a opção Project>Properties e na opção Library, basta ir em Add e selecionar a biblioteca do Facebook adicionada anteriormente, conforme figura C.6. 74 Figura C.6 – Adicionando a biblioteca do Facebook ao projeto. Fonte: Próprios autores, 2013. Agora o projeto já está pronto para acessar o Facebook. No exemplo, existe um TextView na tela que irá recuperar o nome do usuário e alterar o texto. Para isso é necessário algumas variáveis e alguns métodos, como explica o código abaixo, conforme figura C.7. Figura C.7 – Código para acessar e recuperar o nome do Facebook. Fonte: Próprios autores, 2013. 75 O arquivo activity_main.xml deverá possuir a seguinte forma, conforme figura C.8. Figura C.8 – Código da tela activity_main.xml. Fonte: Próprios autores, 2013. Antes de executar o projeto é necessário fornecer ao projeto a permissão de acesso à Internet, adicionando o trecho abaixo ao arquivo AndroidManifest.xml. A figura C.9 representa a execução do projeto, no qual abrirá a autenticação do Facebook, solicitando o login e a senha. Em seguida, será apresentado ao usuário as permissões que o aplicativo precisa e se autoriza publicar em sua linha do tempo, após concluído a tela da aplicação mostrará o nome do usuário, conforme figura C.9. Figura C.9 – Telas do exemplo em funcionamento. Fonte: Próprios autores, 2013.