How to access full resolution photos from Vivo X60 Pro+ using Camera2 API

I’m working on an Android app and need to capture maximum resolution photos from the Vivo X60 Pro+ device. The phone specs say it can shoot 48MP from ultra-wide, 50MP and 100MP from the main camera, but when I use the Camera2 API Probe tool, it only shows 12MP max (4080x3060) as the highest available resolution.

I did discover something interesting, though. When I call CameraManager.getCameraCharacteristics(“0”).physicalCameraIds, I can see 4 different physical camera IDs (2, 3, 4, 5) for the back camera system.

Is there a method to tap into these higher resolution modes through Camera2 API? Maybe I need to access the physical cameras directly instead of the logical camera? Or would I need to use some other low-level camera API to get the full resolution capabilities?

Any help would be great, thanks!

It’s common to encounter resolution limits with devices using multiple camera systems. The 12MP you’re seeing typically comes from the logic camera setup that amalgamates the inputs from different sensors for enhanced imaging. Considering the physical camera IDs you’ve identified, attempt to obtain characteristics for each ID using CameraManager.getCameraCharacteristics(). This should reveal distinct resolution settings; the higher-resolution capabilities, including the 100MP sensor, are likely associated with one of these cameras. Be aware that many manufacturers, including Vivo, may restrict access to these high-resolution modes via the standard Camera2 API due to their own software layers. Checking the SCALER_STREAM_CONFIGURATION_MAP for each physical camera could provide insight into the available output formats and sizes. If issues persist, exploring manufacturer-specific solutions may be necessary, as full resolution might only be accessible through their proprietary camera app.

yeah, I faced that with my xiaomi too. check the CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES for BURST_CAPTURE, high res modes r often hidden behind burst or raw syuff. also, look for scene modes or templates that might unlock it. manufacturers can be sneaky with this info.

I’ve worked with Vivo devices before, and this is a known issue with their multi-camera setup. That 12MP limit happens because Vivo defaults to binned sensor output for stability and faster processing. Sometimes you can access the physical cameras directly, but Vivo’s custom camera HAL makes this hit-or-miss. Try querying each physical camera ID separately and check ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE in the characteristics - might show you the real sensor dimensions. Don’t get your hopes up though. Vivo locks their high-res modes behind their own camera app, especially that 100MP mode which uses heavy post-processing that’s not available through the standard Camera2 API. If you haven’t tried CameraX yet, give it a shot. It handles manufacturer quirks better than raw Camera2 sometimes.