Прежде всего необходимо подключить Google Play Services к вашему приложению.
Его необходимо установить вместе с sdk и он находится:
/sdk/extras/google/google_play_services/libproject/google-play-services_lib
Сначала регистрируем приложение в апи консоле: https://code.google.com/apis/console
Не забудьте дать права на Google Maps Android API v2 на вкладке Services
На вкладке API Access - создаём ключи
Далее нужно получить md5 hash
Для этого выполняем команду
"C:\Program Files (x86)\Java\jdk1.7.0_03\bin\keytool" -v -list -alias <алиас> -storepass <пароль> -keystore <файл с ключами> > gmap_r "C:\Program Files (x86)\Java\jre7\bin\keytool" -v -list -alias androiddebugkey -storepass android -keystore debug.keystore > gmap_d
Путь к файлу keytool - необходимо указать свой
Далее находим строку вида
SHA1: E3:C1:1D:EF:6C:D3:D8:4C:C1:D9:4C:A7:6D:DB:11:A2:AC:4B:5C:76
Только что обнаружил, последняя sdk этот sha1 сертификат показывает при экспорте подписанного приложения, так что можно его прям от туда взять и не заморачиваться с командной строкой
И как указанно:
One SHA1 certificate fingerprint and package name (separated by a semicolon) per line. Example: 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example
Добавляем к ней имя из нашего приложения и создаём андроид-ключ
В AndroidManifest.xml добавляем с раздел <application> в самый конец перед закрывающимся тегом </application>:
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="API_KEY"/>
Вместо API_KEY - подставляете ключ созданный на предыдущем этапе
Далее добавьте следующий код, заменив com.example.mapdemo with на ваш the package name.
<permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/> <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"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
Сохраните AndroidManifest.xml и перезапустите приложение
import android.support.v4.app.FragmentActivity; import android.support.v4.app.Fragment; import com.google.android.gms.maps.GoogleMap; public class DetailsActivity extends FragmentActivity { private GoogleMap map; private MapView mapView; private void setUpMapIfNeeded() { if (map == null) { map = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map)).getMap(); if (map != null) { setUpMap(); } } } private void setUpMap() { String adress = LocalSettings.getString(this, RR.OPTION_ADDRESS, ""); double lat = LocalSettings.getDouble(this, "lat", 0); double lon = LocalSettings.getDouble(this, "lon", 0); String s = adress; if (lat != 0) { LatLng p = new LatLng(lat, lon); s = null; map.addMarker(new MarkerOptions().position(p).title(adress)); map.animateCamera( CameraUpdateFactory.newLatLngZoom(p, 15.0f ) ); } new GoogleSearchClicker(this, map, adress, null, s).execute(); } }
Вроде пишут что не обязательно какое-то спец активити базовым делать, но я наследую от FragmentActivity
И в лэйоут:
<fragment android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" class="com.google.android.gms.maps.SupportMapFragment" />