java.lang.IllegalStateException: CameraX 尚未初始化
java.lang.IllegalStateException: CameraX not initialized yet
我在关注这个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.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 文档都没有引用类似的内容。
以前有人遇到过这个问题吗?
你的代码看起来和我的完全一样,除了我的代码在初始化 Preview
和调用 CameraX.bindtoLifeCycle()
之前在顶部有一个 CameraX.unbindAll()
调用。我记得在我添加 CameraX.unbindAll()
之前看到过类似您发布的错误,所以试试看?
我很确定我找到了问题所在。
您是否将 Camera2 添加到依赖项中?我认为它没有必要而将其遗漏,但它在指南中。我添加了它,错误停止了。
def camerax_version = "1.0.0-alpha01"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
我在关注这个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.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 文档都没有引用类似的内容。
以前有人遇到过这个问题吗?
你的代码看起来和我的完全一样,除了我的代码在初始化 Preview
和调用 CameraX.bindtoLifeCycle()
之前在顶部有一个 CameraX.unbindAll()
调用。我记得在我添加 CameraX.unbindAll()
之前看到过类似您发布的错误,所以试试看?
我很确定我找到了问题所在。 您是否将 Camera2 添加到依赖项中?我认为它没有必要而将其遗漏,但它在指南中。我添加了它,错误停止了。
def camerax_version = "1.0.0-alpha01"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"