camerax错误:摘要methoderror“ androidx.camera.core.impl.config androidx.camera.core.core

发布于 2025-02-08 08:55:15 字数 3164 浏览 2 评论 0原文

因此,我遵循 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文