android Google条形码扫描ML套件:某些设备上的活动崩溃

oyxsuwqo  于 2023-05-15  发布在  Android
关注(0)|答案(1)|浏览(299)

更新:

**自2023年3月21日更新以来,它现在可能有效,也许不是。**如果您想使用它,可以在docs中阅读更多信息。
**再次注意,我们还没有测试它现在是否有效。我们必须迅速决定如何让条形码扫描再次工作。因此,我们重构了我们的自定义条形码扫描电容器插件,使用com.google.mlkit:barcode-scanning:17.1.0代替。更多关于here的信息这需要更多的努力,因为你必须自己实现UI,花哨的扫描动画消失了,但它只是工作,似乎更快。

我们正在使用com.google.android.gms:play-services-code-scanner:16.0.0-beta3与自定义电容器插件组合来扫描EAN-13和EAN-8等条形码,但在某些设备上,每当用户尝试打开Google的条形码扫描仪UI时,该活动似乎会崩溃。
下面是logcat的错误日志

win=Window{f8c052d u0 com.[redacted]/com.google.mlkit.vision.codescanner.internal.GmsBarcodeScanningDelegateActivity} destroySurfaces: appStopped=true cleanupOnResume=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=4 caller=com.android.server.wm.ActivityRecord.destroySurfaces:6529 com.android.server.wm.ActivityRecord.destroySurfaces:6510 com.android.server.wm.ActivityRecord.notifyAppStopped:6574 com.android.server.wm.ActivityRecord.activityStopped:7162 com.android.server.wm.ActivityClientController.activityStopped:258 android.app.IActivityClientController$Stub.onTransact:613 com.android.server.wm.ActivityClientController.onTransact:136

处理扫描UI的代码:

package com.[redacted];

import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
import com.google.mlkit.vision.barcode.common.Barcode;
import com.google.mlkit.vision.codescanner.GmsBarcodeScannerOptions;
import com.google.mlkit.vision.codescanner.GmsBarcodeScanning;

@CapacitorPlugin()
public class BarcodeScanner extends Plugin  {
    private void scan() {
        GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder()
                .setBarcodeFormats(Barcode.FORMAT_EAN_13, Barcode.FORMAT_EAN_8, Barcode.FORMAT_CODE_128, Barcode.FORMAT_ITF)
                .allowManualInput()
                .build();

        GmsBarcodeScanning
                .getClient(getContext(), options)
                .startScan()
                .addOnSuccessListener(this::onSuccess);
    }

    private void onSuccess(Barcode result) {
        JSObject jsObject = new JSObject();
        jsObject.put("content", result.getDisplayValue());
        jsObject.put("format", result.getFormat());

        this.getSavedCall().success(jsObject);
    }

    @PluginMethod
    public void startScan(PluginCall call) {
        this.saveCall(call);
        this.scan();
    }
}

版本

minSdkVersion = 23
    compileSdkVersion = 33
    targetSdkVersion = 33
    androidxActivityVersion = '1.6.1'
    androidxAppCompatVersion = '1.6.1'
    androidxCoordinatorLayoutVersion = '1.2.0'
    androidxCoreVersion = '1.9.0'
    androidxFragmentVersion = '1.5.5'
    coreSplashScreenVersion = '1.0.0-rc01'
    androidxWebkitVersion = '1.6.0'
    junitVersion = '4.13.2'
    androidxJunitVersion = '1.1.5'
    androidxEspressoCoreVersion = '3.5.1'
    cordovaAndroidVersion = '10.1.1'

我们已经将Android Webview更新到最新版本,以及应用程序和电容器插件的build.gradle文件中的任何实现包。我们不知道是什么原因导致了错误,因为错误描述非常模糊。我们在任何地方都找不到解决办法。该错误发生在Galaxy Tab S7上,以前在上工作过。它突然停止工作,可能是因为我们不知道的内部更新。我们也用三星Galaxy A51进行了测试,但它只在该设备上工作。

polhcujo

polhcujo1#

对我有效的解决方案是从“Google Play服务”中删除更新
我是如何走到这一步的:昨天我用github上的一个项目测试了这个库,一切正常
今天,我试图直接从一个新的项目(感谢昨天我使用的存储库,我只是遇到了“com.google.android.gms:play-services-code-scanner”),我得到了你发布的错误,我找不到解决方案(三星S20超),然后一个类似的错误想到了“android webview”,使许多应用程序无法使用,解决方案是删除所有更新,一切正常,所以我尝试了同样的“Google Play服务“,事实证明,现在如果我打开相机.
我希望我的解决方案能帮助你,我认为这对最终用户来说不是最干净的。

相关问题