私はこれをフォローしています 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ドキュメントもそのようなものを参照していません。
誰かが以前にこの問題を抱えたことはありますか?
あなたのコードは私のものとまったく同じに見えますが、私がPreview
を初期化してCameraX.unbindAll()
を呼び出す前に私のものの上部にCameraX.bindtoLifeCycle()
呼び出しがあります。 CameraX.unbindAll()
を追加する前に投稿したエラーのようなものを見たのを覚えているので、試してみませんか?