【问题标题】:How to unbind single use-case in cameraX如何在 cameraX 中取消绑定单个用例
【发布时间】:2020-11-17 10:41:12
【问题描述】:

我有多个镜头、预览、对焦等用例

我知道怎么解绑cameraProvider?.unbindAll()

但是,如何只解除一个用例的绑定。如何只传递焦点解除绑定?

它是如何知道的,如果我通过cameraProvider?.unbind(imageCapture) 来解除绑定,因为没有顺序并且它们没有分配给任何变量。所以,我很困惑!

每次我解除绑定所有屏幕都会重新加载。所以,我需要以某种方式避免这种情况。

在尝试这样做时,我也收到此错误

No supported surface combination is found for camera device - Id : 0. May be attempting to bind too many use cases.

【问题讨论】:

标签: java android react-native kotlin android-camerax


【解决方案1】:

但是,如何只解除一个用例的绑定

您可以使用ProcessCameraProvider.unbind() 仅解除一个用例(甚至两个用例)的绑定,该ProcessCameraProvider.unbind() 接受可变数量的UseCase 类型的参数(可变参数)。

// Binding Preview and ImageCapture use cases
cameraProvider.bind(lifecycleOwner, cameraSelector, preview, imageCapture)

...

// Unbinding the ImageCapture use case
cameraProvider.unbind(imageCapture)

它是如何知道的,如果我通过了解绑哪一个 cameraProvider?.unbind(imageCapture) 因为没有顺序和 它们没有分配给任何变量。所以,我很困惑!

CameraX 不需要明确知道您正在取消绑定图像捕获用例。它取消绑定具有特定配置的用例,例如表面、分辨率、图像格式等。这意味着在必要时更新相机捕获会话。

每次我解除绑定所有屏幕都会重新加载。所以,我需要 以某种方式避免这种情况。

故障可能是由于取消绑定重复捕获请求(如预览)引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多