在 Android 相机 2 API 中。我可以使用图像 reader (YUV_420_888) 进行处理,而另一个 (JPEG) 用于捕获静止图像吗?

In Android Camera2 API. Can I use a image reader (YUV_420_888) for processing and another(JPEG) for capture still image?

我试过,但是当我按下拍摄按钮时预览冻结,没有创建图像。有什么建议吗? 我可以在一个 Camera2 项目中使用多少个图像阅读器?

对于您正在创建的每个 CaptureSession,您只能有一个 ImageReader。如果您想为每种类型的图像使用两个不同的 ImageReader,那么您应该使用两个 CaptureSession。但是您必须非常小心地处理两个会话之间的相机资源(例如,您应该在启动其他 CaptureSession 以捕获 YUV_420_888 图像之前关闭 JPEG 的 ImageReader)。使用多个 CaptureSession 对设备来说也很沉重,通常不推荐使用。反而 您可以对两种类型的图像使用相同的字节。

public void onImageAvailable(ImageReader imageReader) {
            byte[] bytes = null;
            Image image = imageReader.acquireLatestImage();
            try {

                ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                bytes = new byte[buffer.capacity()];
                buffer.get(bytes);
                //use the bytes to manipulate
            } catch (Exception e) {
                e.printStackTrace();
            }
            image.close();
            imageReader.close();

        }