Java.lang.illegalargumentException: aucune combinaison de surface prise en charge est trouvée pour le périphérique de caméra - ID: 0. Peut essayer de lier trop de cas d'utilisation.
pourquoi la fonction bindToLifecycle()
seulement choisir imageCapture
ou videoCapture
?
CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture,videoCapture)
J'ai eu la même erreur lors de la vue de fragment avec vue sur la caméra à partir de Backstack, je l'ai réparé en déduisant toutes les analyseurs lors de la sortie des sorties.
CameraX.unbindAll()
Une solution de contournement est de lier aperç avec Videocapture et Aperç avec Imagecapture séparément. Reliure Aperç, Imagecapture et Videocapture semble être un problème sur quelques périphériques actuellement. Lors de la commutation entre les deux soyez prudent à nfrounl en premier.
Cela peut être parce que le videocapture upeCase n'est pas encore officiellement pris en charge, à partir de 1.0.0-beta10.
fun startVideoCapture() {
...
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelected,
previewUseCase,
videoCaptureUseCase
)
}
fun startImageCapture() {
...
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelected,
previewUseCase,
imageCaptureUseCase
)
}
Vous liez plus d'usecases que les supports de caméra de votre appareil. Tous les appareils ne peuvent pas supporter deux imagionnels.
Essayez de réduire vos analyseurs,
CameraX.bindToLifecycle(lifecycleOwner, mPreview, imageCapture or videoCapture)
J'ai testé avec de nombreux appareils, jusqu'à présent, parmi les appareils que j'ai testés, seuls Google Pixel 1 fonctionne avec trois analyseurs.
Pour suggérer un hack, supprimez l'analyseur ImageCapture, essayez d'obtenir des images de l'aperçu pour Imagecapture et d'utiliser la vidéocapture.
J'espère que ça aide.