开始第二次活动后,相机无法正常工作

时间:2015-06-01 21:10:15

标签: java android camera

我开始使用新的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);

你能想象我犯的错误吗?我是否必须以某种方式停止第一次相机预览?

1 个答案:

答案 0 :(得分:1)

通常,当TextureView不再显示时,它会删除其SurfaceTexture输出。因此,当您的第一个Activity进入后台时,TextureView不再是相机数据的有效目标。

您打算如何将预览数据发送到第二个Activity的TextureView?切换发生时,您需要切换预览缓冲区的流程以定位第二个TextureView。当您切换到第二个活动时,可以通过创建以第二个TextureView为目标的新相机捕获会话来完成此操作。