Hi,
I'm unable to capture high resolution images on a Galaxy A52. The images from CameraX with CAPTURE_MODE_MAXIMIZE_QUALITY are 3264x2448 (8MP), yet the device's camera has 4624x3468 (16MP), which other apps are able to utilize.
StreamConfigurationMap.getOutputSizes(ImageFormat.JPEG) returns [4032x1908, 3840x2160, 3280x2464, 3264x2448, 3264x1836, ...]
and StreamConfigurationMap.getHighResolutionOutputSizes(ImageFormat.JPEG) returns [4624x3468, 4032x3024, 4000x3000]
I've played around with the ImageCapture.Builder, trying the following things
- .setTargetResolution(new Size(3468, 4624))
- .setTargetResolution(new Size(4624, 3468))
- .setTargetRotation(Surface.ROTATION_0) through (Surface.ROTATION_270)
- no arguments at all, just using the default settings from the builder
- I've even tried .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY) in my despair
I've also tried removing the preview from my use cases (so I'll only have my imageCapture), which didn't work either.
My (stripped down) code is as follows:
Using imageCapture.takePicture(fileOptions, cameraExecutor, ...)
(cameraExecutor is a singleThreadExecutor), this still returns images sized 3264x2448 (low res).
Am I missing something obvious? Or is this a bug?