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