GoogleMapsV2 OpenGL问题

时间:2013-11-21 16:44:07

标签: android google-maps opengl-es google-maps-android-api-2 legacy

我目前正在从旧的GoogleMaps API切换到较新的V2。我重构了旧逻辑,它完美无缺。因为我也支持2.1设备,所以我希望将旧版本作为旧设备或没有PlayStore的设备的旧版解决方案。在我来到HTC-Wildfire之前,我测试了很多设备。此设备已委托给MapsV2,但仅显示空白屏幕。我怀疑它无法呈现新地图,因为它缺乏对OpenGlES的支持。

这是我用来确定应该显示哪个地图版本的代码:

int availCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
            switch (availCode) {
            case ConnectionResult.SUCCESS:
                addTab(TAB_GOOGLE_MAPS, R.string.tab_google_map, R.drawable.tab_surrounding, GoogleMapsActivityV2.class, true);
                break;
            case ConnectionResult.SERVICE_MISSING:
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
            case ConnectionResult.SERVICE_DISABLED:
                GooglePlayServicesUtil
                .getErrorDialog(availCode, this, REQUEST_CODE_PLAY_SERVICES)
                .show();
                break;
            case ConnectionResult.SERVICE_INVALID:
            default:
                addTab(TAB_GOOGLE_MAPS, R.string.tab_google_map, R.drawable.tab_surrounding, GoogleMapsActivity.class, true);
                break;
            }

所以它有谷歌播放服务支持,但显然这个检查不是enaugh。是否可以检查支持的OpenGL-ES版本?我应该检查什么来使shure MapsV2运行?我无法在清单中定义requiresFeature openGLES标记,因为我有遗留的后备,并且不想排除不喜欢PlayStore的低端设备或用户。

1 个答案:

答案 0 :(得分:1)

这是对OpenGL / ES 2支持的编程检查:

// Check device configuration to ensure OpenGL ES 2.0 support
ActivityManager am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo config = am.getDeviceConfigurationInfo();
if (config.reqGlEsVersion < 0x20000)
{
 addTab(TAB_GOOGLE_MAPS, R.string.tab_google_map, R.drawable.tab_surrounding, GoogleMapsActivity.class, true);
}
else
{
 ... check for Play Services...
}

您还可以通过应用清单支持OpenGL / ES 2支持:

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

虽然这会与您支持Android 2.1的愿望相冲突。