OpenBot
OpenBot copied to clipboard
video recording support in logging
Please fix the style.
Hi! I've fixed the issue related to the front-facing camera not opening in the fragment, which was causing video capturing to fail. Additionally, after shifting to a different fragment, the camera displays a blank screen.
Navigate to the CameraFragment.java
file and replace the bindCameraUseCases
function with the following code:
protected void bindCameraUseCases() {
converter = new YuvToRgbConverter(requireContext());
bitmapBuffer = null;
preview = new Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build();
final boolean rotated = ImageUtils.getScreenOrientation(requireActivity()) % 180 == 90;
final PreviewView.ScaleType scaleType =
rotated ? PreviewView.ScaleType.FIT_CENTER : PreviewView.ScaleType.FIT_START;
previewView.setScaleType(scaleType);
preview.setSurfaceProvider(previewView.getSurfaceProvider());
CameraSelector cameraSelector =
new CameraSelector.Builder().requireLensFacing(lensFacing).build();
ImageAnalysis imageAnalysis;
if (analyserResolution == null)
imageAnalysis =
new ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build();
else
imageAnalysis = new ImageAnalysis.Builder().setTargetResolution(analyserResolution).build();
imageAnalysis.setAnalyzer(
cameraExecutor,
image -> {
if (bitmapBuffer == null)
bitmapBuffer =
Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);
rotationDegrees = image.getImageInfo().getRotationDegrees();
converter.yuvToRgb(image.getImage(), bitmapBuffer);
image.close();
processFrame(bitmapBuffer, image);
});
try {
if (cameraProvider != null) {
cameraProvider.unbindAll();
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageAnalysis);
}
} catch (Exception e) {
Timber.e("Use case binding failed: %s", e.toString());
}
try {
if (cameraProvider != null) {
cameraProvider.unbindAll();
cameraProvider.bindToLifecycle(this, cameraSelector, preview, videoCapture);
}
} catch (Exception e) {
Timber.e("VideoCapture binding failed: %s", e.toString());
}
}