【问题标题】:java.lang.IllegalStateException: CameraX not initialized yetjava.lang.IllegalStateException:CameraX 尚未初始化
【发布时间】:2020-09-18 02:34:10
【问题描述】:

我正在关注这个Google Codelab about CameraX

当我谈到添加相机预览的部分时,我会这样做:

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 文档都没有引用类似的东西。

以前有人遇到过这个问题吗?

【问题讨论】:

    标签: android android-camerax


    【解决方案1】:

    我很确定我找到了问题所在。 您是否将 Camera2 添加到您的依赖项中?我认为它没有必要,但它在指南中。我添加了它,该错误停止了。

    def camerax_version = "1.0.0-alpha01"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    

    【讨论】:

    • 是的,这就是问题所在!谢谢
    【解决方案2】:

    你的代码看起来和我的一模一样,除了我在初始化Preview 和调用CameraX.bindtoLifeCycle() 之前在顶部有一个CameraX.unbindAll() 调用。我记得在我添加 CameraX.unbindAll() 之前看到了类似您发布的错误,所以试试看?

    【讨论】:

    • 不,没有用。我尝试重写代码实验室,看看是否有帮助
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2021-06-21
    • 2020-06-17
    • 2015-07-24
    相关资源
    最近更新 更多