I have a full screen setup below. I set target aspect ratio to 16x9 on both Preview.Builder and ImageAnalysis.builder. I can see the resolution for the ImageAnalysis image on the onImageAnalyzed(). I don't know how to see what the image size is for what the user sees.
Set up is below:
private fun bindCameraUseCases() {
val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
val screenSize = Size(metrics.widthPixels, metrics.heightPixels)
val preview = Preview.Builder().apply {
setTargetRotation(viewFinder.display.rotation) .setTargetAspectRatio(AspectRatio.RATIO_16_9)
}.build()
preview.setSurfaceProvider(viewFinder.previewSurfaceProvider)
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .setTargetAspectRatio(AspectRatio.RATIO_16_9)
.build()
imageAnalysis.setAnalyzer(executor,
ImageAnalysis.Analyzer {
onImageAnalyzed(it, it.imageInfo.rotationDegrees)
//Required to call close() as last step
it.close()
})
val cameraSelector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build()
cameraProviderFuture.addListener(Runnable {
val cameraProvider = cameraProviderFuture.get()
cameraProvider.bindToLifecycle(
requireActivity(),
cameraSelector,
preview,
imageAnalysis
)
}, executor)
}