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

huangapple go评论153阅读模式
英文:

Android Jetpack CameraX method createSurfaceProvider() not found

问题

  1. @Override
  2. public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
  3. super.onViewCreated(view, savedInstanceState);
  4. previewView = view.findViewById(R.id.previewView);
  5. ListenableFuture<ProcessCameraProvider> cameraProviderFuture =
  6. ProcessCameraProvider.getInstance(requireContext());
  7. cameraProviderFuture.addListener(() -> {
  8. try {
  9. ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
  10. bindPreview(cameraProvider);
  11. } catch (InterruptedException | ExecutionException e) {
  12. }
  13. }, ContextCompat.getMainExecutor(requireContext()));
  14. }
  15. private void bindPreview(ProcessCameraProvider cameraProvider) {
  16. Preview preview = new Preview.Builder().build();
  17. imageCapture = new ImageCapture.Builder()
  18. .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
  19. .build();
  20. CameraSelector cameraSelector = new CameraSelector.Builder()
  21. .requireLensFacing(CameraSelector.LENS_FACING_BACK)
  22. .build();
  23. Camera camera = cameraProvider.bindToLifecycle(
  24. ((LifecycleOwner) this),
  25. cameraSelector,
  26. preview,
  27. imageCapture);
  28. preview.setSurfaceProvider(
  29. previewView.createSurfaceProvider(camera.getCameraInfo()));
  30. }
英文:

I ran into a problem when working with CameraX on the tutorial from the android documentation. I can't find a method createSurfaceProvider()

I am using these libraries: camerax_version = &quot;1.0.0-beta10&quot;

CODE:

  1. @Override
  2. public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
  3. super.onViewCreated(view, savedInstanceState);
  4. previewView = view.findViewById(R.id.previewView);
  5. ListenableFuture&lt;ProcessCameraProvider&gt; cameraProviderFuture =
  6. ProcessCameraProvider.getInstance(requireContext());
  7. cameraProviderFuture.addListener(() -&gt; {
  8. try {
  9. ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
  10. bindPreview(cameraProvider);
  11. } catch (InterruptedException | ExecutionException e) {
  12. }
  13. }, ContextCompat.getMainExecutor(requireContext()));
  14. }
  15. private void bindPreview(ProcessCameraProvider cameraProvider) {
  16. Preview preview = new Preview.Builder().build();
  17. imageCapture = new ImageCapture.Builder()
  18. .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
  19. .build();
  20. CameraSelector cameraSelector = new CameraSelector.Builder()
  21. .requireLensFacing(CameraSelector.LENS_FACING_BACK)
  22. .build();
  23. Camera camera = cameraProvider.bindToLifecycle(
  24. ((LifecycleOwner) this),
  25. cameraSelector,
  26. preview,
  27. imageCapture);
  28. preview.setSurfaceProvider(
  29. previewView.createSurfaceProvider(camera.getCameraInfo()));
  30. ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  31. }

答案1

得分: 35

刚刚按照最新的教程进行操作,遇到了相同的问题。
但是,如果你只是简单地调用预览 preview 的 surfaceProvider 属性,一切都会正常工作。

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

英文:

Just followed the latest tutorial and faced with same issue.
But if you simply call the property surfaceProvider of your preview everything will work.

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

答案2

得分: 8

仅替换

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

  1. preview.setSurfaceProvider(previewView.getSurfaceProvider());
英文:

Just replace

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

with

  1. preview.setSurfaceProvider(previewView.getSurfaceProvider());

答案3

得分: 0

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

英文:

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

答案4

得分: -2

将 Gradle 依赖项更改为:
implementation "androidx.camera:camera-camera2:1.0.0-rc01"
应该可以正常工作。

英文:

Change the gradle dependency to this :
implementation "androidx.camera:camera-camera2:1.0.0-rc01"
It should work

huangapple
  • 本文由 发表于 2020年10月6日 23:43:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/64229274.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定