You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google条码扫描ML Kit:部分设备Activity崩溃问题求助

更新说明:

自2023年3月21日的更新后,该问题可能已修复,也可能未解决。 若您想使用该组件,可查看官方文档了解更多信息。

再次说明:我们尚未测试当前版本是否正常工作。为快速恢复条码扫描功能,我们已重构自定义Capacitor插件,改用com.google.mlkit:barcode-scanning:17.1.0。相关详情可查看对应文档。这种方式需要自行实现UI,且丢失了炫酷的扫描动画,但能稳定运行,速度似乎更快。


我们使用com.google.android.gms:play-services-code-scanner:16.0.0-beta3结合自定义Capacitor插件,用于扫描EAN-13、EAN-8等条码,但在部分设备上,用户尝试打开Google条码扫描UI时,Activity会崩溃。

以下是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更新至最新版本,同时更新了应用及Capacitor插件build.gradle文件中的所有依赖包。由于错误描述非常模糊,我们无法确定问题原因,也未找到解决方案。该问题出现在Galaxy Tab S7上,此前该设备可正常运行,突然无法使用,可能是由于未知的内部更新导致。我们在Samsung Galaxy A51上测试,功能正常。

内容的提问来源于stack exchange,提问作者fruityloops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:15:05