1
我開始使用新的camera2 API。開始第二個活動後相機不工作
我在我的第一個Activity中運行TextureView
的相機預覽。通過我的導航抽屜,我可以開始第二個活動。我想要這個也給我看一個TextureView
的相機預覽。不幸的是,屏幕保持白色,我沒有看到圖片。我不知道該錯誤,找不到任何關於它的東西:
5278-5414/de.application E/CameraDeviceGLThread-0﹕ Received exception on GL render thread:
java.lang.IllegalStateException: swapBuffers: EGL error: 0x300d
at android.hardware.camera2.legacy.SurfaceTextureRenderer.checkEglError(SurfaceTextureRenderer.java:487)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.swapBuffers(SurfaceTextureRenderer.java:480)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:681)
at android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:103)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:211)
at android.os.HandlerThread.run(HandlerThread.java:61) 06-01 23:00:44.258 5278-5414/de.application I/CameraDeviceState﹕ Legacy camera service transitioning to state ERROR
我開始新的活動非常簡單,和攝像機的功能是在兩個Activitys或多或少相同。
Intent i = new Intent(MainActivityOld.this, FullScreenActivity.class);
startActivity(i);
你能想象我犯的一個錯誤嗎?我是否必須以某種方式停止第一臺相機預覽?
我這樣做,我開始新的一切,像第一個活動一樣對待新的活動,並像第一個活動一樣使用相同的算法啓動相機。我的錯誤是,我沒有在第一個活動中結束相機捕捉會話嗎? – Jonas
是的,您通常需要關閉相機實例,如果它所在的活動不再可見。這有時可以避免,但需要特殊處理 - 如果您的代碼在兩項活動中都相同,則在第一項活動中關閉相機是最安全的選擇。 –