T#022 – Utilizzare le Google Maps API v.2 su Android – Parte 1

banner In questo nuovo tutorial di programmazione Android creeremo una semplice applicazione che ci permetta di afferrare con esempi pratici il funzionamento dei servizi di geolocalizzazione offerti dalle API Google Maps v.2 per Android.

Il tutorial si compone di due parti:

– Parte 1 – Operazioni preliminari
– Parte 2 – Esempi di codice

Oggi vedremo la prima parte. Per la sua realizzazione è stato impiegato l’IDE Eclipse, ma il suo contenuto è naturalmente valido anche per tutti gli altri ambienti.

Sebbene le API v.2 per Android siano state create per telefoni con sistema operativo dalla versione 11 in poi, per rendere possibile ad un più ampio pubblico la fruizione di questo tutorial, gli esempi di codice riportati sono compatibili anche con le versioni del sistema operativo precedenti, grazie all’utilizzo delle librerie fornite da Google per la compatibilità.

Parte 1 – Operazioni preliminari

Preparare il progetto

Le API di Google Maps v2 sono distribuite come parte della SDK “Google Play services“.

Per ottenerla, aprire “Android Sdk Manager” e scaricare:

  • Android Support package
  • Google Play services


T116_1

Da Eclipse creiamo ora un nuovo progetto, che utilizzeremo per il tutorial; noi lo abbiamo chiamato MapsApiTutorial.

Creiamo quindi un secondo progetto, che fungerà da libreria per il primo.

Per farlo, copiamo la cartella “google-play-services_lib”, che abbiamo scaricato con l’sdk, nel nostro workspace.

La cartella si trova sotto il percorso:

<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib

A questo punto creiamo un nuovo progetto da questi sorgenti con il comando:

File > Import > Android > Existing Android Code into Workspace

Nelle proprietà del primo progetto, impostiamo l’utilizzo del secondo come libreria.


005

Se stiamo utilizzando una versione Android precedente la 11 infine, aggiungere al progetto la libreria per la compatibilità (Build Path > Add to Build Path), che si trova sotto il percorso:

<sdk>/extras/android/support/v4/android-support-v4.jar

Ottenere una API Key

Per poter fare qualsiasi richiesta alle API di Google Maps, dobbiamo ottenere una API Key.

Ricordiamo che:

  • la chiave è gratuita
  • per le API v.2 NON può essere usata la stessa chiave utilizzata eventualmente per la versione 1 del servizio

Individuare il file di keystore presente sul nostro computer

Per le applicazioni di produzione, il keystore viene creato da noi, dunque non esiste una posizione di default in cui trovarlo. Per le applicazioni in fase di sviluppo invece, il file viene creato in modo automatico dal sistema alla prima build del codice e si chiama “debug.keystore”.

La posizione di default è:

~/.android/

per sistemi OS X e Linux, mentre per Windows è:

C:\Users\[nome utente]\.android\

Ottenere il codice SHA-1

Ad ogni keystore è assegnato un codice unico, chiamato Fingerprint SHA-1. Per il nostro tutoria ci limiteremo ad utilizzare il keystore di debug, di cui mostreremo il codice con il comando:

keytool -list -v -keystore [indirizzo del file ricavato al punto a)] alias androiddebugkey -storepass android -keypass android


01

(per le applicazioni di produzione, fare riferimento alla procedura illustrata nella documentazione ufficiale delle API)

Ottenere la chiave API

Dalla console online, aprire la sezione “Services” ed abilitare il servizio “Google Maps Android API v2” (attenzione a non confonderlo con “Google Maps API v2”!).


03

Accedere quindi alla sezione “API Access” e cliccare il pulsante “Create new Android key”. Nella finestra che si aprirà, inserire il codice SHA-1 ottenuto al punto precedente ed il nome del package della nostra app, separati dal carattere “;”.

[Codice SHA-1];[package]

A questo punto la API key sarà creata ed apparirà nell’elenco.

Modificare il file Manifest

Ora che disponiamo di una API key, dobbiamo inserirla nell’applicazione ed impostare i permessi corretti perché possa essere utilizzata.

Apriamo il file AndroidManifest.xml e sotto il tag <application> aggiungiamo

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your_api_key"/>

Aggiungiamo i permessi sotto il tag <manifest>:

<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"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Dichiariamo infine i requisiti minimi perché la nostra app possa funzionare.

Sotto il tag <manifest> aggiungiamo:

<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

Perfetto tutto è pronto ora per iniziare a sperimentare! Presto ci addentreremo nel codice vero e proprio con la seconda parte di questo tutorial.


elisa-barindelli-chiaro

15 comments

  1. Ottimo turorial complimenti.
    Per ottenere il percorso del keystore debug basta copiarlo dalla Preferenze.
    Eclipse->Preferenze-Android-Build e li basta copiarsi il percorso

  2. Sto facendo il mio tirocinio su android ma avendo iniziato tutto da 0 le vorrei chiedere se mi potesse aiutare a capire meglio l’uso della mappa google nelle applicazioni android . Le dico che prima stavo lavorando con la versione 1 ma sono da un po di giorni che non mi permette piu di visualizzare la mappa sul dispositivo , leggendo ho letto che dalla fine di marzo è stata declassata ed ora si usa solo la versione 2!! facendo tutto quello scritto qui non mi visualizza ancora la mappa manca qualcosa sicuramente sapreste dirmi cosa?

  3. Ciao Mirko.
    Hai ottenuto una nuova chiave per le API versione 2? Quella che utilizzavi in precedenza non è infatti più valida.

  4. Ottima guida! Complimenti! Volevo solo indicare che è possibile recuperare lo SHA-1 senza passare da riga di comando. In Eclipse basta andare in:
    Window -> Preferences -> Android -> Build
    ottenendo così tutte le informazioni necessarie.

    Inoltre vorrei proporre per Mirko che ha problema a visualizzare la mappa, che forse manca un permesso. Prova ad aggiungere

  5. ciao..bel tutorial..non riesco a visualizzare la mappa.ovvero escono solo i pulsanti in basso a dx.cosa sbaglio?

  6. Ciao Elisa,
    anche io ho un problema simile a quello di gianni (e a quello di molti altri che ho visto su internet).

    Ho seguito le istruzioni di google e del tuo tutorial: ho implementato la mappa in modalità debug e tutto ha funzionato correttamente (mappa visualizzata anche su device esterno).

    Ho poi provato a pubblicare l’applicazione. Play Store mi ha chiesto di modificare il nome del progetto (com.example…. non andava bene). Ho modificato così il nome del progetto, ho creato una nuova chiave per il servizio mappe ed inserito quest’ultimo nel progetto, creando questa volta la chiave release (e non debug).

    Da qui in poi, non c’è stato più verso di vedere la mappa: compare una schermata blank, con i due tasti dello zoom in basso a destra.

    Ho visto che anche su internet ci sono moltissime persone con lo stesso problema (premetto che ho attivato il servizio “android maps v2” e che ho generato, e rigenerato il codice sha1 seguendo scrupolosamente passo passo le istruzioni di google..).

    Sapresti dirmi di cosa può trattarsi?

    Grazie mille e complimenti per i 2 tutorial!

    1. Ciao, ti consiglio di aggiornare le libreria di Google Play Services e poi provare di nuovo.
      Per farlo:

      -Apri SDK manager (se usi Eclipse, è l’icona con l’androide in alto a sinistra)
      -Seleziona le librerie Google Play Services come mostrarto nel tutorial e verifica sia necessario un aggiornamento
      -Rimuovi il progetto-libreria dal tuo workspace ed importa quello nuovo appena scaricato (ripetendo i passi illustrati nella parte 1 di questo tutorial alla sezione “Parte 1 – Operazioni preliminari – Preparare il progetto”)

      Happy coding!

      1. Ciao Elisa, grazie per il tutorial!

        Anche io ho questo problema. Ho rifatto tutti i passi almeno 3 volte partendo sempre da zero, ma non c’è verso: carico in un tablet o in un cellulare e vedo schermo bianco/grigio con soli i tasti + e -.

        Qualche idea?

        1. 1) Aggiornare le librerie
          2) Controllare di usare la giusta API KEY (sviluppo/produzione)

  7. Ciao,
    ho seguito la guida per filo e per segno, però android Studio mi da questo errore sul file xml del layout :

    A tag allows a layout file to dynamically include different layouts at runtime. At layout editing time the specific layout to be used is not known. You can choose which layout you would like previewed while editing the layout.

    Ho provato anche ad aggiugere questa riga di codice al fondo del tag “” :

    tools:layout=”@layout/activity_mappa”

    Ma non è servito a nulla….

    Cosa può essere?

  8. Ciao. Attualmente sono impegnato in un progetto di ricerca con alcuni colleghi riguardanti la navigazione indoor. Espongo il mio dubbio: le api di google maps v2 funzionano con l’emulatore?

  9. Si, si può fare anche in Android Studio. I passi da seguire sono gli stessi.

Comments are closed.