【发布时间】:2019-12-17 22:09:34
【问题描述】:
我正在按照发行说明 (https://developer.android.com/jetpack/androidx/releases/camera#camera-core-1.0.0-alpha07) 使用新的 camerax(2019 年 12 月 4 日),并看到 CameraX 未初始化的错误。我的测试手机是诺基亚 5,之前使用的是旧版本的 CameraX 依赖项。 如果能在 getInstance() 方法中帮助我解决这个错误,我将不胜感激。
类似问题java.lang.IllegalStateException: CameraX not initialized yet
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
在这里崩溃
cameraProviderFuture.addListener(() -> {
try {
ProcessCameraProvider cameraProvider = (ProcessCameraProvider) cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
}
}, ContextCompat.getMainExecutor(this));
例外情况如下:
访问隐藏方法 Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V(浅灰名单,反射) 访问隐藏方法 Ldalvik/system/CloseGuard;->warnIfOpen()V(浅灰名单,反射) D/CameraActivity: onCreate: D/AndroidRuntime:关闭虚拟机 E/AndroidRuntime: 致命异常: main 进程:com.example.camx,PID:26631 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.camx/com.example.camx.CameraActivity}:java.lang.IllegalStateException:CameraX 未正确初始化。要么需要调用 CameraX.initialize(),要么必须由您的 Application 类实现 CameraXConfig.Provider 接口。 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2928) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:198) 在 android.app.ActivityThread.main(ActivityThread.java:6729) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:java.lang.IllegalStateException:CameraX 未正确初始化。要么需要调用 CameraX.initialize(),要么必须由您的 Application 类实现 CameraXConfig.Provider 接口。 在 androidx.camera.core.CameraX.getOrCreateInstance(CameraX.java:797) 在 androidx.camera.lifecycle.ProcessCameraProvider.getInstance(ProcessCameraProvider.java:98) 在 com.example.camx.CameraActivity.onCreate(CameraActivity.java:92) 在 android.app.Activity.performCreate(Activity.java:7136) 在 android.app.Activity.performCreate(Activity.java:7127) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:198) 在 android.app.ActivityThread.main(ActivityThread.java:6729) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) I/Process:发送信号。 PID:26631 SIG:9 进程 26631 终止。
Gradle 依赖:
def camerax_version = "1.0.0-alpha07"
implementation "androidx.camera:camera-core:$camerax_version"
implementation "androidx.camera:camera-camera2:$camerax_version"
implementation "androidx.camera:camera-view:1.0.0-alpha04"
implementation "androidx.camera:camera-lifecycle:1.0.0-alpha01"
【问题讨论】:
-
另外,请确保您使用的是这些相机库的相同/兼容版本。我有一个是 v1.0.0-alpha31,另一个是 v1.1.0-beta1,这会导致运行时崩溃。使它们都 v1.1.0-beta1 修复它。
标签: android