java.lang.IllegalStateException: CameraX еще не инициализирован - PullRequest
3 голосов
/ 20 мая 2019

Я слежу за этим Google Codelab о 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, но ни в коде, ни в документации CameraX что-то подобное не упоминается.

У кого-то была эта проблема раньше

Ответы [ 2 ]

5 голосов
/ 22 мая 2019

Я почти уверен, что нашел проблему. Вы добавили Camera2 в ваши зависимости? Я оставил это, думая, что это не было необходимо, но это в руководстве. Я добавил его, и эта ошибка прекратилась.

def camerax_version = "1.0.0-alpha01"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
0 голосов
/ 22 мая 2019

Ваш код выглядит точно так же, как и мой, за исключением того, что у моего есть вызов CameraX.unbindAll() вверху, прежде чем я инициализирую Preview и вызову CameraX.bindtoLifeCycle(). Я помню что-то вроде ошибки, которую вы опубликовали, прежде чем я добавил CameraX.unbindAll(), так что попробуйте?

...