D/MetadataImageReader: Failed to acquire next image.
java.lang.IllegalStateException: maxImages (2) has already been acquired, call #close before acquiring more.
at android.media.ImageReader.acquireNextImage(ImageReader.java:513)
at androidx.camera.core.AndroidImageReaderProxy.acquireNextImage(AndroidImageReaderProxy.java:79)
at androidx.camera.core.MetadataImageReader.imageIncoming(MetadataImageReader.java:318)
at androidx.camera.core.MetadataImageReader$2.onImageAvailable(MetadataImageReader.java:67)
at androidx.camera.core.AndroidImageReaderProxy$1$1.run(AndroidImageReaderProxy.java:145)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) private void takePicture() {
imageCapture.setFlashMode(flashMode);
imageCapture.takePicture(cameraExecutor, new ImageCapture.OnImageCapturedCallback() {
@SuppressLint("UnsafeExperimentalUsageError")
@Override
public void onCaptureSuccess(@NonNull ImageProxy image) {
Bitmap imageBitmap = rotateImage(imageToBitmap(Objects.requireNonNull(image.getImage())), image.getImageInfo().getRotationDegrees());
try {
FileUtil.saveBitmap(MainActivity.this, imageBitmap);
} catch (IOException e) {
e.printStackTrace();
}
image.close();
super.onCaptureSuccess(image);
}
@Override
public void onError(@NonNull ImageCaptureException exception) {
super.onError(exception);
}
});
}