根据发布说明(https://developer.android.com/jetpack/androidx/releases/camera#camera-core-1.0.0-alpha07),我正在使用新的camerax (2019年12月04 ),并看到一个CameraX未初始化的错误。我的测试手机是Nokia5,以前使用的是CameraX依赖的旧版本。我希望能在getInstance()方法中帮助我通过这个错误来指导我。
相似问题java.lang.IllegalStateException: CameraX not initialized yet
cameraProviderFuture =ProcessCameraProvider.getInstance(此);
在这里崩溃
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 (light,reflection)访问隐藏方法Ldalvik/system/CloseGuard;ComponentInfo{com.example.camx/com.example.camx.CameraActivity}:->warnIfOpen()V (轻型灰列表,反射) D/CameraActivity: onCreate: D/AndroidRuntime:关闭VM E/AndroidRuntime:致命异常:主进程: com.example.camx,PID: 26631 java.lang.RuntimeException:无法启动活动onCreate java.lang.IllegalStateException: CameraX未正确初始化。要么需要调用CameraX.initialize(),要么CameraXConfig.Provider接口必须由应用程序类实现。在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2928) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)在android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:198)在android.app.ActivityThread.main(ActivityThread.java:6729) at java.lang.reflect.Method.invoke(本地方法)在com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit。由: java.lang.IllegalStateException: CameraX引起的main(CameraX)未正确初始化。要么需要调用CameraX.initialize(),要么CameraXConfig.Provider接口必须由应用程序类实现。在androidx.camera.core.CameraX.getOrCreateInstance(CameraX.java:797) at androidx.camera.lifecycle.ProcessCameraProvider.getInstance(ProcessCameraProvider.java:98) at com.example.camx.CameraActivity.onCreate(CameraActivity.java:92) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) at 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) at 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终止。
级依赖关系:
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"发布于 2019-12-17 14:09:34
参考资料:https://developer.android.com/jetpack/androidx/releases/camera#camera-camera2-1.0.0-alpha07
正如CameraX参考中所提到的,开发人员应该在应用程序类中实现CameraXConfig.Provider
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)
}
}https://stackoverflow.com/questions/59283174
复制相似问题