Я использую новый CameraX API (альфа 5).
На таких устройствах, как: LGE, Samsung, Motorola, OPPO происходит сбой с сообщением:
Fail to find supported surface info - CameraId:null
.
Это происходит редко, но недопустимо.
Ошибка в методе:
private fun initCamera(cameraMode: CameraMode) {
val lensFacing = if (cameraMode == CameraMode.DEFAULT) CameraX.LensFacing.BACK else CameraX.LensFacing.FRONT
val metrics = DisplayMetrics().also { textureView?.display?.getRealMetrics(it) }
val resolution = Size(metrics.widthPixels, metrics.heightPixels)
val previewConfig = PreviewConfig.Builder()
.setTargetResolution(resolution)
.setLensFacing(lensFacing)
.build()
preview?.let { CameraX.unbind(preview) }
preview = Preview(previewConfig)
preview?.setOnPreviewOutputUpdateListener { previewOutput ->
val parent = textureView?.parent as ViewGroup
parent.removeView(textureView)
parent.addView(textureView, 0)
textureView?.surfaceTexture = previewOutput.surfaceTexture
}
CameraX.bindToLifecycle(this, preview)
}
в строке:
preview = Preview(previewConfig)
Это выглядит такчто он не может создать предварительный просмотр для этих устройств, потому что не может получить камеру.
Кто-нибудь знает возможное решение этой проблемы?
PS: Я проверил. Это устройство (модели устройств, в которых происходит сбой) имеет обе камеры (спереди, сзади).