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

stf*_*tfn 6 camera android 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);
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

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

谢谢,
斯蒂夫

小智 3

看起来相机请求的 EGLConfig 与 Froyo 中的软件 GL 渲染器当前支持的 EGLConfig 之间不匹配。查看您是否可以请求 RGB565 EGL 配置。

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

diff --git a/src/com/android/camera/ui/GLRootView.java b/src/com/android/camera/ui/GLRootView.java
索引 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);  
Run Code Online (Sandbox Code Playgroud)