capacitor-community / barcode-scanner

A fast and efficient (QR) barcode scanner for Capacitor
MIT License
437 stars 167 forks source link

ML KIT: NullPointerException in com.getcapacitor.community.barcodescanner.CapacitorCommunityBarcodeScanner.analyze(CapacitorCommunityBarcodeScanner.java:302) #278

Open lrrrrrrrr opened 1 year ago

lrrrrrrrr commented 1 year ago

When using the Capacitor Community Barcode Scanner plugin, a NullPointerException is being thrown at line 302 of the CapacitorCommunityBarcodeScanner.java file.

FATAL EXCEPTION: main Process: com.example.test, PID: 30653 java.lang.NullPointerException: Attempt to invoke interface method 'com.google.android.gms.tasks.Task com.google.mlkit.vision.barcode.BarcodeScanner.process(com.google.mlkit.vision.common.InputImage)' on a null object reference at com.getcapacitor.community.barcodescanner.CapacitorCommunityBarcodeScanner.analyze(CapacitorCommunityBarcodeScanner.java:302) at androidx.camera.core.ImageAnalysis.lambda$setAnalyzer$2(ImageAnalysis.java:476) at androidx.camera.core.ImageAnalysis$$ExternalSyntheticLambda2.analyze(Unknown Source:2) at androidx.camera.core.ImageAnalysisAbstractAnalyzer.lambda$analyzeImage$0$androidx-camera-core-ImageAnalysisAbstractAnalyzer(ImageAnalysisAbstractAnalyzer.java:285) at androidx.camera.core.ImageAnalysisAbstractAnalyzer$$ExternalSyntheticLambda1.run(Unknown Source:14) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8757) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) ---------------------------- PROCESS ENDED (30653) for package com.example.test ----------------------------

Occurs after stop() method is called.

Fix:

`public void analyze(@NonNull ImageProxy image) { @SuppressLint("UnsafeOptInUsageError") Image mediaImage = image.getImage();

    if (mediaImage == null || mScanner == null) {
        return;
    }`

PR: https://github.com/capacitor-community/barcode-scanner/pull/279