【发布时间】:2015-04-15 14:52:33
【问题描述】:
我想在安卓应用中显示谷歌地图。我已经完成了以下步骤。
- 使用包名 com.gaurav.googlemap 创建了一个新的 android 应用程序项目
- 从 SDK 管理器下载了 Google Play 服务 SDK
- 已将“google-play-services_lib”导入当前工作区
-
将“google-play-services_lib”链接到我当前的项目
(项目属性 -> Android -> 添加(进入库部分)-> 选择 'google-play-services_lib'-> 应用 -> 确定
-
使用以下命令注册 SHA-1 指纹
keytool -list -v -keystore "%USERPROFILE%.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
从 Google API 控制台生成的 Android API 密钥
-
修改AndroidManifest.xml如下
<?xml version="1.0" encoding="utf-8"?><uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" /> <permission android:name="com.gaurav.googlemap.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission> <uses-permission android:name="com.gaurav.googlemap.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="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyC3hd_PcjjfraFGfnx3UVi0FLO5AwgxFT8" /> <activity android:name=".MainActivity" 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> -
修改activity_main.xml如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.gaurav.googlemap.MainActivity" > <fragment android:id="@+id/map" class="com.google.android.gms.maps.MapFragment" android:layout_height="match_parent" android:layout_width="match_parent"/> -
修改MainActivity.java如下
包 com.gaurav.googlemap;
导入android.app.Activity;
导入 android.os.Bundle;
导入 android.view.Menu;
导入 android.view.MenuItem;
导入 android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;公共类 MainActivity 扩展 FragmentActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
最后我将项目运行到 Android 模拟器中
但是LogCat中有一个例外,如下所示
02-14 16:41:46.947: E/AndroidRuntime(1260): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gaurav.googlemap/com.gaurav.googlemap.MainActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
我已经阅读了许多关于类似问题的答案,但我没有解决这个问题。 我的操作系统是 Windows 8.1(32 位)
我听说有一种不同的方式来设置模拟器来显示谷歌地图。这与我的问题有关吗?
请帮我解决这个问题。谢谢。
【问题讨论】:
-
发布您的活动代码
-
这个类是否已添加/导入到您的项目中?网上的一些链接说你还需要添加google play服务。
-
在AndroidManifest.xml中添加这个
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> -
是否需要 Google APIs SDK?
-
非常感谢。它对我很有效:) @Ranjith
标签: java android xml google-maps android-fragments