我目前正在从旧的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的低端设备或用户。
答案 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的愿望相冲突。