Shivani Patel
unread,Sep 6, 2021, 2:49:13 AM9/6/21Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Android CameraX Discussion Group, wenhu...@google.com, Scott Nien, Android CameraX Discussion Group, Shivani Patel
Hello ,
We are using below device. this issue occurs when we capture more images 15-20 images
Redmi Note 8
OS Version : 9
I can share some snippet of my code
- We are calling start camera method from onCreate in Activity as we have used activity for camera
private void startCamera() {
final ListenableFuture<ProcessCameraProvider> cameraProviderFuture =
ProcessCameraProvider.getInstance(this);
cameraProviderFuture.addListener(new Runnable() {
@Override
public void run() {
try {
cameraProvider = cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (Exception exception) {
BugfenderUtils.e(TAG, exception);
}
}
}, ContextCompat.getMainExecutor(this));
}
private Executor executor = Executors.newSingleThreadExecutor();
public void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
float ratio = mPreviewWidth / mPreviewHeight;
int rationForCalculation = mCameraViewModel.aspectRatio(mPreviewWidth, mPreviewHeight);
float height;
if (rationForCalculation == 0) {
height = 4 * mPreviewWidth / 3;
} else {
height = 16 * mPreviewWidth / 9;
}
mBinding.texture.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
(int) height));
// Unbind use cases before rebinding
cameraProvider.unbindAll();
Preview preview = new Preview.Builder()
.setTargetAspectRatio((int) ratio)
.build();
CameraSelector cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA;
ImageAnalysis imageAnalysis = new ImageAnalysis.Builder()
.build();
ImageCapture.Builder builder = new ImageCapture.Builder();
final ImageCapture mImageCapture = builder
.setTargetRotation(this.getWindowManager().getDefaultDisplay().getRotation())
.setTargetAspectRatio((int) ratio)
.build();
preview.setSurfaceProvider(mBinding.texture.getSurfaceProvider());
androidx.camera.core.Camera camera = cameraProvider.bindToLifecycle(this
, cameraSelector,
preview, imageAnalysis, mImageCapture);
mBinding.capture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "mStreamState: " + (mStreamState != null ? mStreamState : "null"));
if (mStreamState != null && mStreamState != PreviewView.StreamState.STREAMING) {
return;
}
try {
double availableSpace =
getAvailableSpace(getExternalFilesDir(null).getParent(),
Constant.StorageType.MB);
if (availableSpace < Constant.MIN_STORAGE_REQUIRED_MB) {
showToast("No enough space");
return;
}
} catch (Exception e) {
e.printStackTrace();
}
setEnableCaptureButton(false);
if (mImageCaptureCount < mMaxImageCount) {
try {
mFile = ImageSaverForCameraX.createImageFile(CameraXActivity.this);
ImageCapture.OutputFileOptions outputFileOptions =
new ImageCapture.OutputFileOptions.Builder(mFile).build();
mImageCapture.takePicture(outputFileOptions, executor,
new ImageCapture.OnImageSavedCallback() {
@Override
public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) {
CameraXActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
handleCapturedImage();
}
});
}
@Override
public void onError(@NonNull ImageCaptureException error) {
error.printStackTrace();
}
});
} catch (Exception ex) {
ex.printStackTrace();
setEnableCaptureButton(true);
}
} else {
setEnableCaptureButton(true);
}
}
});
}