EasyLocalizer
Transcrição
EasyLocalizer
EasyLocalizer Isaura de Fátima Rodrigues Medeiros, Nº 21907 Ricardo José Lopes da Silva, Nº 20198 Trabalho realizado sob a orientação de Paulo Matos Jorge Alves Engenharia Informática 2012/ 2013 EasyLocalizer Relatório da UC de Projecto Licenciatura em Engenharia Informática Escola Superior de Tecnologia e Gestão Isaura Medeiros, Ricardo Silva 2012/2013 iii A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. iv Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. ___________________________________________ Paulo Jorge Teixeira Matos - Orientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. ___________________________________________ Jorge Alves - Coorientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. ___________________________________________ - Arguente Aceite para avaliação da UC de Projecto v vi Dedicatória Dedicamos este projecto especialmente aos nossos pais Carminda Medeiros & Armando Medeiros e Conceição Lopes & José da Silva e ainda aos nossos irmãos Carlos Medeiros, Armando Medeiros, Fernando Medeiros, Filipa da Silva e Duarte da Silva, pessoas pelas quais temos uma grande admiração, um grande orgulho e que sempre nos apoiaram, em todos os momentos das nossas vidas. Um muito obrigado a todos eles. vii viii Agradecimentos Queremos agradecer ao nosso orientador, Professor Paulo Matos, por toda a sua orientação, apoio e disponibilidade prestados durante este ano lectivo. Queremos agradecer às nossas famílias, em especial aos nossos pais Carminda Medeiros & Armando Medeiros e Conceição Lopes & José da Silva, pelo apoio emocional e financeiro prestado não só durante este ano lectivo mas também durante a realização do curso, e ainda aos nossos irmãos Carlos Medeiros, Armando Medeiros, Fernando Medeiros, Filipa da Silva e Duarte da Silva, que nunca nos deixaram desanimar, sempre nos indicando os melhores caminhos, um enorme obrigado por acreditarem sempre em nós e naquilo que fazemos e por todos os ensinamentos de vida que nos dão. Por fim, queremos agradecer a todos os nossos amigos e colegas que nos acompanharam durante a realização do projecto e que sempre nos acompanharam durante as nossas vidas. Esperamos que esta etapa, que agora terminamos, possa, de alguma forma, retribuir e compensar todo o carinho, apoio e dedicação que constantemente nos oferecem. A eles, dedicamos todo este trabalho. ix Resumo O desenvolvimento de aplicações para smartphones é uma área relativamente recente, mas que tem vindo a crescer a um ritmo bastante rápido. É uma área que surge de uma forma natural devido à grande evolução das características dos smartphones e também devido à sua crescente popularidade. As grandes comunidades por trás das várias plataformas do mercado (Android, iOS) também ajudam a que esta seja uma área bastante apelativa e com bastantes casos de sucesso. É fácil ter acesso a recursos computacionais, kits de desenvolvimento, documentação e aos diversos dispositivos clientes existentes no mercado. Este trabalho tem o intuito de documentar o desenvolvimento de uma aplicação de pesquisa e caracterização de terrenos, trazendo uma apresentação, e uma possível solução, para as diversas dificuldades encontradas no processo. Palavras-chave: Aplicações móveis, geolocalização, Android, GPS. x xi Abstract The development of mobile applications is an recent area that has been growing quickly. It is an area that arises in a natural way due to the great evolution of the characteristics of smartphones and also due to its increasing popularity. The large communities behind the several platforms of the market (Android, iOS) also contribute to make this a quite appealing area with several success stories. It is easy to access the computing resources, development kits, documentation and devices sold on the market. This study aims to document the development of an application to search and characterize rustic properties, supplying a presentation and a possible solution to the problems found in the process. Keywords: Mobile applications, geolocalization, Android, GPS. xii xiii Conteúdo 1 Introdução .......................................................................................................................... 1 2 Arquitectura e Tecnologias ............................................................................................... 4 2.1 Descrição detalhada do problema ................................................................................. 4 2.2 Arquitectura da aplicação ............................................................................................. 5 2.3 Modelo relacional ......................................................................................................... 6 2.4 Diagrama de casos de uso ............................................................................................. 6 2.5 Diagrama de sequência ................................................................................................. 7 2.6 Tecnologias utilizadas ................................................................................................... 9 2.6.1 O Android ............................................................................................................... 9 2.6.2 A plataforma Android .......................................................................................... 10 2.6.3 Arquitectura do Android ...................................................................................... 10 2.6.4 SDK ...................................................................................................................... 12 2.6.5 Linguagem Java.................................................................................................... 12 2.6.6 IDE Eclipse .......................................................................................................... 13 2.6.7 PHPMyAdmin ...................................................................................................... 13 2.6.8 Filezilla ................................................................................................................. 13 2.6.9 Notepad++ ............................................................................................................ 14 2.6.10 GPS ................................................................................................................... 14 3 Implementação ................................................................................................................. 16 3.1 Diagrama de classes .................................................................................................... 16 3.2 Desenvolvimento da aplicação ................................................................................... 17 4 Tutorial ............................................................................................................................. 28 4.1 Menu principal ............................................................................................................ 29 4.2 Preferências ................................................................................................................. 29 4.3 Marcar terreno ............................................................................................................. 32 4.4 Procurar terreno .......................................................................................................... 36 5 xiv Conclusão ......................................................................................................................... 40 xv Lista de Figuras Figura .1– Arquitectura da aplicação. ................................................................................................................. 5 Figura .2– Modelo relacional da base de dados. ................................................................................................. 6 Figura .3– Diagrama de casos de uso................................................................................................................... 7 Figura .4– Diagrama de sequência de inserir preferências. .............................................................................. 8 Figura .5– Diagrama de sequência de registar propriedade. ............................................................................ 8 Figura .6– Diagrama de sequência de procurar propriedades. ......................................................................... 9 Figura .7– Arquitectura do Android. ................................................................................................................ 11 Figura .8– Diagrama de classes. ......................................................................................................................... 16 Figura .9– Classes do projecto na IDE Eclipse. ................................................................................................ 17 Figura .10– Arquivos XML no projecto na IDE Eclipse. ................................................................................ 18 Figura .11– Classe Principal e o método onCreate(). ....................................................................................... 18 Figura .12– Botões marcação e procurar terrenos com evento de clique. ...................................................... 19 Figura .13– criação do menu do telemóvel. ....................................................................................................... 19 Figura .14– Código de Layout do MainMenu em XML. ................................................................................. 20 Figura .15– Função doTimerTask(). .................................................................................................................. 21 Figura .16– Função MyLocationListener. ......................................................................................................... 21 Figura .17– Classe enviardados. ........................................................................................................................ 22 Figura .18– Função IsNetowrkAvailable. ......................................................................................................... 22 Figura .19– Função enviar coordenada. ............................................................................................................ 23 Figura .20– Código PHP de armazenamento. ................................................................................................... 24 Figura .21– Código PHP de procura de terrenos. ............................................................................................ 24 Figura .22– Código PHP de calcular distância entre duas coordenadas. ....................................................... 25 Figura .23– Código PHP ordenar terrenos. ...................................................................................................... 25 Figura .24– Código PHP ordenar terrenos. ...................................................................................................... 26 Figura .25– Excerto do código do AndroidManifest.xml. ................................................................................ 26 Figura .26– Dispositivo Sapo A5 utilizado para a validação. .......................................................................... 28 Figura .27– Janela menu principal. ................................................................................................................... 29 Figura .28– Janela preferências. ........................................................................................................................ 30 Figura .29– Janela preferências, inserir segundos ........................................................................................... 30 Figura .30– Janela preferências, inserir nome. ................................................................................................. 31 Figura .31– Janela preferências, inserir o contacto.......................................................................................... 31 Figura .32 Janela preferências, inserir morada. ............................................................................................... 32 Figura .33– Janela preferências, inserir descrição do terreno. ....................................................................... 32 Figura .34– Janela guardar terreno................................................................................................................... 33 Figura .35– Janela guardar terreno, obter GPS. .............................................................................................. 33 Figura .36– Janela guardar terreno, gravação parada. ................................................................................... 34 Figura .37– Janela guardar terreno, a gravar. ................................................................................................. 35 Figura .38– Janela guardar terreno, enviar. ..................................................................................................... 35 Figura .39– Janela guardar terreno, mensagem de envio. ............................................................................... 36 Figura .40– Janela procurar terreno, Layout inicial........................................................................................ 37 Figura .41– Janela procurar terreno, procurar................................................................................................ 37 Figura .42– Janela procurar terreno, lista de terrenos. ................................................................................... 38 Figura .43– Janela procurar terreno, terreno seleccionado. ........................................................................... 38 xvi xvii Lista de Abreviaturas GPS – Global Positioning System 3G – Terceira Geração 4G – Quarta Geração OHA – Open Handset Aliance HTC – High Tech Computer Corporation SDK – Software Developers Kit 2D – Duas Dimensões 3D – Três Dimensões APIs - Application Programming Interface PHP - Hypertext Preprocessor FTP - File Transfer Protocol GPL - General Public License WPS - Wireless Provisioning Services ADT - Android Development Tools XML - eXtensible Markup Language JSON - JavaScript Object Notation xviii xix Capítulo 1 1 Introdução Este trabalho de projecto visa a concepção e o desenvolvimento de uma solução para identificação e caracterização geográfica de propriedades rústicas (terrenos), assente numa plataforma móvel, como por exemplo um telemóvel, equipada com sistema operativo Android, GPS (Global Positioning System) e acesso à Internet (3G/4G). Concretamente, os objectivos para este projecto são: Solução para caracterização das propriedades rústicas. Sempre que esta for activa, a aplicação solicita ao utilizador informação identificativa e descritiva da propriedade (designação, descrição e outros que venham a ser pertinentes).Posteriormente, começa o processo de recolha das coordenadas geográficas. O utilizador, ao deslocar-se pelo perímetro da propriedade vai, através de um simples pressionar do botão, adicionar coordenadas à descrição da propriedade. Findo esta fase, todos os dados devem ser remetidos para um servidor web, no sentido de salvaguardar a informação (incluindo as coordenadas recolhidas). Solução para identificação de propriedades rústicas. Dada a actual coordenada geográfica do utilizador, esta solução deverá consultar o servidor web no sentido de facultar qualquer informação que possa existir sobre as propriedades que se encontram em torno de um raio pré - definido. A metodologia utilizada foi a pesquisa prática onde fomos testando a informação recolhida para a construção do nosso projecto. 1 Este relatório está organizado em 5 capítulos. Este, onde é feita a introdução, a definição dos objectivos principais e caracterização da estrutura do documento. No capítulo 2 é apresentada a arquitectura concebida para a solução e as tecnologias utilizadas na sua concretização. No capítulo 3, explicam-se os detalhes mais pertinentes sobre a implementação do projecto, onde tem uma pequena análise e exemplos. O capítulo 4 consiste num tutorial do desenvolvimento do projecto, para que através deste tutorial se consiga inteirar de todo o conteúdo do trabalho. No último capítulo, apresenta-se o resumo do projecto, incluindo uma análise autocrítica, linhas de investigação para trabalhos futuros. 2 3 Capítulo 2 2 Arquitectura e Tecnologias 2.1 Descrição detalhada do problema A evolução das tecnologias e dos dispositivos móveis como o melhoramento do serviço de localização por satélite, nomeadamente em termos de precisão, são elementos fundamentais para o surgimento de aplicações como a que foi desenvolvida no âmbito deste trabalho. Este projecto tem como objectivo o desenvolvimento de uma aplicação para telemóveis, equipados com sistema operativo Android, GPS e acesso à Internet, para ter acesso à base de dados, para ver e guardar a caracterização das propriedades rústicas. A aplicação é composta por dois subsistemas distintos, mas complementares nas suas funções. O primeiro visa a caracterização de propriedades rústicas. Ao executar esta parte da aplicação, é mostrado um painel onde se registam os dados da propriedade, designadamente nome e contacto do proprietário, localização e descrição do terreno. Posteriormente, decorre um período de recolha automática de coordenadas geográficas durante o qual o utilizador percorre o perímetro geográfico da propriedade. Essas coordenadas vão caracterizar a propriedade em termos de dimensão, localização e limites. A aplicação faz a gravação das coordenadas, remetendo tudo para um servidor web, no sentido de salvaguardar a informação. O utilizador pode ainda fazer uma nova gravação, onde seleccionando o botão “Nova Gravação” elimina todas as coordenadas da gravação anterior e mostra o formulário das preferências para alteração de valores relativos á nova gravação. 4 O segundo subsistema, tendo por base a posição geográfica do utilizador, permite obter informação da propriedade afecta a essa posição, caso esta exista no servidor web; ou das propriedade circundantes que se encontrem dentro de um raio pré-definido pelo utilizador e que também estejam caracterizadas no servidor web. 2.2 Arquitectura da aplicação Figura .1– Arquitectura da aplicação. A base de dados do servidor é onde são geridos os vários registos efectuados pelo utilizador e guardada a informação relativa às propriedades que este for inserindo. O GPS permite recolher as coordenadas que o utilizador procura para a área dos terrenos. 5 2.3 Modelo relacional Figura .2– Modelo relacional da base de dados. A base de dados que está localizada num servidor remoto é uma base de dados SQL, com duas tabelas, a tabela Informação e a tabela Coordenada. A tabela Informação está relacionada à tabela Coordenada com cardinalidade de (1,n), de forma que uma informação de terreno possa ter várias coordenadas diferentes. O diagrama Entidade Relacionamento (ER) da base de dados utilizada está ilustrado na figura 2. Essa base de dados foi instalada e manipulada usando o software Wamp Server, que é distribuído gratuitamente e inclui Apache, PHP5 (Hypertext Preprocessor 5), MySQL database, PHPmyadmin e SQLitemanager, sendo acedida via /localhost. 2.4 Diagrama de casos de uso Um caso de uso representa a interacção dos atores com o sistema e pode ser representado por uma descrição simples e em linguagem natural. Isso ajuda a identificar os objectos e a compreender o que a aplicação deve realizar. A figura 3 demonstra o diagrama de caso de uso referente à interacção dos atores com a aplicação executada no dispositivo móvel. 6 Figura .3– Diagrama de casos de uso. Na arquitectura são propostos sete casos de uso que representam funcionalidades disponíveis e interacções dos atores envolvidos com o sistema. No primeiro caso denominado por “Gerir preferências”, deverá exibir um formulário para o utilizador preencher com os dados acerca da propriedade a ser guardada. Em “Procurar área” está incluído o “Obter GPS” e “Buscar dados de pesquisa” onde se faz a procura de propriedades a uma distância máxima inserida pelo utilizador. No “Registar área” temos estendido o “Recolher coordenadas” e incluído o “Enviar dados”, onde fazemos a recolha das coordenadas e por fim o envio dos dados acerca da propriedade a ser guardada. 2.5 Diagrama de sequência O diagrama de sequência demonstra como são realizadas as interacções entre os componentes de forma sequencial. Nos diagramas exibidos nas próximas três figuras, é possível verificar a sequência de interacções encontradas na aplicação. 7 Figura .4– Diagrama de sequência de inserir preferências. Figura .5– Diagrama de sequência de registar propriedade. 8 Figura .6– Diagrama de sequência de procurar propriedades. 2.6 Tecnologias utilizadas 2.6.1 O Android O Android foi um projecto inicialmente desenvolvido por uma Start - Up americana em Palo Alto (Califórnia – USA) chamada Android Inc que desenvolvia uma plataforma para telemóveis baseada em Linux, com o objectivo de ser uma plataforma flexível, aberta e de fácil migração para os fabricantes. Esta empresa foi comprada pela Google em 2005, que por sua vez tratou de estudar o projecto e o tornou público em finais de 2007 com o objectivo de apresentar a primeira plataforma Open Source de desenvolvimento para dispositivos móveis. Actualmente o Android é mantido por um grupo denominado Open Handset Alliance (OHA), que é formado por mais de 33 empresas das quais a própria Google, Motorola, Sony Ericsson, Samsung, HTC (High Tech Computer Corporation) e outras. 9 2.6.2 A plataforma Android O Android é uma plataforma de desenvolvimento de aplicações para dispositivos móveis baseados em núcleo de Linux. As aplicações são escritas em linguagem Java e são compiladas em bytecodes Dalvik e executadas numa máquina virtual desenvolvida especialmente para utilização em dispositivos móveis denominada por Dalvik virtual machine, que é desenvolvida para o uso nos dispositivos móveis e que possam ser executados em qualquer dispositivo com Android. O Google disponibiliza o Android SDK (Software Developer Kit) que disponibiliza as APIs (Application Programming Interface) e ferramentas necessárias para o desenvolvimento de aplicações, tendo recursos disponíveis, tais como: Application framework que proporciona a reutilização de componentes. Dalvik virtual machine é optimizada para dispositivos móveis. Um browser integrado baseado no webkit engine. Gráficos optimizados permite às aplicações Android utilizar bibliotecas 2D e 3D baseada na especificação OpenGL. SQLite para guardar base de dados estruturada. Suporte multimédia para áudio, vídeo e formatos de imagem. Rico Ambiente de desenvolvimento que apresenta um emulador de dispositivo, ferramentas de depuração, memória e um plugin ADT (Android Development Tools) para o Eclipse. Os recursos Bluetooth, EDGE, câmara, GPS, e acelerómetro também estão presentes, mas dependentes de hardware. 2.6.3 Arquitectura do Android O Android é uma plataforma que integra desde o sistema operativo, até middleware e aplicações, conforme pode ser observado na figura 7. A arquitectura é dividida em diversas camadas que são o núcleo do sistema operativo, bibliotecas, runtime, framework e aplicações. 10 Figura .7– Arquitectura do Android. Na camada do núcleo baseada em Linux (Linux Kernel), é a base da camada. Localiza-se o sistema operativo da plataforma, responsável por serviços denominados de baixo nível como gestão de processos, de memória, segurança, pilha de redes. Na camada de bibliotecas (Libraries), ficam as APIs desenvolvidas em C/C++ e que dão suporte à renderização 3D (OpenGL ES), gestão de base de dados (SQLite) e suporte aos diversos formatos de vídeo e áudio. Na camada de runtime (Android Runtime), encontram-se os componentes como as core libraries, que disponibilizam a API Java necessária para a escrita do código de programação das aplicações, bem como a Dalvik Virtual Machine, que é a máquina virtual que dará condições para que a aplicação Java desenvolvida possa ser executada. Na camada de framework (Application Framework), estão localizadas as APIs que serão utilizadas pelas aplicações que executam sobre a plataforma do Android, como por exemplo, localização e notificação. 11 Na camada de aplicações (Applications), estão representadas as aplicações que são executadas sobre a plataforma, sejam elas nativas como o caso da calculadora, da agenda, dos contactos, do calendário, ou aplicações desenvolvidas por terceiros como é o caso da aplicação que será desenvolvida neste trabalho. Para esta camada, não existe diferença entre aplicações nativas e aplicações de terceiros, todas são escritas com as mesmas APIs e executadas no mesmo runtime, inclusive tendo a possibilidade da troca de uma aplicação nativa por outra que tenha a mesma finalidade e seja desenvolvida por terceiros ou pelo próprio utilizador. 2.6.4 SDK O kit de desenvolvimento para Android (Android SDK) está disponível para Windows, Linux e MacOS, provendo ao desenvolvedor um conjunto rico de ferramentas que inclui um depurador e emulador de smartphone que permite testes em ambientes controlados, bibliotecas básicas para o desenvolvimento Android, documentação, código de exemplo e tutoriais. 2.6.5 Linguagem Java A linguagem utilizada pela plataforma Android é Java. Portanto, ao utilizar o SDK Oficial, a escolha pela linguagem é um pré-requisito. Entretanto, a máquina virtual não é padrão, e sim uma máquina criada especialmente para a plataforma, conhecida como Dalvik. Sendo assim, existe namespace específico do Android, com classes especialmente criadas para este ambiente. Outra grande vantagem é a ampla documentação existente para Java disponível na Internet. A linguagem Java foi criada pela Sun Microsystems, que foi comprada pela Oracle, tendo como base a programação orientada a objectos. 12 2.6.6 IDE Eclipse O IDE (Integrated Development Environment) Eclipse segue o modelo open source de desenvolvimento de software. É utilizado por programadores para o desenvolvimento de aplicações implementadas nomeadamente em Java, suportando ainda outras linguagens de programação. Foi na IBM (International Business Machines) onde se iniciou o desenvolvimento da primeira versão do produto e posteriormente foi doado como software livre para a comunidade. Usamos o Eclipse que tem um meio ambiente para programar, testar e depurar aplicações móveis e permite um processo rápido e fácil para o desenvolvimento de aplicações para Android. 2.6.7 PHPMyAdmin O PHPMyAdmin é uma aplicação web desenvolvida em PHP para administrar o MySQL através da Internet. Com ele, é possível a criação e remoção de bases de dados, criar, remover e alterar tabelas, inserir, remover e alterar campos das tabelas, executar código SQL e manipular campos chaves. 2.6.8 Filezilla Um programa cliente de FTP (File Transfer Protocol) é um programa que serve para estabelecer uma conexão entre um computador local e um outro computador remoto (servidor). O protocolo FTP é usado basicamente para manipular directórios e arquivos noutros computadores de modo rápido e prático. 13 2.6.9 Notepad++ Notepad++ é um editor de texto e de código fonte de código aberto sob a licença GPL (General Public License) que suporta algumas linguagens de programação rodando sob o sistema Microsoft Windows. Algumas das linguagens de programação que o Notepad++ suporta são o C, C++, C#, PHP, HTML, XML, JavaScript. 2.6.10 GPS O GPS (Global Positioning System) é um sistema de navegação por satélite. Foi criado em 1973 pelo Departamento de Defesa dos Estados Unidos da América, entidade ainda responsável pela sua manutenção. Começou por ser conhecido pelo sistema NAVSTAR, e ficou operacional em 1995 com a constelação de 24 satélites. A 1 de Maio de 2000, o presidente dos EUA Bill Clinton retirou as restrições militares ao sistema de posicionamento global, e anunciou que a opção de degradar o sinal GPS durante situações de emergência iria ser retirada, faseadamente, até 2010. Desde então, o número de aplicações comerciais e de utilizadores do GPS aumentou exponencialmente. Segundo uma previsão da RNCOS que é uma empresa de consultadoria, que faz investigação de mercados, estatísticas e avaliação de marcas, irão ser comercializados mundialmente entre 2012 e 2015, cerca de 1.015 milhões de dispositivos GPS. O GPS é o sistema mais referenciado e usado nos serviços baseados em localização. A maior parte das aplicações móveis para smartphones usa o GPS como tecnologia preferencial para cálculo da posição geográfica, por ser mais exacto e mais preciso, quanto comparado com outras tecnologias de localização, como as Torres de Células ou o WPS (Wireless Provisioning Services). Uma das limitações do GPS quando comparado com as técnicas alternativas de cálculo da posição nos smartphones é o consumo de bateria, mais elevado do que quando é usado o WIFI, Bluetooth ou antena rádio do smartphone. Outra limitação é a perda de sinal no interior de casas ou meios urbanos com fraco sinal de satélite, como por exemplo, entre edifícios altos, perdendo-se assim precisão. Uma das técnicas para resolver esta situação é recorrer às alternativas do GPS, como as Torres de Células ou o WPS, ou seja, as mesmas que são usadas para optimizar o consumo de bateria. 14 15 Capítulo 3 3 Implementação Neste capítulo são descritas as instruções de programação da aplicação. 3.1 Diagrama de classes Na implementação do projecto foi utilizada a linguagem Java que é a linguagem indicada para desenvolvimento de aplicações na plataforma Android. A estrutura pode ser analisada segundo o digrama de classes exibido na figura que está apresentada a seguir. Figura .8– Diagrama de classes. 16 3.2 Desenvolvimento da aplicação Para o desenvolvimento foi utilizada a IDE Eclipse juntamente com o plugin ADT. O projecto é composto por cinco classes, as classes MainActivity, MainMenu, MostraTerreno, Preferences e ProcuraTerrenosActivity. Cada classe está associada a um determinado arquivo descritor XML criado na pasta Layout e que define os componentes a serem exibidos. A figura 7 exibe a estrutura do projecto no que se refere às classes implementadas. Figura .9– Classes do projecto na IDE Eclipse. Apesar de a plataforma Android permitir que a codificação de interfaces de forma procedimental, permitindo codificar os elementos directamente nas classes, é recomendada como uma boa prática de programação a construção das interfaces de forma declarativa utilizando descritores XML, pois proporcionam a separação dos elementos de Layout (componentes gráficos de interface) do código propriamente dito, facilitando desta forma manutenções futuras da aplicação. A figura 10 exibe a estrutura do projecto na IDE Eclipse com os arquivos XML implementados para a definição das interfaces do projecto. 17 Figura .10– Arquivos XML no projecto na IDE Eclipse. O código mostrado na próxima figura é um excerto do código da classe MainMenu e o método onCreate. Figura .11– Classe Principal e o método onCreate(). O código dos cliques nos botões de guardar terrenos e procurar terrenos está ilustrado na figura seguinte. 18 Figura .12– Botões marcação e procurar terrenos com evento de clique. Na figura seguinte, é mostrado o código para a criação do menu do telemóvel, onde neste Layout irá ter no menu duas opções, uma das preferências e a outra de fechar a aplicação. Figura .13– criação do menu do telemóvel. Na próxima figura é mostrado o código do Layout do MainMenu.xml. 19 Figura .14– Código de Layout do MainMenu em XML. Na figura 13, está ilustrada a função para a recolha de coordenadas, conforme o tempo definido nas preferências do utilizador, e vai adicionando os pares de coordenadas ao objecto JSON (JavaScript Object Notation) e adiciona no mapa os pontos onde as coordenadas são tiradas e desenha as linhas entre os pontos. 20 Figura .15– Função doTimerTask(). Quando fazemos o pedido de obter GPS uma função fica activa, que está ilustrada na próxima figura. Quando activada recebe os valores das coordenadas e faz aparecer no ecrã as coordenadas e os botões para gravar terrenos na base de dados. Figura .16– Função MyLocationListener. 21 A função que está mostrada na figura a baixo, é chamada quando se pressiona o botão “Enviar”, envia o objecto JSON para o servidor web e trata a resposta informando. Caso o envio tenho sido concluído diz que este foi feito com sucesso; caso tenha falhado, diz que o envio falhou. Figura .17– Classe enviardados. Para a aplicação estar funcional terá que ter conexão à Internet. Caso o utilizador não tenha recebe uma mensagem informando que necessita de estar ligado à Internet. Como se pode ver na figura 16. Figura .18– Função IsNetowrkAvailable. 22 Na próxima figura, está ilustrada a função responsável por executar o pedido no servidor para encontrar terrenos num raio definido pelo utilizador. Figura .19– Função enviar coordenada. O código PHP responsável por armazenar as coordenadas e as informações dos terrenos na base de dados está ilustrado na figura que se segue. 23 Figura .20– Código PHP de armazenamento. Código PHP responsável por procurar na base de dados os terrenos que estão dentro do raio de distância definido pelo utilizador, mostrado na figura seguinte. Figura .21– Código PHP de procura de terrenos. 24 Na figura 20, é mostrado o código PHP responsável por calcular a distância em Km entre duas coordenadas GPS. Figura .22– Código PHP de calcular distância entre duas coordenadas. Na procura de terrenos, ao serem mostrados os terrenos encontrados num raio definido pelo utilizador, os terrenos são ainda ordenados do mais próximo até ao mais afastado. Figura .23– Código PHP ordenar terrenos. O código PHP responsável por recolher todas as coordenadas do terreno que o utilizador deseja visualizar, para posteriormente serem usadas para desenhar o terreno na aplicação, está ilustrado na próxima figura. 25 Figura .24– Código PHP ordenar terrenos. Uma aplicação em Android caracteriza-se por um conjunto de actividades (Activities) que vão sendo adicionadas a uma pilha e disponibilizadas para navegação do utilizador. Estas actividades devem estar definidas num arquivo de manifesto denominado por AndroidManifest.xml. Todas as configurações e permissões necessárias para a execução das funcionalidades da aplicação estão guardadas neste mesmo arquivo. No caso do nosso trabalho deve ser observada a permissão para acesso à Internet e a permissão de acesso de localização, caso contrário os procedimentos de integração com a base de dados não funcionam. A figura 23 exibe algum conteúdo do arquivo de AndroidManifest.xml. Figura .25– Excerto do código do AndroidManifest.xml. 26 27 Capítulo 4 4 Tutorial Neste capítulo são descritas as instruções de utilização da aplicação. Para os testes da aplicação foram utilizados dois scripts simples em PHP que consultam e actualizam dados na base de dados MySQL. Tanto os scripts como a base de dados foram alojados num servidor externo ao ambiente no qual estava a ser desenvolvida a aplicação. Para tal, foi escolhido um servidor de alojamento gratuito www.awardspace.com, que possibilitou rodar os scripts PHP e criar a base MySQL. Para os testes foi utilizado o aparelho fabricado pela empresa ZTE cujo modelo é denominado Sapo A5 e que pode ser visto na figura 26. Figura .26– Dispositivo Sapo A5 utilizado para a validação. 28 4.1 Menu principal O menu principal da aplicação possui dois botões, sendo que o botão “Marcação de Terrenos” leva a um novo Layout onde se tem de obter GPS, recolher as coordenadas e enviar os dados para o servido, o botão “Procura de Terrenos” onde leva também a um novo Layout, onde se introduz os quilómetros de distância que queremos para fazer a procura de terrenos. Nestes três Layouts, tem ainda um menu do telemóvel onde se pode também mudar de Layout, tendo ainda a opção de fechar a aplicação ou voltar ao Layout anterior. Figura .27– Janela menu principal. 4.2 Preferências As preferências são os dados a serem introduzidos pelo utilizador relativos ao terreno a ser guardado, como está ilustrado na figura 28. 29 Figura .28– Janela preferências. No intervalo de captura, como é mostrado na figura seguinte, é inserido o intervalo de tempo entre o qual vai ser feita a captura de coordenadas GPS. Figura .29– Janela preferências, inserir segundos No campo nome é inserido o nome do proprietário da área a ser pesquisada, como se pode ver na figura a seguir. 30 Figura .30– Janela preferências, inserir nome. Na figura seguinte, mostra que foi inserido o contacto telefónico do proprietário do terreno. Figura .31– Janela preferências, inserir o contacto. A seguir é apresentada a morada da área a ser gravada. 31 Figura .32 Janela preferências, inserir morada. Na próxima figura, mostra uma breve descrição feita do terreno. Figura .33– Janela preferências, inserir descrição do terreno. 4.3 Marcar terreno Para se guardar um terreno, é necessário ter acesso à Internet e ter GPS. Como se pode ver, na figura seguinte, quando foi testada a aplicação o telemóvel já tinha acesso à Internet. 32 Figura .34– Janela guardar terreno. Depois, é necessário a procura de sinal GPS. Figura .35– Janela guardar terreno, obter GPS. 33 Clicando no botão “Obter GPS” já se consegue ter acesso. Já depois de verificada a obtenção de GPS, aparecerá uma figura idêntica a que está apresentada na figura seguinte, onde depois já se poderá fazer a busca de coordenadas para fazer a marcação de um terreno. Para guardar as coordenadas GPS basta seleccionar “Gravação Parada”, que dá inicio à gravação destas. O utilizador pode ainda fazer uma nova gravação, seleccionando o botão “Nova Gravação” elimina todas as coordenadas da gravação anterior e mostra o formulário das preferências para alteração de valores relativos á nova gravação. Figura .36– Janela guardar terreno, gravação parada. Na figura seguinte, pode-se ver que as coordenadas já estão a ser guardadas. Caso o utilizador queira pausar a gravação que estava a fazer, pode fazê-lo seleccionando o botão “A Gravar“ e depois continuar a sua gravação. 34 Figura .37– Janela guardar terreno, a gravar. Depois de finalizada a recolha das coordenadas, clica-se novamente no botão “A Gravar”, de seguida apresenta um novo botão “Enviar”, botão este que ao seleccionar faz o envio das coordenadas para o servidor. Figura .38– Janela guardar terreno, enviar. 35 Depois de se enviar os dados da propriedade mais as coordenadas para o servidor, é mostrado no ecrã uma mensagem: “Envio para o servidor com Sucesso :D”. Figura .39– Janela guardar terreno, mensagem de envio. 4.4 Procurar terreno Para a procura de propriedades, pode ir através do menu inicial ou pelo menu do telemóvel. Na figura seguinte, está ilustrado o Layout da procura de terrenos, onde basta introduzir um valor em quilómetros de distância máxima. Neste caso foram inseridos 300 km. Depois de introduzidos os quilómetros, selecciona-se o botão “Obter GPS” para se obter a localização actual do utilizador. 36 Figura .40– Janela procurar terreno, Layout inicial. Ao se apanhar GPS, é mostrado um novo botão “Procurar”, que ao clicar nele são mostradas todas as propriedades que distam do utilizador. Figura .41– Janela procurar terreno, procurar. Depois de encontrados as propriedades, é mostrada a lista das mesmas com o nome e contacto do titular, morada e descrição da propriedade. 37 Figura .42– Janela procurar terreno, lista de terrenos. Escolhendo uma propriedade é mostrado no mapa a sua localização, bem como outros dados (nome e contacto do titular). Como se pode verificar, esta propriedade escolhida tem vários pontos de coordenadas. Figura .43– Janela procurar terreno, terreno seleccionado. 38 39 Capítulo 5 5 Conclusão A escolha deste projecto foi motivada por ser com base na plataforma Android. Por ter ferramentas gratuitas que auxiliam o desenvolvimento, aspectos que seguramente facilitam e aceleram o processo de criação de aplicações para dispositivos móveis. Espera-se que este trabalho possa ajudar imobiliárias, serviços públicos, e uso pessoal na procura de propriedades rústicas. A aplicação desenvolvida cumpriu com os objectivos propostos. Era pretendida a realização de uma aplicação para sistema operativo Android, que permitisse a procura e a caracterização geográfica de terrenos. A aplicação foi concluída com sucesso, cumprindo assim todos os requisitos da proposta de projecto. Futuramente poder-se-á fazer o cálculo automático da área das propriedades guardadas na base de dados. 40 Referências bibliográficas [AB 11] Apress The Business of Android Apps Development, Making and Marketing Apps That Succeed, 2011. [MA 11] Manning Android in Action 2nd, 2011. [OR 11] OReilly App Inventor, Create Your Own Android Apps, 2011. [WPB 10] Wrox Press Professional Android 2 Application Development, 2010. [AB 12] Apress Beginning Android 4, 2012. http://luiztools.com/post/Utilizando-o-recurso-de-GPS-em-uma-app-Android.aspx http://blog.caelum.com.br/usando-o-google-maps-e-gps-no-android/ http://www.youtube.com/watch?v=Apgx4zCMwX8&feature=BFa&list=PLFEE82D5D49864E94 http://developer.android.com/guide/topics/graphics/view-animation.html http://www.portugal-a-programar.pt/topic/61736-android-google-maps-api-v2-map-update/ http://www.portugal-a-programar.pt/topic/61761-android-envio-json-e-recepcao/ http://www.portugal-a-programar.pt/topic/61909-ligacao-entre-duas-tabelas/ http://www.portugal-a-programar.pt/topic/61943-problema-android-envio-app-servidor-servidor-app/ http://www.portugal-a-programar.pt/topic/62006-android-limpar-conteudo-json/ https://developers.google.com/maps/documentation/android/start http://developer.android.com/tools/debugging/debugging-devtools.html http://developer.android.com/google/play-services/maps.html http://developer.android.com/reference/packages.html http://developer.android.com/sdk/index.html http://developer.android.com/tools/building/building-cmdline.html http://developer.android.com/tools/publishing/app-signing.html http://developer.android.com/distribute/index.html http://developer.android.com/reference/org/json/JSONObject.html http://stackoverflow.com/questions/10964203/android-removing-jsonobject https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Pol yline http://developer.android.com/guide/components/intents-filters.html http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-nevertimeouts http://www.youtube.com/user/DrBFraser http://developer.android.com/tools/help/adb.html http://rdigital.unicv.edu.cv/bitstream/123456789/90/1/Relatorio_TFC_ArilsonRocha.pdf http://www.rncos.com/Report/IM443.htm http://pt.wikipedia.org/wiki/Android http://www.slideshare.net/natanaelfonseca/introduo-plataforma-android http://en.wikipedia.org/wiki/Android_software_development http://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o) 41 http://www.tecmundo.com.br/android/36875-android-o-dicionario-de-a-a-z.htm#Dalvik Cache http://developer.android.com/tools/sdk/eclipse-adt.html http://sergioprado.org/introducao-ao-funcionamento-interno-do-android/ http://pixxyz.blogspot.pt/2013/03/introducao-ao-desenvolvimento-android.html http://pt.wikipedia.org/wiki/PhpMyAdmin http://pt.wikipedia.org/wiki/Notepad%2B%2B http://pt.wikipedia.org/wiki/FileZilla 42 1