Criar uma aplicação para Android com mapa

Android

Android é um sistema operativo baseado no núcleo do Linux6 para dispositivos móveis, desenvolvido pela Open Handset Alliance, liderada pelo Google. Segundo a Google, mais de 1 milhão de utilizadores. Este sistema foi adoptado por várias marcas de topo de mercado HTC, Samsung, Sony, Motorola, LG e Nokia.

O Android está disponível com código aberto desde 21 Outubro de 2008. O Google publicou todo o código sob a licença Apache. No entanto, ele depende de uma autorização da próprio Google para poder aceder à biblioteca de aplicações, Play Store

Com a API do Google Maps v2 para Android, é possível adicionar mapas com base em dados do Google Maps numa aplicação. A API, que é lida automaticamente com acesso aos servidores do Google Maps, possui métodos que permitem adicionar marcadores, polígonos, sobreposições, e ainda mudar a visão de uma área do mapa.

IDE

O IDE mais utilizado para o desenvolvimento de Android é o Eclipse. A empresa multinacional de serviços e software, Google, disponibiliza uma versão optimizada onde permite o download gratuito, em developer.android.com/sdk/index.html.

Após descarregar o IDE tem reunidos os elementos necessários para o desenvolvimento de aplicações para o Android. Com o processo de download terminado, irá ter uma pasta de trabalho contendo o nome: adt-bundle-windows-x86_64-20131030 (pode diferir um pouco mediante a versão).

Passos a seguir:

  • Abrir a pasta adt-bundle-windows-x86_64-20131030 > eclipse > eclipse.exe > Ok

Criar um projeto

  • File > New > Android Application Project
    Neste passo é possível dar o nome ao projeto e escolher as versões para que estará disponível a aplicação desenvolvida. Neste caso irá correr em dispostivos com versão 11 até à 19.
    Android: Novo Projecto
  • Next
    Nesta janela pode escolher o logotipo por defeito ou criar o seu próprio.
    Android: Escolher Logotipo
  • Next
    Android: Criar Actividade
  • Next
    Cada atividade (janela) é composta por três ficheiros e aqui podemos alterar o seu nome se pretendermos.
    Android: Configurar Actividade
  • Finish

Importar a biblioteca, uma vez que esta permite aceder ao mapa

Neste passo iremos importar a biblioteca Google Play Services, ou seja, vamos juntar à nossa pasta de trabalho uma pasta que contém todos os serviços de mapas da Google. Desta forma, ser-nos-á permitido invocar todas as funcionalidades no nosso projeto.

O projeto está localizado na diretoria adt-bundle-windows-x86_64-20131030\sdk\extras\google\google_play_services\libproject. Caso não encontre esta diretoria, deve verificar se o Google Play Services no Android SDK Manager, está instalado; se não estiver apenas tem de selecionar e descarregar.

Android: Google Play Service

Após garantir que o projeto google_play_services_lib existe, prosseguir da seguinte forma:

  • Eclipse > Import > Android > Existing Android Code Into Workspace > Next
    Android: Importar

Passos a seguir:

  • Browse > ir a pasta de trabalho adt-bundle..XXXXX./sdk/extras/google/google_play_services/libproject/google-play-services_lib
    Android: Seleccionar Projecto

Passo a seguir:

  • Mapa > Properties
    Android: Propriedades
  • Android > Library > Add…
    Android: Adicionar Biblioteca
  • Seleccione Google-play-services_lib > OK
    Android: Bibliotecas
  • OK

Alterar Manifest

Neste momento o projeto está criado, é necessário configurar o ficheiro AndoridManifest.xml. Este ficheiro tem como objetivo, entre outros, definir as permissões que a aplicação terá. Imaginemos um exemplo prático, os mapas do Google permitem saber a nossa localização. Para isso o nosso telemóvel precisa de utilizar o GPS ou a internet, e se essas permissões não forem dadas neste ficheiro, essa funcionalidade não está disponível. 

Passos a seguir:

  • Eclipse > Mapa > bin > AndroidManifest.xml
    <permission
    android:name="<NAMESPACE>.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
    
    <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>
    
    <uses-permissionandroid:name="<NAMESPACE>.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

    Android: Manifest

  • Logo de seguida a iniciar o manifest encontras package="NAMESPACE"
  • Copias o teu namesapce
  • No AndroidManifest.xml trocar onde tem  pelo que acabas de copiar

Obter a API_Key

A chave do Google Maps API v2 é baseada num pequeno formulário de certificado digital do aplicativo, conhecido como SHA-1 fingerprint. Porque a fingerprint é única, o Google Maps pode usá-la como forma de identificar a sua aplicação. (Foste buscar isto a algum lado?)

Existem dois tipos de certificado: o certificado de debug ( o que vamos usar e serve apenas para propósito de testes e desenvolvimento) e certificados gerados que nos permitem, por exemplo, colocar a aplicação no Google Play.

  • Ir ao link https://console.developers.google.com/project e, posteriormente, criar um novo projeto no Google Console.
    Android: Novo Projecto
  • Abrir o projeto > APIs & auth > APIs > Activar o Google Maps Android API v2
    Android: Activar Google Maps Android API
  • APIs & auth > Credentials > Create New Key > Andorid Key
    Android: Criar Key

Passos a seguir:

  • Voltar ao Eclipse > Window > Preferences > Android > Build
  • Copiar a tua SHA1 fingerprint
    Android: SHA1 Fingerprint

Passos a seguir:

  • Colar na janela do Google Console seguida de ;
  • Buscar o nome completo da aplicação
    • Eclipse > Mapa > bin > AndroidManifest.xml
    • Logo de seguida a inciciar o manifest encontras package="NAMESPACE"
    • Copias o teu namesapce
  • Retornar ao Google Console e colar o nome da app depois do ;

Android: Aplicações Permitidas

Passos a seguir:

  • Depois de carregar em criar, o Google irá fornecer uma key
    Android: Obter Key
  • Deve substituir no manifest

    <!-- Atenção isto deverá ser colocado dentro da tag application -->
    <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="Substituir aqui"/>
    

Alterar Layout

Em Android, o aspeto gráfico de cada atividade é definido num ficheiro XML. Neste caso, vamos editar o ficheiro activity_main.xml.

Passos a seguir:

  • Eclipse > Mapa > res > layout > activity_main.xml
     <?xmlversion="1.0"encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Alterar a Activity

Uma Activity representa uma interface que nos é apresentada e, além do ficheiro XML que define o aspeto gráfico, existe um ficheiro Java onde é definido o código das funcionalidades.

Neste caso, bastará codificarmos o método onCreate que faz parte do ciclo de vida de uma atividade e é executado sempre que a atividade é mostrada ao utilizador. Neste método o que iremos fazer é associar o layout XML que acima definimos.

Passos a seguir:

  • Eclipse > Mapa > src > MainActivity.java
    package com.programar.mapa;
    
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
        }
    }

Executar aplicação

A criação do AVD (emulador de dispositivos Android) é feita da seguinte forma:

  • Ir a Window\Android Virtual Device Manager
    Android Virtual Device Manager
  • New
  • Preencher segundo a imagem seguinte
    Android: Editar Virtual Device
  • OK
  • Start Avd
  • (Depois do emulador iniciar) Selecione Choose a running Android device
    Android: Escolher Device
  • OK

No final deste tutorial é possível visualizar no emulador ou dispositivo móvel um mapa como este.

Android: Imagem da Aplicação

Publicado na edição 45 (PDF) da Revista PROGRAMAR.