java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 0. May be attempting to bind too many use cases.
why the bindToLifecycle()
only choose imageCapture
or videoCapture
?
CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture,videoCapture)
A workaround is to bind Preview with VideoCapture, and Preview with ImageCapture separately. Binding Preview, ImageCapture and VideoCapture appears to be an issue on a few devices currently. When switching between the two be careful to unbindAll first.
This may be because the VideoCapture UseCase is not officially supported yet, as of 1.0.0-Beta10.
fun startVideoCapture() {
...
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelected,
previewUseCase,
videoCaptureUseCase
)
}
fun startImageCapture() {
...
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelected,
previewUseCase,
imageCaptureUseCase
)
}
You are binding more UseCases than your device's camera supports. Not all devices can support two ImageAnalyzers.
Try reducing your analyzers,
CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture or videoCapture)
I have tested with many devices, so far, among the devices that I tested, only Google Pixel 1 works with three analyzers.
To suggest a hack, remove imageCapture analyzer, try to get images from preview for imageCapture and use videoCapture.
Hope it helps.
There is no videoCapture
usecase right now.
As mentioned in the official documentation, the available usecases are preview, analysis & image capture (and their combinations).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With