我开始使用新的camera2 API。
我在第一个活动中的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
我开始新的Activity非常简单,而且相机的功能在两个Activity中都差不多。
Intent i = new Intent(MainActivityOld.this, FullScreenActivity.class);
startActivity(i);
你能想象我犯的错误吗?我是否必须以某种方式停止第一次相机预览?
答案 0 :(得分:1)
通常,当TextureView不再显示时,它会删除其SurfaceTexture输出。因此,当您的第一个Activity进入后台时,TextureView不再是相机数据的有效目标。
您打算如何将预览数据发送到第二个Activity的TextureView?切换发生时,您需要切换预览缓冲区的流程以定位第二个TextureView。当您切换到第二个活动时,可以通过创建以第二个TextureView为目标的新相机捕获会话来完成此操作。