在Froyo / 2.2中,Emulator的相机内置app bug?

时间:2010-06-01 10:03:11

标签: android camera emulation

模拟器的相机在2.1 Eclair拍照时效果很好。显然,录制视频不起作用 现在运行的应用程序仅在2.1 Emulator上完美无缺,导致相机应用程序崩溃。我启动了启动它的意图:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(TEMP_PHOTO_FILE)));
startActivityForResult(intent, REQUEST_CAMERA);

这会启动相机应用程序,但几秒钟后它会崩溃。输出是:

06-01 09:57:15.593: DEBUG/libEGL(5212): egl.cfg not found, using default config
06-01 09:57:15.593: DEBUG/libEGL(5212): loaded /system/lib/egl/libGLES_android.so
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): FATAL EXCEPTION: GLThread 11
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): java.lang.IllegalArgumentException: No configs match configSpec
06-01 09:57:15.733: ERROR/AndroidRuntime(5212):     at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212):     at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212):     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212):     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

实际上,我只是想知道即使指定了EXTRA_OUTPUT而导致您从相机接收到小图像的错误是否已在FroYo中修复。不幸的是,我甚至没有去测试它 有没有人遇到类似的问题?

谢谢,
Steff

2 个答案:

答案 0 :(得分:3)

看起来相机正在请求的EGLConfig与Froyo中的s / w GL渲染器当前支持的EGLConfig之间存在错误。看看您是否可以申请RGB565 EGL配置。

此外,以下更改对我有用。它基本上从EGLConfig中删除了Stencil缓冲区,因为在Froyo的s / w GL渲染器中似乎根本不支持该配置。如果您正在Droid等真实设备上进行测试,请添加原始配置。

diff --git a / src / com / android / camera / ui / GLRootView.java b / src / com / android / camera / ui / GLRootView.java
index d8ae0f8..545c66a

--- a/src/com/android/camera/ui/GLRootView.java  
+++ b/src/com/android/camera/ui/GLRootView.java  
@@ -174,7 +174,8 @@ public class GLRootView extends GLSurfaceView  

     private void initialize() {  
         mFlags |= FLAG_INITIALIZED;  
-        setEGLConfigChooser(8, 8, 8, 8, 0, 4);  
+        setEGLConfigChooser(8, 8, 8, 8, 0, 0);  
         getHolder().setFormat(PixelFormat.TRANSLUCENT);  
         setZOrderOnTop(true);  

答案 1 :(得分:0)

模拟器2.2已损坏 请为此投票:code.google.com/p/android/issues/detail?id=9376,以便我们得到解决方案。

解决方法:创建一个以2.1为目标的AVD。