I want to capture an Image and a Video using the CameraX library. By following the documentation i have no problem implementing the preview and the capture use cases. The code i use is the following.
private fun startCamera() {
cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener({ setUpCamera() }, cameraExecutor)
}
private fun setUpCamera() {
cameraProvider = cameraProviderFuture.get()
bindPreview()
}
private fun bindPreview() {
preview = Preview.Builder().build().also {
it.setSurfaceProvider(binding.cameraPreview.surfaceProvider)
}
imageCapture = ImageCapture.Builder()
.setFlashMode(flashMode)
.setCaptureMode(CAPTURE_MODE_MAXIMIZE_QUALITY)
.build()
videoCapture = ...
bindCamera()
}
private fun bindCamera() {
cameraSelector = selectExternalOrBestCamera()
cameraProvider.unbindAll()
camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture, videoCapture)
Now, let's say that i have locked my device orientation from the menu panel. So if i rotate de device, the applications do not rotate at all. In that case, if a capture an Image, the captured image which i save and i want to send to a Server is rotated by 90 degrees,, which is reasonable since i rotated the device and capture a photo. As i can see, in other applications (like Whatsapp) the same senario does not happen since they show the preview image correctly rotated after the capture. How can i solve that issue?
So finally i found the solution.
That gives me the preview image that i capture in the desired orientation