2012-12-05 4 views
30

नक्शे v2 प्रलेखन राज्यों की आवश्यकता है:एंड्रॉयड मैप्स एपीआई OpenGL ES 2

Google मानचित्र Android API का संस्करण 2 OpenGL ES संस्करण 2 की आवश्यकता है, तो आप एक <uses-feature> तत्व के एक बच्चे के रूप में जोड़ना होगा AndroidManifest.xml में manifest तत्व:

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

यह आवश्यकता के बाहरी सेवाओं सूचना देता है। विशेष रूप से, यह डिवाइस पर अपना ऐप दिखाने से Google प्ले स्टोर को रोकने का प्रभाव है कि समर्थन नहीं करते OpenGL ES संस्करण 2.

वास्तव में है, यह एक exception फेंकता है तो यह प्रकट में नहीं है । मैं अपने ऐप को स्टोर में फ़िल्टर नहीं करना चाहता, मैं पुराने उपकरणों के लिए पुराने मानचित्रों का उपयोग करना जारी रखने की योजना बना रहा हूं, और केवल नए मानचित्र दिखाएं यदि आवश्यक सुविधाएं मौजूद हैं, तो इंस्टॉलेशन से पहले रनटाइम पर पता चला है।

तो मैं यह कैसे कर सकता हूं? क्या यह के साथ कई APKs जैसा कुछ होना चाहिए?

+2

बस एंड्रॉइड: आवश्यक = "झूठा"। फिर इसे फ़िल्टर नहीं किया जाना चाहिए। – thaussma

+6

'एंड्रॉइड: आवश्यक =" झूठा "' परिणाम 12-05 22: 18: 31.484: ई/एंड्रॉइड रनटाइम (9 618): इसके कारण: java.lang.RuntimeException: Google मैप्स एंड्रॉइड एपीआई केवल ओपनजीएल ईएस 2.0 और ऊपर का समर्थन करता है। कृपया <उपयोग-फीचर एंड्रॉइड: glEsVersion = "0x00020000" एंड्रॉइड जोड़ें: आवश्यक = "सत्य" /> एंड्रॉइडमैनीफेस्ट.एक्सएमएल 'नेक्सस एस 4.1.2 – qubz

+0

पर समान समस्या, अगर मैं मैनिफेस्ट से आवश्यकता को हटाता हूं (या सेट आवश्यक = "झूठा") MapFragment किसी डिवाइस पर अपवाद फेंकता है जो OpenGL ES 2.0 का समर्थन करता है। ऐसा लगता है कि मैपफ्रैगमेंट गतिविधि सेवा कॉन्फ़िगरेशन में आवश्यकता की तलाश कर रहा है, यह जांचने के बजाय कि डिवाइस को ओपनजीएल ES 2.0 के लिए समर्थन है या नहीं। –

उत्तर

28

अंतिम अद्यतन

2013/12/20 के रूप में, Android Dashboard शो है कि उपकरणों के लगभग 100% अब ओपन 2.0+ समर्थन तो यह जवाब अब प्रासंगिक नहीं है। आपको अपने मैनिफेस्ट में ओपनजीएल ईएस 2.0+ की आवश्यकता हो सकती है।

अद्यतन

यह गूगल के राजस्व 7 के रूप में तय हो गई है सेवाएं SDK ऐड-ऑन खेलते हैं। <uses-feature android:glEsVersion="0x00020000" android:required="false"/> और detect OpenGL ES 2.0 at runtime का उपयोग करना सुरक्षित है।

मूल जवाब

ऐसा लगता है कि Google मानचित्र Android API v2 एक स्पष्ट <uses-feature android:glEsVersion="0x00020000" android:required="true/> घोषणा AndroidManifest.xml में तो वहाँ सभी OpenGL ES 1.x उपकरणों को छोड़े बिना Google मानचित्र Android API v2 सेवाओं को तैनात करने का कोई तरीका नहीं है की आवश्यकता है । इस लेखन के समय, Google's Android Dashboard दिखाता है कि 1.1 और 2.0 उपकरणों में से 9 0.8% डिवाइस 2.0 का समर्थन करते हैं।

से किसी विशेष उपकरण (Motorola XOOM) पर, supportsEs2 = true में इस कोड के परिणाम:

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 
:

// 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; 

हालांकि, जब वहाँ प्रकट करने में कोई <uses-feature> घोषणा है, MapFragment एक RuntimeException फेंक है

यह उम्मीद करने के लिए है कि मानचित्र लाइब्रेरी में एक अपडेट इस सीमा को हटा देगा ताकि हम एक एकल एपीके तैनात कर सकें और यह निर्धारित करने के लिए रनटाइम एपीआई का उपयोग कर सकें कि नया Google मानचित्र v2 अनुभव लोड करना है या नहीं, या किसी अन्य compat पर वापस आना ible समाधान।

+4

यह समस्या यहां ट्रैक की गई है: http://code.google.com/p/gmaps-api-issues/issues/detail?id=4699 इस मुद्दे को तारांकित करने के लिए मत भूलना, उम्मीद है कि यह प्राप्त होगा देखा। दिसंबर 2012 तक, केवल 7 वोट हैं। –

1

में उल्लेख किया है मैं एक ही समस्या थी, चारों ओर देखा और एमुलेटर के लिए सुझाव दिया वैकल्पिक हल के सबसे मेरे लिए काम नहीं किया मानचित्र Android API की अगली फिल्म के साथ रिलीज की जाएगी। तब मुझे एक पोस्ट मिली Genymotion एम्यूलेटर का सुझाव दिया गया था। यह एमुलेटर ओपनजीएल ईएस संस्करण 2 का समर्थन करता है। यह मानक एमुलेटर से भी तेज है।