Android camera2: java.ленг.IllegalStateException: maxImages (1) уже приобретен, вызов #close перед приобретением большего
Привет, возникли проблемы с устранением этой проблемы.
у меня уже есть imageReader.близкие называют внутри изображение доступно обратного вызова, но по-прежнему возникают ошибки:
java.ленг.IllegalStateException: maxImages (1) уже приобретен, вызов #close перед приобретением большего.
код у меня есть здесь:
private ImageReader.OnImageAvailableListener imageAvailableListener = new ImageReader.OnImageAvailableListener()
{
@Override
public void onImageAvailable(ImageReader reader) {
Image img = mReader.acquireLatestImage();
mReader.close();
}
};
ps. Я также использую средство чтения аргументов, но, похоже, не решаю проблему
2 ответов
private ImageReader.OnImageAvailableListener imageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
String status = Environment.getExternalStorageState();
if (!status.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(getApplicationContext(), "your SD card is not available", Toast.LENGTH_SHORT).show();
return;
}
Image image = reader.acquireNextImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] data = new byte[buffer.remaining()];
buffer.get(data);
image.close();//after you use the image's content ,you can close it
String filePath = Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/";
String picturePath = System.currentTimeMillis() + ".jpg";
imgFile = new File(filePath, picturePath);
Uri uri = Uri.fromFile(imgFile);
try {//Store to folder
FileOutputStream fileOutputStream = new FileOutputStream(imgFile);
fileOutputStream.write(data);
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
startEditPictureActivity(uri, imgFile);
}
};