无法在Android模拟器2.3上加载MapActivity中的任何内容

时间:2012-03-11 19:24:41

标签: android android-emulator android-maps

我正在尝试在我的活动中加载Google mmaps。在经历了一系列错误之后,我的日志猫终于向我显示了这个错误:

03-11 23:42:08.390: E/MapActivity(712): Couldn't get connection factory client

地图活动不会加载任何内容。我试着寻找解决方案,并且:

  • 我的活动扩展了MapActivity
  • 我已经给了互联网持续<uses-permission android:name="android.permission.INTERNET"/>
  • 我还告诉应用我将使用地图库&lt; uses-library android:name="com.google.android.maps"/>
  • 我的目标计算机和虚拟机都具有API级别10并且都是目标Google API
  • 我的api密钥正确且有效。
  • 我使用宽带连接直接连接到互联网。

我的猜测是我无法访问互联网。我试图在模拟器中打开浏览器,但无法打开任何URL。所以我想我在模拟器上无法访问互联网。在搜索了一段关于在模拟器上连接互联网并参考this question之后,我尝试运行命令:C:\program files\android\android-sdk-windows\tools\emulator -avd -dns-server 8.8.8.8

但我最终得到了错误:

PANIC: Could not open: C:\Documents and Settings\dwadasi\.android/avd/-dns-serv
r.ini

我无法理解问题所在。我尝试在我的Android手机上安装APK文件[2.3.6]并且它有效。但我真的需要它在我的模拟器上工作,因为我还需要做很多开发。

2 个答案:

答案 0 :(得分:0)

我在开发过程中经常遇到这种情况。通常我只是杀死模拟器并创建一个新的东西并自行修复。

您在使用浏览器测试互联网连接方面做得很对。如果你没有连接,那么映射就无法工作。

答案 1 :(得分:0)

试试这个代码....我用这个,现在正在工作。

class MapOverlay extends com.google.android.maps.Overlay
{
    @Override
    public boolean draw(Canvas canvas, MapView mapView, 
    boolean shadow, long when) 
    {
        super.draw(canvas, mapView, shadow);                   

        //---translate the GeoPoint to screen pixels---
        Point screenPts = new Point();
        mapView.getProjection().toPixels(p, screenPts);

        //---add the marker---
        Bitmap bmp = BitmapFactory.decodeResource(
            getResources(), R.drawable.pushpin2);            
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);         
        return true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    {   
        add="";
        //---when user lifts his finger---
        if (event.getAction() == 1) {                
            GeoPoint p = mapView.getProjection().fromPixels(
                (int) event.getX(),
                (int) event.getY());


            Geocoder geoCoder = new Geocoder(
                    getBaseContext(), Locale.getDefault());
                try {
                    List<Address> addresses = geoCoder.getFromLocation(
                        p.getLatitudeE6()  / 1E6, 
                        p.getLongitudeE6() / 1E6, 1);

                    lattitude=p.getLatitudeE6()  / 1E6;
                    longitude=p.getLongitudeE6() / 1E6;

                    if (addresses.size() > 0) 
                    {
                        for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); 
                             i++)
                           add += addresses.get(0).getAddressLine(i) + "\n";
                    }

                    Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();


                }
                catch (IOException e) {                
                    e.printStackTrace();
                }   
                return true;

        }                
        else {
        return false;
        }
    }        
}