Motorola/Zebra移动数据终端MC67条码扫描与Xamarin EMDK

Motorola/Zebra mobile computer MC67 barcode scanning with Xamarin EMDK

我已经在 MC67NA 上为 运行 创建了一个 Android 应用程序,该应用程序以前仅随 Jelly Bean 一起提供。因为 EMDK 仅支持 KitKat 及更高版本,所以我必须通过 DataWedge 进行所有条码扫描。但是,现在 KitKat 已经发布并且我现在有一个设备 运行ning KitKat,我正在修改应用程序以使用 EMDK 而不是 DataWedge。我的问题是,虽然我看到了所有提供的示例并且它们确实有助于入门,但它们也适用于单个 layout/Activity 应用程序。我现有的应用程序有一个 main Activity 用作片段的容器和视图寻呼机。当它们是视图寻呼机中的活动页面时,我需要对几个片段进行扫描。 DataWedge 让这一切变得简单,因为我不必担心任何这些,它只会扫描到具有焦点的字段。

综上所述,为此设置实施 EMDK 条码扫描器的最佳方法是什么?我知道很多人反对单例 class,但我正在考虑走这条路。创建一个单例以在应用程序启动时实现扫描仪。然后我可以从每个片段中获取实例到扫描仪 class 并使用它。有人可以给我一些建议吗?我也不知道如何在单例中注册事件处理程序(假设这是最好的方法)然后让这些事件在片段上触发。

出于各种原因,我确实想摆脱 DataWedge 并集成 EMDK。

最后,在相关说明中,我已经开始编写此方法的代码并在这一行遇到异常:

EMDKResults results = EMDKManager.GetEMDKManager(Application.Context, this);  

例外状态:

Java.Lang.ClassNotFoundException: Didn't find class "com.symbol.emdk.EMDKManager" on path: DexPathList[[zip file "/data/app/PocketPacTracAndroid.PocketPacTracAndroid-2.apk"],nativeLibraryDirectories=[/data/app-lib/PocketPacTracAndroid.PocketPacTracAndroid-2, /vendor/lib, /system/lib]]

即使我包含了参考文献也会发生这种情况:

提前致谢!

麦克

所有,为了可能 运行 进入此问题的任何其他人的利益,我发现仅包含参考 dll 是不够的。您还需要将引用和权限添加到您的清单中。因此,如果您遇到此错误,请确保您的清单中包含这两行。

  1. 就在 "uses-sdk" 标签下方

<uses-permission android:name="com.symbol.emdk.permission.EMDK" />

  1. "application" 标签内

<uses-library android:name="com.symbol.emdk" />