Lab 3: Google Maps API

Transcript

Lab 3: Google Maps API
Università degli Studi di Bergamo
Dipartimento di Ingegneria
Lab 3: Google Maps API
Matteo Camilli
[email protected]
http://camilli.di.unimi.it
a.a. 2014/15
1
Google Maps Android API v2
• Getting started:
• https://developers.google.com/maps/documentation/android/
start#getting_the_google_maps_android_api_v2
2
Importare progetto in eclipse
• Per poter utilizzare le Google Maps API v2 occorre:
• Google Play Service Library
• Android Support Library
Android
SDK
manager
3
Android Support Library
• Si trova nella dir:
• <adt-sdk-folder>/sdk/extras/android/support/v13/android-support-v13.jar
copiare
jar
nella
dir
/libs
4
Google Play Service Library
• Select New > Android > Android Project from Existing Code and click Next.
• Select Browse..., enter <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib, and click Finish.
controllare
che
sia
selezionato
5
Google Play Service Library
• Importare google-play-services_lib project come libreria
aggiungere
tramite
add
6
Android certificate and the Google Maps API key
• https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key
1) Recuperare SHA-1 fingerprint sul certificato della vostra App.
2) Registrare un progetto nella Google APIs Console e aggiungere le Maps API
come service per il progetto.
3) Richiedere una o più chiavi.
4) Aggiungere la chiave nel Manifest dell’App.
7
Android certificate
• Ogni App Android, per essere installata su dispositivo o emulatore deve avere
associato un certificato digitale che identifica lo sviluppatore.
• Quando sviluppate un’App con eclipse viene associato un certificato di Debug.
• Il certificato di Debug si chiama debug.keystore, e viene creato di default nella
directory:
• OS X and Linux: ~/.android/
• Windows Vista and Windows 7: C:\Users\your_user_name\.android\
8
Android certificate
• List the SHA-1 fingerprint:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
• Risultato:
Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
Signature algorithm name: SHA1withRSA
Version: 3
9
Create an API project in the Google APIs Console
1) Andare all’indirizzo: https://console.developers.google.com
2) Creare un API Project
3) Selezionare APIs & auth > APIs nel menu di sinistra
4) Impostare ON su Google Maps Android API v2
10
Create an API project in the Google APIs Console
5) Selezionare Credentials nel menu di sinistra e registrate la vostra app selezionando
Create new key > Android key. Inserire SHA1 fingerprint e package name dell’App.
11
Create an API project in the Google APIs Console
6) La console vi risponde con la chiave associata alla vostra app, es:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
7) Nel Manifest della vostra app, come figlio dell’elemento <application> inserire:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="API_KEY"/>
8) Sostituire API_KEY con la vostra chiave.
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0"/>
12
REST Services
• REpresentational State Transfer
• Insieme di principi di architetture di rete, i quali delineano come le risorse sono definite
e indirizzate.
Utilizza i metodi HTTP (GET, POST, PUT, DELETE) per eseguire una serie di operazioni
e consentire l’interazione client-server.
• Un API REST è un insieme di operazioni che possono essere invocate utilizzando l’URI
richiamato come parametro/i per la specifica operazione. • ESEMPIO: se vogliamo un servizio che ci fornisca la lista degli utenti del sistema,
possiamo fare HTTP GET dell’URI miaApp/users/all, Il parametro ‘all’ dice alla
nostra applicazione che deve fornire la lista di tutti gli utenti.
• ESEMPIO: Servizio che fornisce i dati sulle stazioni del servizio di bike sharing
bikeMi: http://api.citybik.es/bikemi.json
• Libreria Java per utilizzare servizi REST (anche su Android)
• RETROFIT http://square.github.io/retrofit/
13
JSON
• JavaScript Object Notation, è un formato adatto per lo scambio dei dati in applicazioni clientserver.
• I tipi di dati supportati da questo formato sono:
• booleani (true e false);
• interi, reali, virgola mobile;
• stringhe racchiuse da doppi apici ( " );
• array (sequenze ordinate di valori, separati da virgole e racchiusi in parentesi quadre [ ] );
• array associativi (sequenze coppie chiave-valore separate da virgole racchiuse in parentesi graffe);
• null.
• Esempio:
{
"type": “menu",
"value": "File",
"items": [ {"value": "New", "action": "CreateNewDoc"},
{"value": "Open", "action": "OpenDoc"},
{"value": "Close", "action": “CloseDoc"} ]
}
14
JSON
• Generate Plain Old Java Objects from JSON:
• http://www.jsonschema2pojo.org/
• Tramite la libreria Retrofit, possiamo eseguire richieste al server per ricevere i dati in formato
JSON e convertirli automaticamente in formato POJO.
15
Esempio: bikeMe
16
Esempio: bikeMe
Modalità “a piedi”
Modalità “in bici”
vista satellite
17
Esercizio
1. Partendo dall’applicazione SimpleMap, visualizzare sulla mappa la posizione di tutte
le stazioni del bikeMi.
2. Al tap su una stazione visualizzare le informazioni su:
• nome stazione, numero stalli, numero bici
3. Visualizzare i marker con colori diversi a seconda del numero di bici disponibili:
• 0 bici: Rosso
• Tra 1 e 3 bici: Giallo
• Maggiore di 3 bici: Verde
4. Creare un pulsante per eseguire il refresh delle stazioni
5.Creare un pulsante per eseguire il cambio di modalità:
• Modalità a piedi: come prima
• Modalità in bici: i colori delle stazioni cambiano in base agli stalli disponibili (non più
in base alle bici disponibili)
18