1

由于新的 Google Maps Android API V2 需要 Google Play 服务,是否需要启用“后台数据”才能运行地图应用?我习惯于在不需要时关闭后台数据,因为它会很快耗尽电池,而且我不希望我的应用程序要求启用它。

更新:花了一天时间尝试通过以下方式进行研究:
- 安装 Android 支持库和 Google Play 服务 SDK(哦,看,已经有 rev. 3 的更新可用)。- 导入https://developers.google.com/maps/documentation/android/intro#sample_code > 中引用的示例代码。
- 获取新的 maps v2 API 密钥,并将其放入 AndroidManifest.xml
- (重新)配置示例代码,并运行/调试它。
演示应用程序不会在模拟器上运行,因为 Play 服务需要无法内置到模拟器中的软件,而且似乎需要做很多工作来解决这个问题,也许其他时间。所以我在带有 Froyo 的 Samsung Intercept 上运行了演示。SupportMapFragment 和/或 com.google.android.gms.maps.MapView 代码让我开始更新 Google Play 服务 APK。为此,我需要启用“背景数据”(这是最初的问题)。之后,该应用程序允许我选择各种地图演示,但没有一个显示地图。
LogCat 显示:

    12-04 19:50:28.937: I/(18909): =======Chunk::PrintChunkBlckInfo ======
    12-04 19:50:28.937: I/(18909): libGLESv1_CM_fimg.so 已卸载并且 GLES 1.1 API 已成功取消映射
    12-04 19:50:34.557: I/(18909): libGLESv1_CM_fimg.so 已加载并且 GLES 1.1 API 已成功映射
    12-04 19:50:34.562:我/(18909):
12-04 19:50:34.562: I/(18909): [块分配器] 1 个块(块大小:0x100000) 12-04 19:50:34.562:我/(18909):
12-04 19:50:34.562: I/(18909): =======Chunk::PrintChunkBlckInfo ====== 12-04 19:50:34.562:我/(18909):
12-04 19:50:34.562:我/(18909):------------------------ ------------------ 12-04 19:50:34.562: I/(18909): [0] 使用标志:1,开始:0,大小:1048576,下一个:0x0 12-04 19:50:34.562:我/(18909):
12-04 19:50:34.562:我/(18909):------------------------ ------------------ 12-04 19:50:34.562: I/(18909): 总纹理大小 0 字节 0 KB 总纹理计数 0 12-04 19:50:34.562:我/(18909):
12-04 19:50:34.562:我/(18909):------------------------ ------------------ 12-04 19:50:34.937: E/(18909): glCompressedTexImage2D(0xde1, 0, 0x8b96, 32, 8, 0, 1280, 0x0x369c70); 12-04 19:50:34.942: E/(18909): glCompressedTexImage2D(0xde1, 0, 0x8b96, 32, 8, 0, 1280, 0x0x379b90); 12-04 19:50:34.962: E/(18909): glCompressedTexImage2D(0xde1, 0, 0x8b96, 16, 1, 0, 1040, 0x0x347ac0);


所以现在,我仍然没有明确的答案,也不知道地图不显示的原因是我的密钥生成/插入问题(在 LogCat 中没有任何指示),还是(更有可能?) OpenGL的一个问题。

4

1 回答 1

2

这三件事需要检查。

  1. 设备是否安装了 Google 服务:

    switch (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)) {
    case ConnectionResult.SUCCESS:
        //Device has Google play services installed
        break;
    
    default:
        break;
    }
    
  2. 是否支持 OpenGL ES 2.0

    private boolean checkGL20Support(Context context) {
    EGL10 egl = (EGL10) EGLContext.getEGL();
    EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
    
    int[] version = new int[2];
    egl.eglInitialize(display, version);
    
    int EGL_OPENGL_ES2_BIT = 4;
    int[] configAttribs = { EGL10.EGL_RED_SIZE, 4, EGL10.EGL_GREEN_SIZE, 4,
            EGL10.EGL_BLUE_SIZE, 4, EGL10.EGL_RENDERABLE_TYPE,
            EGL_OPENGL_ES2_BIT, EGL10.EGL_NONE };
    
    EGLConfig[] configs = new EGLConfig[10];
    int[] num_config = new int[1];
    egl.eglChooseConfig(display, configAttribs, configs, 10, num_config);
    egl.eglTerminate(display);
    return num_config[0] > 0;
    }
    
  3. 验证 API 密钥是否正确 i。是否通过正确的调试密钥和包生成密钥 ii。通过“Google Maps Android API v2”而不是“Google Maps API v2”生成的密钥在此处输入图像描述

于 2012-12-17T10:02:56.187 回答