我尝试但是当我按下捕获按钮并且没有创建图像时预览冻结。有什么建议吗?我可以在一个Camera2项目中使用多少个图像读取器?
对于您正在创建的每个CaptureSession,您只能拥有一个ImageReader。如果要为每种类型的Image使用两个不同的ImageReader,则应使用两个CaptureSession。但是你必须非常小心两个会话之间的摄像机资源处理(例如,你应该在启动其他CaptureSession以捕获YUV_420_888图像之前关闭ImageReader for JPEG)。使用多个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();
}