Приложение завершилось с ошибкой «Не удалось найти информацию о поддерживаемой поверхности - CameraId: null» CameraX - PullRequest
0 голосов
/ 08 ноября 2019

Я использую новый 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: Я проверил. Это устройство (модели устройств, в которых происходит сбой) имеет обе камеры (спереди, сзади).

...