camerax错误:摘要methoderror“ androidx.camera.core.impl.config androidx.camera.core.core
因此,我遵循 camerax 文档。它在新创建的项目上工作。新的项目。但是,当您尝试将其集成到旧的Android Studio项目中时,相同的代码将神秘地压碎。
预览,摄影仪(Back)根据文档设置。但是,当它到达 bindtolifecycle(this,cameraselector,preview)函数时,它抛出了一个AbstractMethodError,
它看起来与build.gradle.gradle或settings.gradle有关。我无法弄清楚。也许你们中的一个可以。无论如何,这是startCamera代码
`private fun startCamera(){ val cameraproviderfuture = ProcessCamerapRovider.getInstance(this)
cameraProviderFuture.addListener({
// Used to bind the lifecycle of cameras to the lifecycle owner
val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
// Preview
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewBinding.viewFinder.surfaceProvider)
}
// Select back camera as a default
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
try {
// Unbind use cases before rebinding
cameraProvider.unbindAll()
**// Bind use cases to camera where the error occurs(AbstractMethodError)**
cameraProvider
.bindToLifecycle(this, cameraSelector, preview)
} catch(exc: Exception) {
Toast.makeText(applicationContext, exc.message, Toast.LENGTH_LONG).show()
Log.e(TAG, "Use case binding failed", exc)
}
}, ContextCompat.getMainExecutor(this))
}`
,这是logcat/错误消息本身:
e/androidruntime:致命例外:主要 过程:com.example.ynot,pid:3872 java.lang.abstractmethoderror:抽象方法“ androidx.camera.core.impl.config androidx.camera.core.impl.usecaseconfigfactory.getConfig(androidx.camera.core.impl.usecaseconfigfactory $ capturetype, int)” at androidx.camera.core.preview.getDefaultConfig(Preview.java:472) at androidx.camera.core.internal.camerausecaseadapter.getConfigs(camerausecaseadapter.java:483) at androidx.camera.core.internal.camerausecaseadapter.addusecases(camerausecaseadapter.java:208) at androidx.camera.lifecycle.lifecyclecamera.bind(lifecyclecamera.java:206) at androidx.camera.lifecycle.lifecyclecamerararepository.bindtolifecyclecamera(lifecyclecamerararepository.java:278) at androidx.camera.lifecycle.processcameraprovider.bindtolifecycle(ProcessCamerapRovider.java:532) at androidx.camera.lifecycle.processcameraprovider.bindtolifecycle(ProcessCamerapRovider.java:360) 在com.example.ynote.tests.camtest.startcamera $ lambda-2(camtest.kt:113) 在com.example.ynote.tests.camtest。$ r8 $ lambda $ 5YPGB5BKZPOW5LXJDHSSS7BEQDVA(未知 资料来源:0) 在com.example.ynote.tests.camtest $$ externalsyntheticlambda0.run(未知 资料来源:4) 在Android.os.handler.handlecallback(Handler.java:883) 在Android.os.handler.dispatchMessage(Handler.java:100) at android.os.looper.loop(looper.java:264) at android.app.activitythread.main(activityThread.java:7581) 在java.lang.reflect.method.invoke(本机方法)上 在com.android.internal.os.os.runtimeinit $ methodAndargScaller.run(runtimeinit.java:492) 在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:980)
So I followed the CameraX documentation. It works on newly created projects. Fresh projects. However, when you try to integrate it onto old Android Studio projects, the same code will crush mysteriously.
The preview, cameraSelector(back) are set as per the document. But when it gets to the bindToLifeCycle(this, cameraSelector, preview) function, it throw an AbstractMethodError
It looks like it has something to do with build.gradle or settings.gradle. I can't figure it out. Maybe one of you can. Anyway, here is the startCamera code
`private fun startCamera() {
val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener({
// Used to bind the lifecycle of cameras to the lifecycle owner
val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
// Preview
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewBinding.viewFinder.surfaceProvider)
}
// Select back camera as a default
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
try {
// Unbind use cases before rebinding
cameraProvider.unbindAll()
**// Bind use cases to camera where the error occurs(AbstractMethodError)**
cameraProvider
.bindToLifecycle(this, cameraSelector, preview)
} catch(exc: Exception) {
Toast.makeText(applicationContext, exc.message, Toast.LENGTH_LONG).show()
Log.e(TAG, "Use case binding failed", exc)
}
}, ContextCompat.getMainExecutor(this))
}`
And here is the logcat/error message itself:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ynot, PID: 3872
java.lang.AbstractMethodError: abstract method "androidx.camera.core.impl.Config
androidx.camera.core.impl.UseCaseConfigFactory.getConfig(androidx.camera.core.impl.UseCaseConfigFactory$CaptureType,
int)"
at androidx.camera.core.Preview.getDefaultConfig(Preview.java:472)
at androidx.camera.core.internal.CameraUseCaseAdapter.getConfigs(CameraUseCaseAdapter.java:483)
at androidx.camera.core.internal.CameraUseCaseAdapter.addUseCases(CameraUseCaseAdapter.java:208)
at androidx.camera.lifecycle.LifecycleCamera.bind(LifecycleCamera.java:206)
at androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:278)
at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:532)
at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:360)
at com.example.ynote.Tests.CamTest.startCamera$lambda-2(CamTest.kt:113)
at com.example.ynote.Tests.CamTest.$r8$lambda$5ypGB5bKZPoW5lxjdhsS7beQdvA(Unknown
Source:0)
at com.example.ynote.Tests.CamTest$$ExternalSyntheticLambda0.run(Unknown
Source:4)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:264)
at android.app.ActivityThread.main(ActivityThread.java:7581)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论