gps: location tracker - relatório de pap
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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"/>
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"/>
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
{
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);
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);
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"/>
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;
}
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
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
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
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
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
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"
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