0

I am using the new camerax (Dec 04, 2019) as per release notes (https://developer.android.com/jetpack/androidx/releases/camera#camera-core-1.0.0-alpha07) and see an error that CameraX is not initialized. My test phone is a Nokia 5 and was previously working with older version of the CameraX dependency. I'd appreciate any help to guide me thru this error at getInstance() method.

Similar question java.lang.IllegalStateException: CameraX not initialized yet

cameraProviderFuture = ProcessCameraProvider.getInstance(this);

crashes here

    cameraProviderFuture.addListener(() -> {
        try {
            ProcessCameraProvider cameraProvider = (ProcessCameraProvider) cameraProviderFuture.get();
            bindPreview(cameraProvider);
        } catch (ExecutionException | InterruptedException e) {
            e.printStackTrace();
        }
    }, ContextCompat.getMainExecutor(this));

Exception is as below:

Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (light greylist, reflection) Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (light greylist, reflection) D/CameraActivity: onCreate: D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.camx, PID: 26631 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.camx/com.example.camx.CameraActivity}: java.lang.IllegalStateException: CameraX is not initialized properly. Either CameraX.initialize() needs to have been called or the CameraXConfig.Provider interface must be implemented by your Application class. at 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) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:198) at android.app.ActivityThread.main(ActivityThread.java:6729) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.IllegalStateException: CameraX is not initialized properly. Either CameraX.initialize() needs to have been called or the CameraXConfig.Provider interface must be implemented by your Application class. at 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) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) 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)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:198)  at android.app.ActivityThread.main(ActivityThread.java:6729)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)  I/Process: Sending signal. PID: 26631 SIG: 9 Process 26631 terminated.

Gradle Dependency:

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"
Vrushi Patel
  • 2,361
  • 1
  • 17
  • 30
  • Also, make sure you're using the same/compatible versions of those camera libraries. I had 1 that was v1.0.0-alpha31 and another that was v1.1.0-beta1, which caused a crash at runtime. Making them all v1.1.0-beta1 fixed it. – wildcat12 Feb 03 '22 at 21:36

1 Answers1

10

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

As mentioned in CameraX reference, dev should implement the CameraXConfig.Provider in Application class

CameraX initialization has changed. Applications should implement CameraXConfig.Provider, and use the default Camera2Config provided by androidx.camera.camera2

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

public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
    override fun getCameraXConfig(): CameraXConfig {
            return Camera2Config.defaultConfig(this)
    }
}
Sivakumar S
  • 681
  • 5
  • 19