CameraCharacteristics不会返回所有可用的分辨率

时间:2019-11-08 15:25:39

标签: android android-camera2

在使用新的camera2 API拍照时,我正在尝试使用最大分辨率。首先,我尝试使用以下代码获得可用的分辨率:

Charac:

CameraCharacteristics characteristics = mManager.getCameraCharacteristics(mCameraId);
        StreamConfigurationMap streamMap =
                characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
        if (streamMap == null) {
            throw new RuntimeException("StreamConfigurationMap is null. Should not happen.");
        }
 streamMap.getOutputSizes(ImageFormat.*); // I replaced the star with all possible values 

问题是这将返回以下分辨率列表:[1280x960, 1088x1088, 640x480, 352x288, 176x144, 3264x1836, 3264x2448, 1280x720, 960x720, 720x480, 320x240, 1920x1080, 2400x1080, 1440x1080, 2576x1932, 3264x1468](最大为3264x2448)

但是,当使用普通相机应用程序(三星A70)时,图片分辨率出奇的大,即:4032x3024

在调查过程中,我尝试从商店下载许多相机应用程序,以查看在这种情况下的最大分辨率,并且所有相机应用程序都返回与我相同的分辨率,即:3264x2448

我的问题是 Stock Camera App 如何获得比我们其他人更大的分辨率?

1 个答案:

答案 0 :(得分:0)

您是否也检查了StreamConfigurationMap#getHighResolutionOutputSizes()的输出?

某些设备在那里列出了最高分辨率,因为它们无法维持BURST_CAPTURE功能保证的> = 20 fps输出速率,如果要使用FULL级设备,则正常大小列表上的所有大小都需要此功能。只要列出了至少8 MP的正常大小,设备就符合BURST_CAPTURE规则,并且可以在getHighResolutionOutputSizes下列出更高的分辨率。