6

刚刚使用 CameraX 在 Android 中创建了一个相机预览,配置如下:

    PreviewConfig previewConfig = new PreviewConfig.Builder()
            .setLensFacing(CameraX.LensFacing.FRONT)
            .setTargetResolution(new Size(720, 720))
            .build();
    Preview preview = new Preview(previewConfig);

现在,问题是这样的目标分辨率可能不可用,在这种情况下,预览将选择接近请求的分辨率。我在这里要问的是一种知道预览有效选择了哪种分辨率的方法。

提前致谢!

4

2 回答 2

5

实际上这是可能的。在对你的 cameraProvider 调用 bindToLifecycle 之后,我发现了一点源代码挖掘:

camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, previewUseCase, imageCaptureUseCase, analyzerUseCase)

您将能够检索为每个适用用例选择的分辨率:

val captureSize = imageCaptureUseCase.attachedSurfaceResolution ?: Size(0, 0)
val previewSize = previewUseCase.attachedSurfaceResolution ?: Size(0, 0)

希望这可以帮助

于 2020-05-17T21:21:24.193 回答
1

好的,我找到了自己的解决方案。

    preview.setOnPreviewOutputUpdateListener(new Preview.OnPreviewOutputUpdateListener() {
        @Override
        public void onUpdated(Preview.PreviewOutput output) {
             ...
             Size resolution = output.getTextureSize();
             ...
        }
    });
于 2019-09-12T13:56:38.867 回答