cuối cùng Cập nhật
Tính đến 2013/12/20, các Android Dashboard cho thấy khoảng 100% các thiết bị bây giờ hỗ trợ OpenGL 2.0+ nên câu trả lời này là không còn phù hợp. Bạn có thể chỉ cần yêu cầu OpenGL ES 2.0+ trong tệp kê khai của mình.
Cập nhật
này được cố định như của rev 7 của Google Play Services SDK add-on. Sử dụng an toàn là <uses-feature android:glEsVersion="0x00020000" android:required="false"/>
và đến detect OpenGL ES 2.0 at runtime.
Original câu trả lời
Dường như API v2 Google Maps dành cho Android đòi hỏi một <uses-feature android:glEsVersion="0x00020000" android:required="true/>
khai rõ ràng trong AndroidManifest.xml
vì vậy không có cách nào để triển khai Google Maps dành cho Android dịch vụ API v2 không loại trừ tất cả các thiết bị 1.x OpenGL ES . Tại thời điểm viết bài này, Google's Android Dashboard cho thấy rằng, trong số các thiết bị 1.1 và 2.0, 90.8% thiết bị hỗ trợ 2.0.
Trên một thiết bị đặc biệt (Motorola XOOM), mã này kết quả trong 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;
Tuy nhiên, khi không có <uses-feature>
khai trong biểu hiện, MapFragment là ném một 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
Dưới đây là hy vọng rằng bản cập nhật cho thư viện Maps sẽ xóa giới hạn này để chúng tôi có thể triển khai một APK đơn lẻ và sử dụng API thời gian chạy để xác định có tải trải nghiệm Google Maps phiên bản 2 mới hay không giải pháp tốt.
Nguồn
2012-12-05 17:42:31
Chỉ cần android: required = "false". Sau đó, nó không nên được lọc. – thaussma
'android: required =" false "' kết quả trong '12-05 22: 18: 31.484: E/AndroidRuntime (9618): Gây ra bởi: java.lang.RuntimeException: API Google Maps Android chỉ hỗ trợ OpenGL ES 2.0 andabove. Vui lòng thêm vào AndroidManifest.xml 'trên Nexus S 4.1.2 –
qubz
Vấn đề tương tự ở đây, nếu tôi xóa yêu cầu khỏi tệp kê khai (hoặc set required = "false") MapFragment ném một ngoại lệ trên một thiết bị không hỗ trợ OpenGL ES 2.0. Nó giống như MapFragment đang tìm kiếm yêu cầu trong cấu hình dịch vụ hoạt động hơn là kiểm tra xem bản thân thiết bị có hỗ trợ OpenGL ES 2.0 hay không. –