Android 相机 2 应用:"app passed NULL surface"

Android camera2 app: "app passed NULL surface"

我正在尝试使用较新的 camera2 API 编写自己的相机应用程序。 在这一点上,我只是试图让应用程序开始,相机出现在模拟 Nexus 5 的固定 640x480 SurfaceView 上。

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

老实说,我不知道这里出了什么问题,即使在反复调试和阅读 API 文档之后也是如此。我发现一些证据表明我应该在调用 createCaptureSession (Android Camera - app passed NULL surface) 之前添加延迟,我尝试使用 SystemClock.sleep(1000),但无济于事。也不知道 "eglCreateContext: EGL error: 0x3005" 是什么意思。

我在 surfaceCreated 之后 运行 的 surfaceChanged 回调中调用 createCaptureSession,所以 surface 应该都设置好了,不是吗?我不明白为什么 SDK 在内部绕过一个空表面。

感谢任何提示!

原来这个错误是因为模拟的 Nexus 5 不支持 GL。它在我的 Nexus 9 上运行良好(打印的调试日志 "Camera configured!")。

如果没有启用 "Use Host GPU" 设置,模拟器不会为我启动,但这是另一回事。我只会 运行 在真正的硬件上。