2015-03-13 98 views
1

我正尝试使用较新的camera2 API编写我自己的相机应用程序。 在这一点上,我只是试图让应用程序开始与模拟的Nexus 5中固定的640x480 SurfaceView上显示相机。Android camera2 app:“app passed NULL surface”

这是我从Logcat,以及相关的错误代码: http://pastebin.com/sESf6C1p

即使经过大量的调试和反复阅读API文档,我仍然不知道这里有什么问题。我发现了一些证据,我应该在调用createCaptureSession(Android Camera - app passed NULL surface)之前添加一个延迟,我尝试使用SystemClock.sleep(1000),但无济于事。不知道该怎么做“eglCreateContext:EGL错误:0x3005”要么。

我在SurfaceCreated之后运行的surfaceChanged回调中调用了createCaptureSession,所以表面应该全部设置好了吗?我不明白为什么SDK在内部传递零表面。

任何提示赞赏!

+2

“app passed NULL surface”是一个调试级别的消息。失败是来自'android.hardware.camera2.legacy.SurfaceTextureRenderer.configureEGLContext'的IllegalStateException,这似乎与EGL上下文有关。您是否启用了GPU模拟功能?您是否在真实设备上试用了您的应用程序? – fadden 2015-03-13 15:16:32

回答

2

原来的错误是因为仿真的Nexus 5没有GL支持。它在我的Nexus 9上正常工作(打印的调试日志“Camera configured!”)。

如果未启用“使用主机GPU”设置,模拟器无法启动,但这是另一回事。我只会在真正的硬件上运行。