Android Jetpack CameraX方法createSurfaceProvider()未找到。

19

在按照 Android 文档上的教程使用 CameraX 时,我遇到了一个问题。我找不到一个名为createSurfaceProvider()的方法。

我正在使用这些库:camerax_version = "1.0.0-beta10"

CODE

@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        previewView = view.findViewById(R.id.previewView);

        ListenableFuture<ProcessCameraProvider> cameraProviderFuture =
                ProcessCameraProvider.getInstance(requireContext());

        cameraProviderFuture.addListener(() -> {
            try {
                ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
                bindPreview(cameraProvider);

            } catch (InterruptedException | ExecutionException e) {

            }
        }, ContextCompat.getMainExecutor(requireContext()));
    }

    private void bindPreview(ProcessCameraProvider cameraProvider) {
        Preview preview = new Preview.Builder().build();

        imageCapture = new ImageCapture.Builder()
                .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
                .build();

        CameraSelector cameraSelector = new CameraSelector.Builder()
                .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                .build();

        Camera camera = cameraProvider.bindToLifecycle(
                ((LifecycleOwner) this),
                cameraSelector,
                preview,
                imageCapture);

        preview.setSurfaceProvider(
                previewView.createSurfaceProvider(camera.getCameraInfo()));
            
                            ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    }

15
它已经被更改为 getSurfaceProvider,你可以在 Kotlin 中像这样调用它:.surfaceProvider。例如,somePreviewView.surfaceProvider - starriet
4个回答

35

刚刚跟随最新的教程操作时,遇到了相同的问题。但如果你只是调用预览 preview 的 surfaceProvider 属性,一切都会正常工作。

val preview = Preview.Builder() .build() .also { it.setSurfaceProvider(viewFinder.surfaceProvider) }


8

只需替换

preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.getCameraInfo()));

使用

preview.setSurfaceProvider(previewView.getSurfaceProvider());

0

preview.setSurfaceProvider(mBinding.cameraPreviewView.getSurfaceProvider());


-2

将gradle依赖更改为: implementation "androidx.camera:camera-camera2:1.0.0-rc01" 它应该可以工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接