Google使用4.3 SDK 18在AVD上映射v2灰色屏幕

时间:2013-10-07 15:49:48

标签: android-fragments avd android-maps-v2

我为Android谷歌地图v2创建了我的谷歌api键,所有内容都设置在eclipse中用于谷歌地图(使用谷歌+ api构建,链接到谷歌播放服务,api键排序等),我可以查看地图应用程序在我的手机上很好,但是当我在AVD上查看相同的应用程序时它会到达正确的位置,我可以看到所有的谷歌地图叠加(例如缩放按钮),但没有地图,它只是一个灰色的框。网络也很好。

我正在使用最新的4.3 API 18版本,而我的AVD是默认的Nexus One。在此之前我得到了可怕的'更新谷歌播放服务'消息,我发现这是因为地图v2根本没有在4.2上工作所以我升级阅读地图应该可以在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"/>

布局摘要:

<fragment
    android:id="@+id/worldmap"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

初始化地图的代码:

private void initialiseMap() {
    if (googleMap == null) {
        googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(
                R.id.worldmap)).getMap();

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(activity.getApplicationContext(),
                    "Unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        }
    }       
}

显示地图的代码:

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();

    }
}

3 个答案:

答案 0 :(得分:0)

您应该看到类似

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

在控制台中。这是使用Google API的模拟器的已知问题。我建议切换到Genymotion,它可以正常工作。

答案 1 :(得分:0)

在AVD上成功运行Google地图

  1. 创建非Google API仿真器API级别高于3.0
  2. 使用Google play services apkonline apk downloader下载到您的电脑(必须是最新版本)
  3. 下载Google play srore apk(必须是最新版本)
  4. 使用adb install命令安装这些apks Android模拟器
  5. 现在一切都准备好在模拟器上测试Google maps v2了。在模拟器上运行您的应用程序

答案 2 :(得分:0)

根据我的经验,我看到只是获得灰色地图意味着存在一些许可证密钥问题(因此Google拒绝提供彩色地图图块),但是否则其他所有内容都可能适用于您的应用程序(尤其是如果你可以滚动灰色地图)。