sabato 24 dicembre 2011

Usare le Mappe sulle applicazioni Android

Come usare le Maps API in fase di debug e in fase di produzione

Per testare un'app che utilizza le mappe sull'emulatore, è necessario ottenere una MAP API KEY per il debug. Per fare questo dobbiamo fornire a Google il nostro certificato.

Ottenere il certificato di debug:
  1. Per prima cosa troviamo il nostro debug,keystore che Eclipse usa per firmare le app in debug.
    • Aprire eclipse
    • Andare in Windows / Preferences / Android / Build
    • Copiare il path del nostro debug.keystore. Lo trovate in "default debug keystore". Il mio per esempio è c:\temp\debug.keystore
    • Ora aprite una finestra di comando con cmd.exe
    • Eseguite il seguente comando: 
      • keytool -list -alias androiddebugkey -keystore c:\temp\debug.keystore -storepass android -keypass android
      • otterrete una firma digitale MD5 del tipo XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
      • copiate la firma e incollatela nel campo "My certificate's MD5 fingerprint" della pagina  http://code.google.com/intl/it-IT/android/maps-api-signup.html 
      • cliccate "Generate API key", otterrete la chiave apikey da usare e un esempio di codice xml:
      •  <com.google.android.maps.MapView
                         android:layout_width="fill_parent"
                         android:layout_height="fill_parent"
                         android:apiKey="codice generato xxxx"
                         />
  2. Modifiche al manifest.xml della vostra app:
    •  inserite le permission:
      • <uses-permission android:name="android.permission.INTERNET"></uses-permission>
      • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    • all'interno del tag application aggiungete:
      • <uses-library android:name="com.google.android.maps" />
    • il manifest.xml sarà simile a questo:
        • <?xml version="1.0" encoding="utf-8"?>
          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.informationideas.mapapp"
          android:versionCode="1"
          android:versionName="1.0.0">
          <uses-permission android:name="android.permission.INTERNET"></uses-permission>
          <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
          <application android:icon="@drawable/icon" android:label="@string/app_name">
          <uses-library android:name="com.google.android.maps" />
          <activity android:name=".ShowDesktop"
          android:label="@string/app_name">
          <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
          </activity>
          </application>
          </manifest>
  3. L'Activity sarà del tipo:
      • package it.giovesoft.mapapp;
        import android.os.Bundle;
        import com.google.android.maps.MapActivity;
        
        public class Mappa extends MapActivity {
        
         /** Called when the activity is first created. */
         @Override
         public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
         }
        
         @Override
         protected boolean isRouteDisplayed() {
          // TODO Auto-generated method stub
          return false;
         }
        }
        
  4. Per ottenere la Map API key da usare per pubblicare l'app nel market android, ripetete il punto 1. utilizzando però il file .keystore, l'alias, l'utente e la password che usate per firmare l'app.