研究了一天,最后居然卡在了获取本地位置上,不知道是不是我的G330D问题,反正网络位置是获取不了,看来得用百度地图试试,还是总结一下吧
从eclipse上面就可以看到debug.keystore的位置,这个位置跟ANDROID_SDK_HOME这个环境变量有关系,然后通过命令
keytool -v -list -storepass android -keystore keystore位置
可以看到keystore的sha1,如图
用google的账号登录https://code.google.com/apis/console/ (没有的话就先注册一个吧)
选择”Services“把下面的选项激活
然后选择“API Access”-》“Create New Android Key”
在输入框输入:keystore的sha1码;将要用到地图功能的apk的包名,我这里是com.jack.test,然后按“Create”,则会生成api key
通过“Android SDK Manager”下载对应版本的“Google APIs”和Extras的“Google Play Services”并配置android项目如下
其中Library未刚刚下载的Google Play Services的lib_project,位置在android_sdk\extras\google\google_play_services\libproject下
增加以下内容
<permission
android:name="com.jack.test.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.jack.test.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" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDTcenhM4YQBR2b05a-x2yb1plFWtsXUqw" />
其中出现com.jack.test.的地方需要改成对应的包名,meta-data的Android:value换成对应的api key
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); LocationManager locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { Log.i("MainActivity", "onLocationChanged"); LatLng myLatLng = new LatLng(location.getLatitude(), location.getLongitude()); // mMap.setMyLocationEnabled(true); CameraPosition cameraPosition = new CameraPosition.Builder() .target(myLatLng) // Sets the center of the map to Mountain .zoom(17) // Sets the zoom .build(); // Creates a CameraPosition from the builder mMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition)); myMarker = mMap.addMarker(new MarkerOptions() .position(myLatLng) .title("My Home") .snippet("Hello") .icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_AZURE))); mMap.setOnMarkerClickListener(new OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker arg0) { if (arg0.equals(myMarker)) { Toast.makeText(MainActivity.this, "You click me!", Toast.LENGTH_LONG).show(); } return false; } }); } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; // Register the listener with the Location Manager to receive location updates locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 100, locationListener);
需要注意手机应该先安装“google play market“和”google play services“
版权声明:本文为博主原创文章,未经博主允许不得转载。