Android fragments 谷歌地图v2灰色屏幕上的AVD与4.3 SDK 18

Android fragments 谷歌地图v2灰色屏幕上的AVD与4.3 SDK 18,android-fragments,avd,android-maps-v2,Android Fragments,Avd,Android Maps V2,我为android版google maps v2创建了我的google api密钥,所有内容都在eclipse中为google maps设置(使用google+api构建、链接到google play服务、api密钥排序等),我可以在手机上查看地图应用程序,但当我在AVD上查看相同的应用程序时,它会转到正确的位置,我可以看到所有google地图覆盖(如缩放按钮)但没有地图,它只是一个灰色框。联网也很好 我使用的是最新的4.3 API 18版本,我的AVD是默认的Nexus One。在此之前,我收

我为android版google maps v2创建了我的google api密钥,所有内容都在eclipse中为google maps设置(使用google+api构建、链接到google play服务、api密钥排序等),我可以在手机上查看地图应用程序,但当我在AVD上查看相同的应用程序时,它会转到正确的位置,我可以看到所有google地图覆盖(如缩放按钮)但没有地图,它只是一个灰色框。联网也很好

我使用的是最新的4.3 API 18版本,我的AVD是默认的Nexus One。在此之前,我收到了一条可怕的“更新google play services”消息,我发现这是因为maps v2根本无法在4.2上运行,所以我升级阅读了“maps应该可以在AVD上使用SDK 18”

知道为什么它没有显示吗?我确实注意到当我启动AVD时,它说使用的是opengl软件,但我认为它还可以

我读过很多关于stackoverflow的文章,但是它们都指向一个错误的配置,我的配置很好,当我把它发送到我的手机上时,它不会抛出任何错误

如果有什么帮助的话,这里有一些我正在使用的代码片段

舱单:

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" 
        android:value="XXXXXXXXXXXXXXXXXXXX"/>
显示地图的代码:

private void displayLocation(Location l, String text) {
    if(googleMap!=null) {
        googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        LatLng ll=new LatLng(l.getLatitude(), l.getLongitude());
        CameraPosition cp=new CameraPosition.Builder()
            .target(ll)
            .zoom(18)
            .build();

        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
        Toast.makeText(activity, l.getLatitude()+":"+l.getLongitude(), Toast.LENGTH_LONG).show();

    }
}

你应该看到类似的东西

E/Google Maps Android API﹕ Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above

在控制台中。这是使用Google API的emulator存在的一个已知问题。我建议切换到,它工作正常。

要在AVD上成功运行Google maps

  • 创建非Google API仿真器API级别高于3.0
  • 将using in下载到您的电脑(必须是最新版本)
  • 下载(必须是最新版本)
  • 在上使用adb Install命令安装这些APK Android仿真器

  • 现在一切都准备好在模拟器上测试Google maps v2了。在模拟器上运行你的应用程序

    在我的经验中,我发现仅仅获得一个灰色地图就意味着存在一些许可证密钥问题(因此Google拒绝为彩色地图块提供服务器),但其他一切都可能与你的应用程序无关(特别是如果你可以在灰色地图上滚动)。

    @Neil它应该可以工作,但似乎有一个问题超出了谷歌地图API的控制范围。
    private void displayLocation(Location l, String text) {
        if(googleMap!=null) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            LatLng ll=new LatLng(l.getLatitude(), l.getLongitude());
            CameraPosition cp=new CameraPosition.Builder()
                .target(ll)
                .zoom(18)
                .build();
    
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp));
            Toast.makeText(activity, l.getLatitude()+":"+l.getLongitude(), Toast.LENGTH_LONG).show();
    
        }
    }
    
    E/Google Maps Android API﹕ Google Maps Android API v2 only supports devices with OpenGL ES 2.0 and above