这是我简单的相机意图演示,其中我只有一个活动…..
package x.y; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.widget.ImageView; public class PhotoShoot extends Activity { final static int CAMERA_RESULT = 0; ImageView imv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i, CAMERA_RESULT); } protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (resultCode == RESULT_OK) { Bundle extras = intent.getExtras(); Bitmap bmp = (Bitmap) extras.get("data"); imv = (ImageView) findViewById(R.id.ReturnedImageView); imv.setImageBitmap(bmp); } } }
和Layout main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/ReturnedImageView" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ImageView> </LinearLayout>
清单…
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="x.y" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".PhotoShoot" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
在Android模拟器2.2中几秒钟后投掷“强制关闭”,从“相机意图”开始启动以下异常…
07-06 15:26:00.999: ERROR/AndroidRuntime(544): FATAL EXCEPTION: GLThread 11 07-06 15:26:00.999: ERROR/AndroidRuntime(544): java.lang.IllegalArgumentException: No configs match configSpec 07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760) 07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916) 07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246) 07-06 15:26:00.999: ERROR/AndroidRuntime(544): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
任何想法?
这实际上是一个更大的问题的一部分,我希望通过在这里发布,其他经历过这个错误的人会读这个条目.我同样希望,如果我的任何结论不正确,有人会提出更明确的解释和/或解决方案.
核心问题是OpenGL的支持.从2.2开始,Android支持OpenGL ES 2.0,从4.0.3开始,Android模拟器支持OpenGL ES 2.0.使用OpenGL ES 2.0的代码在4.0.3之前不能在模拟器上运行. [显然,相机在Android 2.2从ES 1.0切换到2.0]
但这不是全部!我没有遇到任何Android文档提到,为了支持Open GL ES 2.0仿真,您的盒子的显卡芯片组和驱动程序也必须支持OpenGL 2.0.因此,如果在AVD上启用GPU仿真,并且仍然遇到此错误,请执行以下操作:
1)查看显卡上的规格,并访问芯片组制造商的网站,以确定芯片组是否兼容OpenGL 2.0.如果不是,你是S.O.L.并且必须通过实际的Android设备而不是模拟器来坚持调试.
2)确定您是否拥有芯片组的最新图形驱动程序.通过Microsoft获得的驱动程序(如果您使用Windows)通常不支持OpenGL,因此您需要从制造商下载最新的驱动程序.
我希望这有帮助.
代码日志版权声明:
翻译自:http://stackoverflow.com/questions/6594636/java-lang-illegalargumentexception-no-configs-match-configspec-while-openin