2015-03-13 251 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」設置,模擬器無法啓動,但這是另一回事。我只會在真正的硬件上運行。