30
IMP.ETPM.023-01 Técnico de Gestão de Equipamentos Informáticos Prova de Aptidão Profissional DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID TRIÉNIO DE 2012/2015 AUTOR: RICARDO GONÇALVES, N.º23 PROFESSOR ORIENTADOR: CLÉON ADÓNIS Escola Técnica e Profissional de Mafra, 16 de março de 2015

GPS: Location Tracker - Relatório de PAP

Embed Size (px)

Citation preview

Page 1: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

Técnico de Gestão de Equipamentos Informáticos

Prova de Aptidão Profissional

Desenvolvimento de uma Aplicação GPS para o Sistema Móvel Android

TRIÉNIO DE 2012/2015

AUTOR:

RICARDO GONÇALVES, N.º23

PROFESSOR ORIENTADOR:

CLÉON ADÓNIS

Escola Técnica e Profissional de Mafra, 16 de março de 2015

Page 2: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

ÍNDICE

1 - Resumo............................................................................................................................1

2 - Abstract............................................................................................................................2

3 - Introdução........................................................................................................................3

4 - Descrição do problema....................................................................................................4

5 - Desenvolvimento.............................................................................................................5

5.1. Materiais.......................................................................................................................5

5.2. Equipamentos...............................................................................................................6

5.3. Métodos........................................................................................................................7

5.3.1. Inserir o Mapa.......................................................................................................7

5.3.2. Camera Position..................................................................................................10

5.3.3. Location..............................................................................................................10

5.3.4. Rotas...................................................................................................................11

5.3.5. Camera Position/Zoom/Map Type Programado.................................................12

5.3.6. Location Search/Markers....................................................................................12

5.3.7. Botões de Action Bar..........................................................................................13

6 - Resultados......................................................................................................................16

6.1. Análise dos Resultados...............................................................................................16

7 - Conclusões.....................................................................................................................18

8 - Referências.....................................................................................................................19

9 - Anexos...........................................................................................................................20

9.1. Código Camera Position.............................................................................................20

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA i3º/TGEI

Page 3: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

1 -RESUMO

Este trabalho consiste numa aplicação GPS para equipamentos móveis com o sistema

Android com função de resolver o problema de nem todas as pessoas possuírem um

equipamento GPS devido ao custo do mesmo. A aplicação é baseada na linguagem de

programação Java, criada a partir do IDE Eclipse e compilada para as versões 4.2 até 4.4,

possuindo funcionalidades como localizar o dispositivo no mapa, fazer rotas entre dois pontos

e pesquisar localizações desejadas pelo usuário apesar de ter um bug nesta funcionalidade que

se manifesta se o utilizador não tiver com acesso à Internet.

O GPS está totalmente em português e ao abrir a aplicação o mapa estará focado em

Portugal numa visão de satélite, porém é possível alterar a visão para um modo de mapa

apenas com estradas e nomes de localidades assinalados, sem terreno nem visão aérea.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 13º/TGEI

Page 4: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

2 -ABSTRACT

This project is a GPS application to mobile devices with Android OS with the function to

solve the problem of not all the people own a GPS equipment due to the cost of the same. The

application is based on Java programming language, built in Eclipse IDE and compiled for

versions 4.2 to 4.4, having features like find the device in the map, making routes between

two points and search for user-desired locations despite having a bug in this feature that

manifests itself if the user does not have with Internet access.

The GPS is entirely in Portuguese and when the application is opened the map will focus

on Portugal in a satellite view, but it is able to change the view to a map with only roads and

location names, without ground or aerial view.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 23º/TGEI

Page 5: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

3 -INTRODUÇÃO

Este projeto consiste num GPS para o sistema operativo móvel Android em que as

funcionalidades são mostrar a localização atual do dispositivo, fazer a rota entre duas

localizações inseridas pelo usuário mostrando o caminho mais rápido, pesquisar locais, inserir

markers para uma mais fácil visualização da localização no mapa do local pesquisado, e um

botão para alternar o mapa entre Normal e Hybrid. Esta aplicação foi desenvolvida para as

versões 4.2 até 4.4 de Android podendo ser estendida se assim for necessário necessitando de

uma permanente conecção à Internet para todas as funcionalidades estarem ativas. Este GPS

pode ser aplicado em setores de turismo por ser grátis e user friendly ajudando assim as

pessoas a guiarem-se facilmente dentro do país.

O projeto foi decidido no âmbito de adquirir e melhorar as capacidades de

desenvolvimento em sistemas móveis por ser uma área de interesse e que também por ser um

setor da informática que fornece lucro.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 33º/TGEI

Page 6: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

4 -DESCRIÇÃO DO PROBLEMA

Atualmente os aparelhos GPS são muito utilizados, especialmente quando se viaja para

locais desconhecidos, porém nem todas as pessoas possuem posses para possuir tais

dispositivos então “Seria possível criar um GPS totalmente grátis, user friendly e em

português para um dispositivo móvel?”.

Para responder à pergunta de partida foi decidido que o sistema móvel escolhido seria o

Android por ser um dos líderes do mercado de sistemas móveis e por questões de testes de

desenvolvimento será criado para as versões 4.2 até para 4.4 o que significa 66.2% do

mercado Android segundo as Dashboards.

Os objetivos impostos inicialmente para o projeto são ter o mapa, o foco em Portugal, a

localização do utilizador, a pesquisa de localidades e as rotas. Isto tudo é o mínimo necessário

para que a aplicação seja um GPS.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 43º/TGEI

Page 7: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

5 -DESENVOLVIMENTO

5.1. MATERIAIS

Para este projeto foi utilizado o Eclipse que é um IDE Open Source utilizado para fazer

programas em diversas linguagens. Instalando o plugin “Android SDK” é possível programar

aplicações de android usando a linguagem Java. Foi utilizado este no projeto devido a ser de

fácil utilização e compreensão para quem ainda é novo nesta área de aplicações. Existe um

outro IDE de desenvolvimento de aplicações chamado “Android Studio” que requer já um

bom conhecimento na área para ser devidamente utilizado.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 53º/TGEI

Page 8: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

5.2. EQUIPAMENTOS

Foram utilizados equipamentos móveis com o sistema android 4.2 e 4.4 para poder testar a

aplicação devido ao facto que o emulador do SDK não suporta o API V2 do Google Maps e o

Genymotion, outro emulador, não ser possível instalar o “Google Play Services”, o que é

necessário para mostrar o mapa.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 63º/TGEI

Page 9: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

5.3. MÉTODOS

5.3.1. INSERIR O MAPA

Após criado o projeto, mas não modificado deve-se adicionar a biblioteca “Google Play

Services lib” ao projeto. Para isso é necessário fazer o download de “Google Play Services”

no Android SDK, importar a biblioteca para o eclipse e clicar botão direito no que irá o ser o

GPS, ir em Properties > Android > Add > google-play-services_lib. Após adicionar a

biblioteca ao projeto GPS é necessário dar Build ao projeto da biblioteca no Eclipse. Isto irá

fornecer todas as funções android necessárias para colocar o mapa.

O primeiro é adicionar o mapa do Google Maps na aplicação e o primeiro passo é obter a

API Key. Para obter a API Key devemos:

Acessar o website https://code.google.com/apis/console/;

Carregar em “Creat New Project”;

Ativar o serviço “Google Maps Android API v2”;

Ir em APIs e autentificação > Credenciais > Criar nova chave > Chave do Android;

A caixa de texto deve-se preencher com a Impressão digital do certeficado SHA1

única da máquina que se pode ver dentro do IDE Eclipse em Window > Preferences >

Android > Build;

Preenchendo a caixa de texto e clicando em “Criar” irá se obter a API Key.

O método aplicado no projeto para colocar o mapa na aplicação é utilizável do API 12

(Android 3.1) para cima. Nesse método é necessário editar apenas os ficheiros

“AndroidManifest.xml”, “activity_main.xml” e “MainActivity.java”.

Dentro do “AndroidManifest.xml” comecei por adicionar as permissões “INTERNET”,

“ACCESS_NETWORK_STATE” e “WRITE_EXTERNAL_STORAGE”. A permissão

“INTERNET irá permitir a aplicação de fazer o download dos mapas a partir dos servidores

do Google Maps; a permissão “ACCESS_NETWORK_STATE” irá verificar o estado de

conecção à internet para determinar os dados possíveis de se fazer download; a permissão

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 73º/TGEI

Page 10: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

“WRITE_EXTERNAL_STORAGE” serve para fazer cache dos mapas que se fez download

numa memória externa.

Dentro deste ficheiro é ainda necessário adicionar também a versão do “Google Play

Services” de modo a que a aplicação o use, o que é necessário para abrir o mapa. Para isso

adiciona-se o seguinte código dentro do elemento “<application>”:

Para colocar a API Key dentro do “AndroidManifest” de modo a ter acesso ao mapa é

necessário colocar o seguinte código ainda dentro do elemento <application>:

Onde em “API KEY” deve-se colocar a key obtida pelo método explicado

anteriormente.

Por último, dentro do manifest, deve adicionar a versão 2 do “Open GL ES“ que serve

para fazer o render do mapa na aplicação, sem isto o mapa nunca irá aparecer. Para adicionar

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 83º/TGEI

<meta-data

android:name="com.google.android.gms.version"

android:value="@integer/google_play_services_version" />

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="API KEY"/>

<uses-feature

android:glEsVersion="0x00020000"

android:required="true"/>

Page 11: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

basta colocar o seguinte código fora do elemento <application> mas dentro do elemento

<manifest>:

Dentro do “activity_main” iremos ao “Graphical Layout” e em “Layouts” arrasta-se o

“Fragment” para a preview layout selecionando “MapFragment”. Dentro do xml é necessário

editar o elemento fragment para o seguinte:

Dentro do MainActivity elimina-se todas as funções exceto a função “OnCreate”.

5.3.2. CAMERA POSITION

O Camera Position é o lugar do mapa para onde a câmera vai estar a apontar quando

abrimos a aplicação. Para colocar o Camera Position e mais opções de mudança de layout

substitui-se o “activity_main.xml” pelo código 9.1 nos anexos. A coordenadas colocadas

nesse código representam o centro de Portugal e o zoom em 7 serve para poder se visualizar o ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 93º/TGEI

<fragment

android:id="@+id/map"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:name="com.google.android.gms.maps.MapFragment"/>

Page 12: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

país inteiro na aplicação. No caso a aplicação foi deixada como “hybrid” que é um modo em

que mo mapa fica com uma visão em modo satélite, mas existem outros modos que são,

Normal, Satellite (igual ao Hybrid porém neste modo não assinala as estradas nem mostra os

nomes das ruas, localidades, etc), Terrain e None. O “cameraBearing” é a rotação do mapa

em graus quando abrimos a aplicação, basta deixa-lo em 0 para que quando seja aberto esteja

direito. No “Tilt” que é a inclinação é bom deixar uma pequena inclinação. O resto das opções

são opções de layout que para ativar basta escrever “true” e para desativar é escrever “false”.

5.3.3. LOCATION

O “Location Layer” é um pequeno botão que clicado irá mostrar a localização atual do

dispositivo através do sistema GPS do aparelho ou de conecção à rede. Para poder receber

esses dados de localização é necessário adicionar duas permissões dentro do

“AndroidManifest” chamadas ACCESS_COARSE_LOCATION que serve para deixar o API

usar a conecção à internet para determinar o lugar do dispositivo, e

ACCESS_FINE_LOCATION que serve para determinar a localização através do sistema

GPS.

Para adicionar o botão deve-se primeiro ir ao “MainActivity” e alterar a função:

Para a função:

Isto serve para especificarmos que iremos apenas adicionar coisas ao fragment e não a

outra coisa.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 103º/TGEI

public class MainActivity extends Activity

{

public class MainActivity extends FragmentActivity

{

Page 13: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

Para adicionar o botão em si devemos atribuir “GoogleMap” a uma variável, que no caso

foi chamado de “mMap”, isto fora da função “onCreate”. Logo após deve-se ativar o

“setMyLocationEnabled”, que será colocado dentro da função “onCreate”.

Também foi adicionado um pequeno código que serve para carregar o fragment na

aplicação a partir da activity onde se encontra e também para verificar se o dispositivo onde a

aplicação se encontra contém o “Google Play Services” instalado. Também foi trocado no

xml o “MapFragment” para “SupportMapFragment” de modo a usar o código de encontrar o

fragment dentro da activity e poder mostrá-lo:

5.3.4. ROTAS

Foram adicionadas ao layout duas caixas de texto e um botão para poderem receber do

utilizador a origem e o destino pretendidos. Estes dados iriam ser enviados primeiro à função

“getRoutByGMAV2()” que iria atribuir os dados a variáveis “string” para enviá-los para a

função “main” das rotas denominada de “getRoute()”. Nesta função é feita feita uma

connecção HTTP para receber as direções e interliga a função “buildJSONRoute”, que

pertence à saída JSON que serve para enviar à função “main” as coordenadas da origem e do

destino bem como outro dados, e a função “drawRoute()”, que tem como utilidade desenhar a

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 113º/TGEI

GoogleMap mMap;

…..

mMap.setMyLocationEnabled(true);

SupportMapFragment mapFrag = (SupportMapFragment)

getSupportFragmentManager().findFragmentById(R.id.map);

Page 14: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

rota no mapa a partir dos dados que recebe da saída JSON e das direções recebidas a partir da

conecção HTTP.

5.3.5. CAMERA POSITION/ZOOM/MAP TYPE PROGRAMADO

Devido à adição das 2 caixas de texto e do botão no 5.3.4 o xml adicionado ao

fragment em 5.3.2 já não é funcional, então os parâmetros estabelecidos lá tiveram que ser

feitos programavelmente em “MainActivity.java”. Para isso criei três variáveis,

denominadas de PORTUGAL_LAT, onde coloco a latitude do centro de Portugal,

PORTUGAL_LNG, onde coloco a longitude do centro de Portugal, e ZOOM onde coloco

o zoom default utilizado na aplicação sendo escolhido o 7 pois mostra o país inteiro.

Dentro da função do “if” da função “initMap()” localizada dentro do “if” da função

“servicesOK()” que posterioremente está dentro da função “onCreate()” foi adicionado o

seguinte código:

Esta linha serve para quando a aplicação aberta o mapa esteja nas coordenadas e no

zoom anteriormente definidos nas variáveis utilizando a função “gotoLocation()” criada

para mover a câmera automaticamente para as coordenadas desejadas.

Para que o mapa esteja em modo “hybrid”, com os controlos de zoom e com a bússola

ativos foi necessário adicionar dentro da mesma função o seguinte código:

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 123º/TGEI

gotoLocation(PORTUGAL_LAT, PORTUGAL_LNG, ZOOM);

mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

mMap.getUiSettings().setZoomControlsEnabled(true);

mMap.getUiSettings().setCompassEnabled(true);

Page 15: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

5.3.6. LOCATION SEARCH/MARKERS

Foi adicionado mais uma caixa de pesquisa e um botão ao “activity_map” que irá

interligar com a função “geoLocate()” no “MainActivity”. Esta função irá servir para

transformar a localidade pesquisada em coordenadas e então chamar a função “gotoLocation”

para a câmera para essas coordenadas.

Foi adicionado o seguinte código também dentro da função “geoLocate()”:

Este código tem a função de definir as opções do Marker que são, colocar o título da

localidade por cima do marker e colocar o marker nas coordenadas recebidas. A última linha

serve para adicionar o marker no mapa com as opções definidas anteriormente. Antes do

código de adição de markers foi ainda adicionado um código que irá remover os markers caso

exista algum para que quando seja pesquisado múltiplas localizações não sejam criados vários

markers e assim o anterior seja sempre removido.

5.3.7. BOTÕES DE ACTION BAR

Dentro da pasta “menu” existe um ficheiro denominado de “main.xml” onde é criado os

botões para a action bar. Para adicionar um botão deve-se seguir este padrão de código dentro

do xml:

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 133º/TGEI

Marker maker;

MarkerOptions options = new MarkerOptions()

.title(locality)

.position(new LatLng(lat, lng));

marker = mMap.addMarker(options);

<item

android:id="@+id/mapTypeNormal"

android:icon="@drawable/ic_action_map"

android:title="@string/normal"

android:showAsAction="always"/>

Page 16: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

O objeto “item” deve ser adicionado dentro do objeto “menu”. O icon vem de um pack

fornecido no website de desenvolvimento de Android e deve ser adicionado ao projeto dentro

das pastas “drawable” colocando devidamente segundo o tamanho do icon. Caso não seja

colocado um icon o botão adicionado irá aparecer com o nome atribuído em “strings.xml”.

Para que o botão apareça sempre na action bar e não fique na action overflow devemos

colocar “always” em “android:showAsAction”.

Para poder adicionar ações aos botões é necessário adicionar as funções

“onCreateOptionsMenu()” e “onOptionsItemsSelected”. A função “onCreateOptionsMenu()”

será para criar o “menu”, ou seja colocar os botões na action bar a partir do que está no

“main.xml” e para isso deve-se colocar essa função da seguinte forma:

Dentro da função “onOptionsItemsSelected” é necessário criar um switch em que cada

case é o id de cada botão para adicionar a função desejada.

Para o botão de alternar o mapa entre normal e hybrid foi adicionado um variável

denominada “CHECK” a que foi atribuído o número 1 e dentro do case do botão foi

adicionado uma função if em que caso a variável “CHECK” seja 1 o tipo de mapa altera para

normal e atribui o número 2 à variável “CHECK”, caso a variável não seja 1 o tipo de mapa

altera para hybrid e atribui o número 1 à variável “CHECK”.

Para o botão de remover makers foi adicionado uma função if em que caso marker seja

diferente null, ou seja, caso exista algum marker no mapa o mesmo irá ser removido. ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 143º/TGEI

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

Page 17: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

Quanto ao botão about com easter egg, foi criado outra variável denominada “CHECK1”

e atribuído o número 1 à mesma. Dentro do case do botão foi adicionada uma função if que

caso “CHECK1” seja menor que 10 é criada e mostrada uma mensagem que diz "Aplicação

criada por Ricardo Gonçalves" e é adicionado “+1” ao número que já havia em “CHECK1”.

Caso o número da variável seja 10 é selecionada uma música dentro da pasta “raw” no projeto

da aplicação,

sendo atribuído

um “false”

em “setLooping” para que não reproduza desde o começo quando terminada, e reproduzida. É

atribuído o número “1” a “CHECK1” de novo para poder recomeçar o ciclo de clicks para o

easter egg.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 153º/TGEI

Page 18: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

6 -RESULTADOS

A aplicação possui um map fragment que ao inicia em modo hybrid centrado em Portugal,

controlos de zoom, bússola e um botão para detetar a localização do dispositivo, um

LinearLayout com duas caixas de texto para a origem e o destino e um botão para assim

calcular a rota entre os dois pontos, e acima disso possui mais um LinerLayout com uma caixa

de texto e um botão que tem a funcionalidade de pesquisar e marcar localizações inseridas

pelo utilizador.

O projeto contém também uma action bar personalizada com 3 botões, o primeiro que

mostra a informação de quem desenvolveu a aplicação, o segundo que tem como função

remover os markers colocados pela funcionalidade de pesquisa e o terceiro botão que serve

para alternar o tipo de mapa entre hybrid e normal.

6.1. ANÁLISE DOS RESULTADOS

No que diz respeito ao aparecer o mapa, ele carrega o fragment com sucesso desde que o

utilizador tenha o “Google Play Services” instalado no equipamento devido a ser necessário

este serviço para fazer o render do mapa. Ao iniciar a aplicação o o mapa carrega já nas

coordenadas do centro de Portugal com o zoom em 7 para que o país apareça por inteiro ou

quase por inteiro, dependendo do tamanho do visor do equipamento, e com a bússola e os

controlos de zoom também ativos.

Quanto à localização, aparece o layer no fragment que ao clicado o mapa irá se mover e

ampliar a localização do dispositivo, porém com um circulo em volta que serve como margem

de erro. A probabilidade de errar o lugar exato depende do sistema GPS do dispositivo ou da

internet, dependendo de qual o utilizador esteja a utilizar para obter a localização.

Na pesquisa de localidades o utilizador tem que escrever o nome do lugar e clicar no

botão “Ir” que ele irá mover a câmera do mapa e ampliar o local pesquisado, bem como

adicionar um marker para se o utilizador quiser diminuir o zoom possa ver claramente o local

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 163º/TGEI

Page 19: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

em comparação à sua localização atual. Ao pesquisar outra localização ele não irá adicionar

múltiplos markers, irá remover o anterior e adicionar um na nova localização pesquisada. Se o

utilizador quiser pesquisar localizações mais específicas deverá colocar pontos de referência

como o concelho, a cidade e o distrito (exemplo: Rua do Moinho Velho, Malveira, Lisboa).

Esta funcionalidade possuir um bug, se o utilizador pesquisar uma localização sem que esteja

conectado à Internet a aplicação irá dar um crash.

Na parte das rotas existem duas caixas de texto, a primeira que diz respeito ao local de

origem, e a segunda que diz respeito ao destino e com um botão que irá fazer a rota entre os

dois pontos pretendidos. Esta funcionalidade irá desenhar uma linha preta pelo caminho mais

rápido entre os dois pontos pelas estradas disponíveis, quer sejam estradas públicas ou

autoestradas. A escrita dos pontos funciona como a pesquisa de localidades, se for algo mais

específico necessitará de pontos de referência para ser localizado.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 173º/TGEI

Page 20: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

7 -CONCLUSÕES

O objetivo principal deste projeto acabou sendo realizado, que era fazer uma aplicação

open scource e user friendly para o sistema móvel Android com as funcionalidades mínimas

para se tornar num GPS.

Também foram adicionadas algumas funcionalidades adicionais como a alternação de

mapa entre hybrid e normal, que no começo seria apenas para deixar em hybrid sem o botão

de alternação, a funcionalidade de adição e remoção de markers, onde no começo seria apenas

para haver uma pesquisa de localizações sem adicionar um marker e também o botão de

informações que contém um pequeno easter egg ao ser clicado dez vezes.

Apesar do bug na pesquisa de localizações, que devido ao utilizador não ter acesso à

internet a aplicação irá dar um crash o projeto apresenta-se utilizável porque o utilizador tem

a capacidade de ver a sua localização, fazer as rotas entre localizações desejadas e pesquisar

as localidades que desejar, desde que tenha acesso à internet enquanto estiver a utilizar a

aplicação.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 183º/TGEI

Page 21: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

8 -REFERÊNCIAS

Carvalho, A. (2012). Exercícios de Java: Algoritmia e Programação Estruturada. Lisboa:

FCA - Editora de Informática.

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 193º/TGEI

Page 22: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

9 -ANEXOS

9.1. CÓDIGO CAMERA POSITION

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 203º/TGEI

<fragment

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:map="http://schemas.android.com/apk/res-auto"

android:id="@+id/map"

android:layout_width="match_parent"

android:layout_height="match_parent"

class="com.google.android.gms.maps.MapFragment"

map:cameraBearing="0"

map:cameraTargetLat="39.708771"

map:cameraTargetLng="-8.096923"

map:cameraTilt="30"

map:cameraZoom="7"

map:mapType="hybrid"

map:uiCompass="true"

map:uiRotateGestures="true"

map:uiScrollGestures="true"

map:uiTiltGestures="true"

map:uiZoomControls="true"

Page 23: GPS: Location Tracker - Relatório de PAP

IMP.ETPM.023-01

DESENVOLVIMENTO DE UMA APLICAÇÃO GPS PARA O S ISTEMA MÓVEL ANDROID

ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 213º/TGEI