En la aplicación vamos a usar los mapas de Google y por tanto, la API de Google Maps. Por experiencia previa, ya sabía que no era tan sencillo configurarlo todo para que funcione, así que este es el primer paso.
General
Los pasos que vamos a seguir para que todo funcione correctamente son:
- Descargar y configurar los Google Play Services
- Obtener una API key
- Definir las especificaciones en el Application Manifest
- Añadir un mapa a la aplicación.
¡Vamos a ello!
Descargar y configurar los Google Play Services
Este paso es bastante sencillo. Una vez nos hemos bajado todo el SDK de Android, lanzaremos el SDK Manager para descargarnos por un lado una versión del SDK igual o superior a Android 4.2.2 y por el otro lado, el paquete extra de Google Play Services.
Esto es debido a que ahora la API está distribuida como parte de los Google Play Services, y por tanto, necesitamos instalarlos. Una vez lo hayamos descargado, podremos encontrarlo en la carpeta <android-sdk>/extras/google/google_play_services/. El siguiente paso es importar esta carpeta como una librería.
Para ello, basta con abrir el Eclipse y pulsar File -> Import -> Android -> Existing Android Code into Workspace y buscar la carpeta mencionada justo arriba.
Una vez importada la librería, hemos de referenciarla a nuestro proyecto. Para ello, pulsamos con el botón derecho en nuestro proyecto -> Properties -> Android y en el apartado Library añadimos nuestra librería.
De esta manera ya tenemos configurados e instalados los Google Play Services y podemos pasar al siguiente punto.
Conseguir la API key de Google Maps
Para acceder a los servidores de Google Maps con la API de Google Maps tenemos que añadir una API key a nuestra aplicación. Esta llave estará asociada exclusivamente a nuestra app gracias a los certificados que usa Android y funcionará o no en función de ello. Así pues, necesitaremos ante todo la huella SHA-1 de nuestra aplicación para poder solicitar la API key. Pero vayamos por partes.
Obteniendo la huella SHA-1 de nuestra aplciación
Fue un verdadero quebradero, pero gracias a la ayuda de kix2902 descubrí que toda la información se encuentra en el Eclipse -> Window -> Preferences -> Android -> Build
Creando un proyecto API
Una vez tenemos ya nuestra huella SHA-1, podemos pasar al siguiente paso:
- Abrimos la consola de Google APIs
- Creamos un nuevo proyecto con el nombre que queramos
- Vamos a continuación al apartado de Services y activamos Google Maps Android API v2
- Ahora vamos al apartado API Access -> Create New Android Key
- Introducimos aquí la huella SHA-1 seguidos del nombre del paquete. En mi caso:
2C:C5:E6:A4:EE:29:EB:0D:8F:F3:B2:60:18F:3B:A754:95:7B;com.example.pfc_alpha1 - Acabamos de generar la API key y ya la tendremos a nuestra disposición
Añadiendo la API Key a nuestra aplicación
Ahora que ya tenemos la API Key, tenemos que añadirla a nuestra aplicación para que todo funcione.
1. En el AndroidManifest.xml añadimos el bloque siguiente como un hijo de <application> (justo antes de que acabe </application>)
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="API_KEY"/>
donde API_KEY es la API Key.
2. Añadimos los siguientes permisos
- android.permission.INTERNET Usado por la API para descargar los mapas de los servidores.
- android.permission.ACCESS_NETWORK_STATE Permite a la API comprobar el estado de la conexión para ver si puede descargar datos.
- com.google.android.providers.gsf.permission.READ_GSERVICES Permite a la API acceder a los servicios de Google basados en la web.
- android.permission.WRITE_EXTERNAL_STORAGE Permite a la API almacenar en cache datos del mapa en la SD.
Y también está recomendado añadir las siguientes si nuestra aplicación necesita acceder a nuestra posición.
- android.permission.ACCESS_COARSE_LOCATION Permite a la API utilizar la WiFi o los datos móviles (o ambos) para determinar nuestra localización.
- android.permission.ACCESS_FINE_LOCATION Permite a la API usar el GPS para determinar nuestra localización con precisión.
En resumen, hemos de añadir lo siguiente:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- The following two permissions are not required to use Google Maps Android API v2, but are recommended. --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Google Maps utiliza OpenGL ES v2 para renderizar los mapas. Si no tienes instalado OpenGL ES v2, el mapa no aparecerá y por tanto también es recomendable añadir la siguiente condición:
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
Con esto ya tenemos nuestra aplicación configurada.
Añadiendo el mapa
Y pasamos ya al último punto: añadir el mapa. Una vez que hemos configurado el Google Play Services, hemos añadido la API Key y rellenado el AndroidManifest.xml, toca picar código.
Añadir un mapa es muy sencillo
1. En el main.xml añadimos el siguiente fragmento
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/>
2. En el MainActivity añadimos esto otro
package com.example.mapdemo; 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.main); } }
3. Y ya está, funciona sin problemas!
Los próximos pasos van a ser poder añadir puntos en el mapa y posiciones determinadas. Esperemos que no sea muy difícil!
Links de interés
- Google Maps API v2 [Google Dev]
- Installing the Google Maps API [Google Dev]
- Mapas en Android [SGOliver]
- Google API Console
Os recuerdo que el código fuente del proyecto se encuentra en Github
¡Cualquier duda, sugerencia o cuestión me podéis encontrar en twitter!
El artículo Desarrollando en Android #2 Google Maps API se publicó en El Androide Libre (El Blog Android de referencia. Aplicaciones, noticias, Juegos y smartphones Android Libres)
Continúar leyendo...