Android 未找到 Jetpack CameraX 方法 createSurfaceProvider()
Android Jetpack CameraX method createSurfaceProvider() not found
我 运行 在使用 android 文档中的教程中的 CameraX 时遇到问题。我找不到方法 createSurfaceProvider()
我正在使用这些库:camerax_version = "1.0.0-beta10"
代码:
@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()));
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
}
刚刚关注了最新的 tutorial 并遇到了同样的问题。
但是,如果您简单地调用预览的 属性 surfaceProvider,一切都会起作用。
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
将 gradle 依赖项更改为此:
实现“androidx.camera:camera-camera2:1.0.0-rc01”
它应该有效
只需更换
preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.getCameraInfo()));
和
preview.setSurfaceProvider(previewView.getSurfaceProvider());
我 运行 在使用 android 文档中的教程中的 CameraX 时遇到问题。我找不到方法 createSurfaceProvider()
我正在使用这些库:camerax_version = "1.0.0-beta10"
代码:
@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()));
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
}
刚刚关注了最新的 tutorial 并遇到了同样的问题。 但是,如果您简单地调用预览的 属性 surfaceProvider,一切都会起作用。
val preview = Preview.Builder() .build() .also { it.setSurfaceProvider(viewFinder.surfaceProvider) }
将 gradle 依赖项更改为此: 实现“androidx.camera:camera-camera2:1.0.0-rc01” 它应该有效
只需更换
preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.getCameraInfo()));
和
preview.setSurfaceProvider(previewView.getSurfaceProvider());