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