web-dev-qa-db-ja.com

java.lang.IllegalStateException:CameraXはまだ初期化されていません

私はこれをフォローしています CameraXに関するGoogle Codelab

そして、カメラプレビューを追加する部分に到達すると、次のようになります。

val previewConfig = PreviewConfig.Builder().apply {
            setTargetAspectRatio(Rational(1, 1))
            setTargetResolution(Size(640, 640))
            setLensFacing(CameraX.LensFacing.BACK)
        }.build()

        val preview = Preview(previewConfig)

        preview.setOnPreviewOutputUpdateListener { previewOutput ->
            val parent = previewView.parent as ViewGroup
            parent.removeView(previewView)
            parent.addView(previewView, 0)

            previewView.surfaceTexture =     previewOutput.surfaceTexture
        updateTransform()
        }


        CameraX.bindToLifecycle(this, preview)

そして、次のエラーが発生します。

Java.lang.ExceptionInInitializerError
        at androidx.camera.core.Preview.<clinit>(Preview.Java:55)
        at com.grow.vision.ImagePreviewActivity.startCamera(ImagePreviewActivity.kt:120)
        at com.grow.vision.ImagePreviewActivity.access$startCamera(ImagePreviewActivity.kt:28)
        at com.grow.vision.ImagePreviewActivity$onCreate$1.run(ImagePreviewActivity.kt:140)
        at Android.os.Handler.handleCallback(Handler.Java:873)
        at Android.os.Handler.dispatchMessage(Handler.Java:99)
        at Android.os.Looper.loop(Looper.Java:214)
        at Android.app.ActivityThread.main(ActivityThread.Java:7032)
        at Java.lang.reflect.Method.invoke(Native Method)
        at com.Android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.Java:494)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:965)
     Caused by: Java.lang.IllegalStateException: CameraX not initialized yet.
        at androidx.camera.core.CameraX.getCameraDeviceSurfaceManager(CameraX.Java:485)
        at androidx.camera.core.CameraX.getSurfaceManager(CameraX.Java:282)
        at androidx.camera.core.Preview$Defaults.<clinit>(Preview.Java:416)
        at androidx.camera.core.Preview.<clinit>(Preview.Java:55)

どういうわけかCameraXを初期化する必要があるようですが、codelabもCameraXドキュメントもそのようなものを参照していません。

誰かが以前にこの問題を抱えたことはありますか?

7

あなたのコードは私のものとまったく同じに見えますが、私がPreviewを初期化してCameraX.unbindAll()を呼び出す前に私のものの上部にCameraX.bindtoLifeCycle()呼び出しがあります。 CameraX.unbindAll()を追加する前に投稿したエラーのようなものを見たのを覚えているので、試してみませんか?

0
Chee-Yi