2011-11-02 68 views
8

另一天的另一个问题,我终于设法正确地设置我的Android应用程序谷歌地图,或至少我认为我已经做到了,整个程序开始,它甚至会打电话给应该“打印”一张地图的班级,但我能看到的只有一个带有谷歌标签的网格[在拐角处]。我检查了Dalvik的监控和错误无法获得连接工厂客户端 - 与谷歌地图战斗

E/MapActivity(394):无法获取连接工厂客户

发生。我已经在stackoverflow网站上发现我应该从dalvik显示器发送一个gps信号或者这样的信号,而且我已经完成了。没有任何事情发生,我还得到了api密钥,但没有任何变化。

这里是map.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- This file is /res/layout/mapview.xml --> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 
<Button android:id="@+id/zoomin" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="+" 
android:onClick="myClickHandler" 
android:padding="12px" /> 
<Button android:id="@+id/zoomout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="-" 
android:onClick="myClickHandler" 
android:padding="12px" /> 
<Button android:id="@+id/sat" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Satellite" 
android:onClick="myClickHandler" 
android:padding="8px" /> 
<Button android:id="@+id/street" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Street" 
android:onClick="myClickHandler" 
android:padding="8px" /> 
<Button android:id="@+id/traffic" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Traffic" 
android:onClick="myClickHandler" 
android:padding="8px" /> 
<Button android:id="@+id/normal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Normal" 
android:onClick="myClickHandler" 
android:padding="8px" /> 
</LinearLayout> 
<com.google.android.maps.MapView 
android:id="@+id/mapview" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:clickable="true" 
android:apiKey="0zPcz1VYRSpLusufJ2JoL0ffl2uxDMovgpW319w" /> 
</LinearLayout> 

这里是一个MapMapa.java

public class MapMapa extends MapActivity 
{ 
private MapView mapView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.map); 
mapView = (MapView)findViewById(R.id.mapview); 
} 

public void myClickHandler(View target) { 
switch(target.getId()) { 
case R.id.zoomin: 
mapView.getController().zoomIn(); 
break; 
case R.id.zoomout: 
mapView.getController().zoomOut(); 
break; 
case R.id.sat: 
mapView.setSatellite(true); 
break; 
case R.id.street: 
mapView.setStreetView(true); 
break; 
case R.id.traffic: 
mapView.setTraffic(true); 
break; 
case R.id.normal: 
mapView.setSatellite(false); 
mapView.setStreetView(false); 
mapView.setTraffic(false); 
break; 
} 
} 
@Override 
protected boolean isLocationDisplayed() { 
return false; 
} 
@Override 
protected boolean isRouteDisplayed() { 
return false; 
} 

的manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="menu.dot" android:versionCode="1" ndroid:versionName="1.0"> 
<application android:label="@string/app_name" android:icon="@drawable/icon"> 
<uses-library android:name="com.google.android.maps" /> 
<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> 
<activity android:name=".About"> 
android:label="@string/about_title" 
android:theme="@android:style/Theme.Dialog" > 
</activity> 
<activity android:name=".Exit"> 
andorid:label="@string/exit_title"> 
</activity> 
<activity android:name=".Options"> 
</activity> 
<activity android:name=".Start"> 
</activity> 
<activity android:name=".Create"> 
</activity> 
<activity android:name=".Where"> 
</activity> 
<activity android:name=".Proceed"> 
</activity> 
<activity android:name=".Finish"> 
</activity> 
<activity android:name=".Login"> 
</activity> 
<activity android:name=".OK"> 
</activity> 
<activity android:name=".UserPanel"> 
</activity> 
<activity android:name=".Managero"> 
</activity> 
<activity android:name=".Edition"> 
</activity> 
<activity android:name=".Done"> 
</activity> 
<activity android:name=".Delete"> 
</activity> 
<activity android:name=".MapMapa"> 
</activity> 

</application> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-sdk android:minSdkVersion="3" /> 
</manifest> 

my view

+1

不知道这是否会导致该问题,但是,你有没有设置Internet权限的Android清单文件? – 2011-11-02 14:53:35

+1

@ user552629发布您的清单文件? – Venky

+2

Kurtis Nusbaum,不知道我纠正了我的错误;) – iie

回答

6
E/MapActivity(394): Couldn't get connection factory client 

这不会成为你的情况。这只是警告信息。

对于使用地图,事情你需要牢记:

1.新增互联网许可清单文件

<uses-permission android:name="android.permission.INTERNET" /> 

2.添加库中的代码清单文件:

<uses-library android:name="com.google.android.maps" /> 
  1. 扩展Map Activity而不是Activity也确保您的SDK谷歌没有使用Android

  2. 然后使用Release Key,而不是通过使用Default Android Debug key 检查这个职位产生图例创建Key using Release Key.

为了进一步引用检查此链接Mobi Forge

Output of your code

+2

我已经完成了所有这些东西 – iie

+1

嗯我'我做了这件事从谷歌[这MD5]密钥库等密钥。我是否必须使这个版本的关键,即使是模拟器? – iie

+0

@iie模拟器不需要吗? – Venky

1

你需要建立签署的apk文件,请在您的手机上尝试。我通过同样的问题

1

在Android的地图程序,你必须把以下权限的Android清单文件 以前 <application></application>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" />

,你应该在标签写入之前

<uses-library android:name="com.google.android.maps" />

并生成适当的地图API密钥... 我的脸问题之后。 比我创建新的Android项目与谷歌阿比......我解决了这个问题...

0

老兄,你怎么弄的API密钥? 如果debug.keystore位于ur文档和设置中,可能需要复制keytool.exe才能执行 keytool -list -alias androiddebugkey -keys tore debug.keystore -storepass android -keypass android -v

,这将释放出一个错误的MD5密钥。您必须执行以下操作 1-将您的debug.keystore复制到您的程序文件中java bin 2转到cmd中的此目录并执行keytool命令 它将为您提供不同的MD5,这是正确的。

相关问题