Mise à jour finale
Au 20/12/2013, les Android Dashboard montre qu'environ 100% des appareils prennent désormais en charge OpenGL 2.0+ si cette réponse n'est plus pertinente. Vous pouvez simplement exiger OpenGL ES 2.0+ dans votre manifeste.
Mise à jour
Ceci est fixé au 7 tours du Google Play SDK des services add-on. Il est sûr d'utiliser <uses-feature android:glEsVersion="0x00020000" android:required="false"/>
et detect OpenGL ES 2.0 at runtime.
réponse originale
Il semble que le Google Maps API Android v2 nécessite une déclaration <uses-feature android:glEsVersion="0x00020000" android:required="true/>
explicite AndroidManifest.xml
donc il n'y a aucun moyen de déployer Google Maps API Android services v2 sans exclure tous les périphériques 1.x OpenGL ES . Au moment où j'écris, Google's Android Dashboard montre que, parmi les appareils 1.1 et 2.0, 90.8% des appareils prennent en charge 2.0.
Sur un dispositif particulier (Motorola XOOM), ce code entraîne supportsEs2 = true
:
// Check if the system supports OpenGL ES 2.0.
final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
Cependant, lorsqu'il n'y a pas de déclaration <uses-feature>
dans le manifeste, MapFragment est de lancer une RuntimeException:
Caused by: java.lang.RuntimeException: Google Maps Android API only supports OpenGL ES 2.0 andabove. Please add <uses-feature android:glEsVersion="0x00020000" android:required="true" /> into AndroidManifest.xml
at maps.y.ae.a(Unknown Source)
at maps.y.bu.a(Unknown Source)
at maps.y.p.onCreateView(Unknown Source)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:107)
at android.os.Binder.transact(Binder.java:297)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$a.onCreateView(Unknown Source)
at com.google.android.gms.internal.c$4.a(Unknown Source)
at com.google.android.gms.internal.c.a(Unknown Source)
at com.google.android.gms.internal.c.onCreateView(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:884)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066)
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
... 22 more
En espérant qu'une mise à jour de la bibliothèque Maps supprimera cette limitation afin que nous puissions déployer un seul fichier APK et utiliser des API d'exécution pour déterminer si vous souhaitez charger la nouvelle expérience Google Maps v2 ou revenir à un autre solution viable.
Juste android: requis = "faux". Ensuite, il ne devrait pas être filtré. – thaussma
'android: required =" false "' aboutit à '12-05 22: 18: 31.484: E/AndroidRuntime (9618): Causé par: java.lang.RuntimeException: L'API Google Maps Android supporte uniquement OpenGL ES 2.0 et plus. S'il vous plaît ajouter dans AndroidManifest.xml 'sur un Nexus S 4.1.2 –
qubz
Même question ici, si je supprime l'exigence du manifeste (ou set required = "false") MapFragment lève une exception sur un périphérique qui supporte OpenGL ES 2.0. C'est comme si MapFragment cherchait l'exigence dans la configuration du service d'activité plutôt que de vérifier si le périphérique lui-même prend en charge OpenGL ES 2.0. –