11

java.lang.IllegalArgumentException:找不到相机设备支持的表面组合 - Id:0。可能试图绑定太多用例。

为什么bindToLifecycle()只能选择 imageCaptureor videoCapture

 CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture,videoCapture)
4

6 回答 6

4

您绑定的用例比您设备的相机支持的多。并非所有设备都可以支持两个 ImageAnalyzer。

尝试减少您的分析仪,

CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture or videoCapture)

我已经用很多设备进行了测试,到目前为止,在我测试的设备中,只有 Google Pixel 1 可以与三个分析仪一起使用。

要建议 hack,请删除 imageCapture 分析器,尝试从 imageCapture 的预览中获取图像并使用 videoCapture。

希望能帮助到你。

于 2019-07-25T05:52:54.923 回答
3

我在从后台弹出带有相机视图的片段时遇到了同样的错误,我通过在视图退出时取消绑定所有分析器来修复它。

CameraX.unbindAll()

正如这里建议的那样。

于 2019-10-03T07:44:17.943 回答
3

现在没有videoCapture用例。

官方文档中所述,可用的用例是预览、分析和图像捕获(及其组合)。

于 2019-07-20T16:14:17.580 回答
2

当我尝试使用不同的设置创建 imageCapture、videoCapture、mPreview 或分析器时,我遇到了同样的错误。

尝试在构建器中设置相同的参数,例如,如果您愿意:

setLensFacing(CameraX.LensFacing.BACK)

在所有设置生成器中设置相同。这可以解决您的错误,但我仍然不知道该库是否支持此功能 jet。

于 2019-08-04T11:22:50.983 回答
1

一种解决方法是将PreviewVideoCapture绑定,并将PreviewImageCapture分别绑定。绑定PreviewImageCaptureVideoCapture目前在一些设备上似乎是一个问题。在两者之间切换时要小心先unbindAll

这可能是因为在1.0.0-Beta10 中还没有正式支持VideoCapture UseCase。

fun startVideoCapture() {
        ...
                cameraProvider.unbindAll()
                cameraProvider.bindToLifecycle(
                                lifecycleOwner,
                                cameraSelected,
                                previewUseCase,
                                videoCaptureUseCase
                            )
                }
fun startImageCapture() {
        ...
                cameraProvider.unbindAll()
                cameraProvider.bindToLifecycle(
                                lifecycleOwner,
                                cameraSelected,
                                previewUseCase,
                                imageCaptureUseCase
                            )
                }
于 2020-10-23T16:45:43.270 回答
0

正如 Ye Min Htut 指出的那样,考虑更少的用例。对我来说,这就足够了:

CameraX.bindToLifecycle(viewLifecycleOwner, cameraSelector)

我希望它可以帮助那里的人=)

于 2021-07-31T15:09:27.010 回答