SlideShare uma empresa Scribd logo
1 de 22
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
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA i
3º/TGEI
IMP.ETPM.023-01
Í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
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 1
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 2
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 3
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 4
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 5
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 6
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 7
3º/TGEI
IMP.ETPM.023-01
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
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 8
3º/TGEI
IMP.ETPM.023-01
“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.
<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"/>
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 9
3º/TGEI
IMP.ETPM.023-01
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
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”.
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 10
3º/TGEI
IMP.ETPM.023-01
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 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.
public class MainActivity extends Activity {
public class MainActivity extends FragmentActivity {
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 11
3º/TGEI
IMP.ETPM.023-01
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 rota no mapa a partir
dos dados que recebe da saída JSON e das direções recebidas a partir da conecção HTTP.
GoogleMap mMap;
…..
mMap.setMyLocationEnabled(true);
SupportMapFragment mapFrag =
(SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 12
3º/TGEI
IMP.ETPM.023-01
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:
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.
gotoLocation(PORTUGAL_LAT, PORTUGAL_LNG, ZOOM);
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 13
3º/TGEI
IMP.ETPM.023-01
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 markerno 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:
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
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"/>
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 14
3º/TGEI
IMP.ETPM.023-01
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.
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
@Override
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 15
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 16
3º/TGEI
IMP.ETPM.023-01
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 em comparação
à sua localização atual. Ao pesquisar outra localização ele não irá adicionar múltiplos markers,
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 17
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 18
3º/TGEI
IMP.ETPM.023-01
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.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 19
3º/TGEI
IMP.ETPM.023-01
8 -REFERÊNCIAS
Carvalho, A. (2012). Exercícios de Java: Algoritmia e Programação Estruturada. Lisboa: FCA
- Editora de Informática.
DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID
ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 20
3º/TGEI
IMP.ETPM.023-01
9 -ANEXOS
9.1. CÓDIGO CAMERA POSITION
<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"
map:uiZoomGestures="true"/>

Mais conteúdo relacionado

Destaque

Je unit3 y1_assignment brief (1)
Je unit3 y1_assignment brief (1)Je unit3 y1_assignment brief (1)
Je unit3 y1_assignment brief (1)davidhall1415
 
Unit 20 brief 1 task 2_worksheet (1)
Unit 20 brief 1 task 2_worksheet (1)Unit 20 brief 1 task 2_worksheet (1)
Unit 20 brief 1 task 2_worksheet (1)TomCrook
 
주파수
주파수주파수
주파수gfajksh
 
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquin
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay EpiquinPractica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquin
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquinrodrigofrancisco29
 
Je unit3 y1_assignment brief
Je unit3 y1_assignment briefJe unit3 y1_assignment brief
Je unit3 y1_assignment briefdavidhall1415
 
Cristian galliano presentation
Cristian galliano  presentationCristian galliano  presentation
Cristian galliano presentationcrisgalliano
 
Federico garcía lorca
Federico garcía lorcaFederico garcía lorca
Federico garcía lorcapmclaytor1
 
Unit 20 task 2 pointless table
Unit 20 task 2 pointless tableUnit 20 task 2 pointless table
Unit 20 task 2 pointless tableJake-hyatt123
 

Destaque (16)

Mood board
Mood boardMood board
Mood board
 
Je unit3 y1_assignment brief (1)
Je unit3 y1_assignment brief (1)Je unit3 y1_assignment brief (1)
Je unit3 y1_assignment brief (1)
 
Unit 20 brief 1 task 2_worksheet (1)
Unit 20 brief 1 task 2_worksheet (1)Unit 20 brief 1 task 2_worksheet (1)
Unit 20 brief 1 task 2_worksheet (1)
 
MBA diploma
MBA diplomaMBA diploma
MBA diploma
 
Task 2 worksheet
Task 2 worksheetTask 2 worksheet
Task 2 worksheet
 
DSC_0042
DSC_0042DSC_0042
DSC_0042
 
주파수
주파수주파수
주파수
 
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquin
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay EpiquinPractica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquin
Practica calificada de comunicación- 3"A" -Rodrigo Chinchay Epiquin
 
Je unit3 y1_assignment brief
Je unit3 y1_assignment briefJe unit3 y1_assignment brief
Je unit3 y1_assignment brief
 
Evaluation pt 2
Evaluation pt 2Evaluation pt 2
Evaluation pt 2
 
Cristian galliano presentation
Cristian galliano  presentationCristian galliano  presentation
Cristian galliano presentation
 
Segurança de Dados e Informações - Aula 3 - Ataques
Segurança de Dados e Informações - Aula 3 - AtaquesSegurança de Dados e Informações - Aula 3 - Ataques
Segurança de Dados e Informações - Aula 3 - Ataques
 
GENEROS LITERARIOS COAR 3A
GENEROS LITERARIOS COAR 3AGENEROS LITERARIOS COAR 3A
GENEROS LITERARIOS COAR 3A
 
Federico garcía lorca
Federico garcía lorcaFederico garcía lorca
Federico garcía lorca
 
Portfolio_Linkedin
Portfolio_LinkedinPortfolio_Linkedin
Portfolio_Linkedin
 
Unit 20 task 2 pointless table
Unit 20 task 2 pointless tableUnit 20 task 2 pointless table
Unit 20 task 2 pointless table
 

Semelhante a GPS: Location Tracker - Relatório de PAP

Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Ráfagan Abreu
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEISLIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEISOs Fantasmas !
 
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...Pedro Edson Silva Barros
 
Sig e cad nos aparelhos de última geração
Sig e cad nos aparelhos de última geraçãoSig e cad nos aparelhos de última geração
Sig e cad nos aparelhos de última geraçãoramd401
 
Criando aplicativos-para-dispositivos-moveis
Criando aplicativos-para-dispositivos-moveisCriando aplicativos-para-dispositivos-moveis
Criando aplicativos-para-dispositivos-moveisklaibert
 
Artigo coloquio 2013
Artigo coloquio 2013Artigo coloquio 2013
Artigo coloquio 2013testes1
 
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...Bruno Muniz
 
Projetointegrador2 segundo semestre-juliovidal
Projetointegrador2 segundo semestre-juliovidalProjetointegrador2 segundo semestre-juliovidal
Projetointegrador2 segundo semestre-juliovidaljulio vidal
 
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação Apresentação Trabalho de Conclusão de Curso - Ciência da Computação
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação Thiago Marinho
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Leonardo Turbiani
 
001 panorama geral - Arquitetura de aplicativos para dispositivos móveis
001   panorama geral - Arquitetura de aplicativos para dispositivos móveis001   panorama geral - Arquitetura de aplicativos para dispositivos móveis
001 panorama geral - Arquitetura de aplicativos para dispositivos móveisMaico Moreira
 
Google Maps - GBG Sorocaba 2014
Google Maps - GBG Sorocaba 2014Google Maps - GBG Sorocaba 2014
Google Maps - GBG Sorocaba 2014Hudson Augusto
 
Apresentação sobre progressive web apps(PWA)
Apresentação sobre progressive web apps(PWA) Apresentação sobre progressive web apps(PWA)
Apresentação sobre progressive web apps(PWA) Abraão Állysson
 

Semelhante a GPS: Location Tracker - Relatório de PAP (20)

Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
Desenvolvimento multiplataforma em ambientes de programação nativos e abstr...
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEISLIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS
 
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...
Desenvolvimento de Aplicações para Dispositivos Móveis: Aplicativos Nativos, ...
 
Sig e cad nos aparelhos de última geração
Sig e cad nos aparelhos de última geraçãoSig e cad nos aparelhos de última geração
Sig e cad nos aparelhos de última geração
 
Criando aplicativos-para-dispositivos-moveis
Criando aplicativos-para-dispositivos-moveisCriando aplicativos-para-dispositivos-moveis
Criando aplicativos-para-dispositivos-moveis
 
Introdução intel XDK
Introdução intel XDKIntrodução intel XDK
Introdução intel XDK
 
Artigo coloquio 2013
Artigo coloquio 2013Artigo coloquio 2013
Artigo coloquio 2013
 
3
33
3
 
Curso Básico Android - Aula 05
Curso Básico Android - Aula 05Curso Básico Android - Aula 05
Curso Básico Android - Aula 05
 
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...
Forum Mobile+ - MEAPs Como selecionar uma plataforma mobile de aplicações ent...
 
Projetointegrador2 segundo semestre-juliovidal
Projetointegrador2 segundo semestre-juliovidalProjetointegrador2 segundo semestre-juliovidal
Projetointegrador2 segundo semestre-juliovidal
 
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação Apresentação Trabalho de Conclusão de Curso - Ciência da Computação
Apresentação Trabalho de Conclusão de Curso - Ciência da Computação
 
Semanaupecaruaru2013 android passo a passo
Semanaupecaruaru2013 android passo a passoSemanaupecaruaru2013 android passo a passo
Semanaupecaruaru2013 android passo a passo
 
Restaurante
RestauranteRestaurante
Restaurante
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
001 panorama geral - Arquitetura de aplicativos para dispositivos móveis
001   panorama geral - Arquitetura de aplicativos para dispositivos móveis001   panorama geral - Arquitetura de aplicativos para dispositivos móveis
001 panorama geral - Arquitetura de aplicativos para dispositivos móveis
 
Android
AndroidAndroid
Android
 
Google Maps - GBG Sorocaba 2014
Google Maps - GBG Sorocaba 2014Google Maps - GBG Sorocaba 2014
Google Maps - GBG Sorocaba 2014
 
Apresentação sobre progressive web apps(PWA)
Apresentação sobre progressive web apps(PWA) Apresentação sobre progressive web apps(PWA)
Apresentação sobre progressive web apps(PWA)
 
Ciclo de palestras da JFRJ - Aplicativos Móveis
Ciclo de palestras da JFRJ - Aplicativos MóveisCiclo de palestras da JFRJ - Aplicativos Móveis
Ciclo de palestras da JFRJ - Aplicativos Móveis
 

GPS: Location Tracker - Relatório de PAP

  • 1. 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
  • 2. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA i 3º/TGEI IMP.ETPM.023-01 Í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
  • 3. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 1 3º/TGEI IMP.ETPM.023-01 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.
  • 4. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 2 3º/TGEI IMP.ETPM.023-01 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.
  • 5. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 3 3º/TGEI IMP.ETPM.023-01 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.
  • 6. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 4 3º/TGEI IMP.ETPM.023-01 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.
  • 7. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 5 3º/TGEI IMP.ETPM.023-01 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.
  • 8. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 6 3º/TGEI IMP.ETPM.023-01 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.
  • 9. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 7 3º/TGEI IMP.ETPM.023-01 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
  • 10. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 8 3º/TGEI IMP.ETPM.023-01 “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. <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"/>
  • 11. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 9 3º/TGEI IMP.ETPM.023-01 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 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”. <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/>
  • 12. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 10 3º/TGEI IMP.ETPM.023-01 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 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. public class MainActivity extends Activity { public class MainActivity extends FragmentActivity {
  • 13. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 11 3º/TGEI IMP.ETPM.023-01 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 rota no mapa a partir dos dados que recebe da saída JSON e das direções recebidas a partir da conecção HTTP. GoogleMap mMap; ….. mMap.setMyLocationEnabled(true); SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  • 14. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 12 3º/TGEI IMP.ETPM.023-01 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: 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. gotoLocation(PORTUGAL_LAT, PORTUGAL_LNG, ZOOM); mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); mMap.getUiSettings().setZoomControlsEnabled(true); mMap.getUiSettings().setCompassEnabled(true);
  • 15. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 13 3º/TGEI IMP.ETPM.023-01 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 markerno 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: 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 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"/>
  • 16. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 14 3º/TGEI IMP.ETPM.023-01 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. 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 @Override public boolean onCreateOptionsMenu (Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
  • 17. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 15 3º/TGEI IMP.ETPM.023-01 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.
  • 18. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 16 3º/TGEI IMP.ETPM.023-01 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 em comparação à sua localização atual. Ao pesquisar outra localização ele não irá adicionar múltiplos markers,
  • 19. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 17 3º/TGEI IMP.ETPM.023-01 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.
  • 20. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 18 3º/TGEI IMP.ETPM.023-01 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.
  • 21. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 19 3º/TGEI IMP.ETPM.023-01 8 -REFERÊNCIAS Carvalho, A. (2012). Exercícios de Java: Algoritmia e Programação Estruturada. Lisboa: FCA - Editora de Informática.
  • 22. DESENVOLVIM ENT O DE UMA APLICAÇÃO GPS PARA O SISTEMA MÓVEL ANDROID ESCOLA TÉCNICA E PROFISSIONAL DE MAFRA ANO LETIVO 2014/2015 PÁGINA 20 3º/TGEI IMP.ETPM.023-01 9 -ANEXOS 9.1. CÓDIGO CAMERA POSITION <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" map:uiZoomGestures="true"/>