Я пытаюсь позволить Flutter использовать CameraX, чтобы делать снимки с помощью буфера в памяти, а не сохранять на диск.
В CameraX ImageCapture.Java я нашел этот фрагмент
// Wrap the ImageCapture.OnImageSavedListener with an OnImageCapturedListener so it can
// be put into the capture request queue
OnImageCapturedListener imageCaptureCallbackWrapper =
new OnImageCapturedListener() {
@Override
public void onCaptureSuccess(ImageProxy image, int rotationDegrees) {
Handler completionHandler = (mHandler != null) ? mHandler : mMainHandler;
CameraXExecutors.ioExecutor()
.execute(
new ImageSaver(
image,
saveLocation,
rotationDegrees,
metadata.isReversedHorizontal,
metadata.isReversedVertical,
metadata.location,
imageSavedListenerWrapper,
completionHandler));
}
@Override
public void onError(
UseCaseError error, String message, @Nullable Throwable cause) {
imageSavedListener.onError(error, message, cause);
}
};
Пример касается предварительного просмотра камеры
Как использовать Intent в CameraX Core с буфером изображения в памяти?
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
=> change to
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, InMemoryBuffer);
startActivityForResult(takePictureIntent, REQUEST_TAKE_IMAGE);
Спасибо