CameraX 未正确初始化。需要调用 CameraX.initialize() 或 CameraXConfig.Provider

Sub*_*dri 0 android

我正在按照发行说明(https://developer.android.com/jetpack/androidx/releases/camera#camera-core-1.0.0-alpha07)使用新的camerax(2019年12月4日),并看到一个错误: CameraX 未初始化。我的测试手机是诺基亚 5,之前使用旧版本的 CameraX 依赖项。\n如果有任何帮助指导我解决 getInstance() 方法中的此错误,我将不胜感激。

\n\n

类似的问题java.lang.IllegalStateException: CameraX 尚未初始化

\n\n

CameraProviderFuture = ProcessCameraProvider.getInstance(this);

\n\n

在这里崩溃

\n\n
    cameraProviderFuture.addListener(() -> {\n        try {\n            ProcessCameraProvider cameraProvider = (ProcessCameraProvider) cameraProviderFuture.get();\n            bindPreview(cameraProvider);\n        } catch (ExecutionException | InterruptedException e) {\n            e.printStackTrace();\n        }\n    }, ContextCompat.getMainExecutor(this));\n
Run Code Online (Sandbox Code Playgroud)\n\n

例外情况如下:

\n\n
\n

访问隐藏方法 Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (浅灰名单,反射)\n 访问隐藏方法 Ldalvik/system/CloseGuard;->warnIfOpen()V (浅灰名单,反射) \n D/CameraActivity: onCreate:\n D/AndroidRuntime: 关闭虚拟机\n E/AndroidRuntime: 致命异常: main\n 进程: com.example.camx,PID: 26631\n java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.camx/com.example.camx.CameraActivity}:java.lang.IllegalStateException:CameraX 未正确初始化。需要调用 CameraX.initialize() 或您的 Application 类必须实现 CameraXConfig.Provider 接口。\n 位于 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2928)\n 位于 android.app.ActivityThread .handleLaunchActivity(ActivityThread.java:3063)\n 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)\n 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)\n 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)\n 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)\n 在 android.os.Handler.dispatchMessage(Handler.java: 107)\n 在 android.os.Looper.loop(Looper.java:198)\n 在 android.app.ActivityThread.main(ActivityThread.java:6729)\n 在 java.lang.reflect.Method.invoke(Native方法)\n 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\n 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)\n 引起: java.lang.IllegalStateException: CameraX 未正确初始化。需要调用 CameraX.initialize(),或者必须由您的 Application 类实现 CameraXConfig.Provider 接口。\n 位于 androidx.camera.core.CameraX.getOrCreateInstance(CameraX.java:797)\n 位于 androidx.camera .lifecycle.ProcessCameraProvider.getInstance(ProcessCameraProvider.java:98)\n 位于 com.example.camx.CameraActivity.onCreate(CameraActivity.java:92)\n 位于 android.app.Activity.performCreate(Activity.java:7136)\ n 在 android.app.Activity.performCreate(Activity.java:7127)\n 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)\n 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) \n 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063)\xc2\xa0\n 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)\xc2\xa0\n 在 android.app .servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)\xc2\xa0\n 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)\xc2\xa0\n 在 android.app.ActivityThread$H 。handleMessage(ActivityThread.java:1823)\xc2\xa0\n 在 android.os.Handler.dispatchMessage(Handler.java:107)\xc2\xa0\n 在 android.os.Looper.loop(Looper.java:198) \xc2\xa0\n 在 android.app.ActivityThread.main(ActivityThread.java:6729)\xc2\xa0\n 在 java.lang.reflect.Method.invoke(本机方法)\xc2\xa0\n 在 com. android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)\xc2\xa0\n 位于 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)\xc2\xa0\n 我/Process:发送信号。PID: 26631 SIG: 9\n 进程 26631 已终止。

\n
\n\n

梯度依赖:

\n\n
def camerax_version = "1.0.0-alpha07"\nimplementation "androidx.camera:camera-core:$camerax_version"\nimplementation "androidx.camera:camera-camera2:$camerax_version"\nimplementation "androidx.camera:camera-view:1.0.0-alpha04"\nimplementation "androidx.camera:camera-lifecycle:1.0.0-alpha01"\n
Run Code Online (Sandbox Code Playgroud)\n

Siv*_*r S 10

参考:https ://developer.android.com/jetpack/androidx/releases/camera#camera-camera2-1.0.0-alpha07

正如 CameraX 参考中提到的,开发人员应该实现CameraXConfig.ProviderApplication 类

CameraX 初始化已更改。应用程序应该实现CameraXConfig.Provider,并使用androidx.camera.camera2提供的默认Camera2Config

import androidx.camera.camera2.Camera2Config
import androidx.camera.core.CameraXConfig

public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
    override fun getCameraXConfig(): CameraXConfig {
            return Camera2Config.defaultConfig(this)
    }
}
Run Code Online (Sandbox Code Playgroud)