如何识别文本输入是来自硬件条码扫描器还是软盘上的软键盘?

时间:2017-12-15 23:18:22

标签: android xamarin barcode android-softkeyboard

我们正在开发一款可在Android设备上运行的应用程序,内置条形码扫描仪。我们正在尝试确定文本输入是来自软键盘还是条形码扫描仪,因为我们想要使输入文本框的行为不同。

例如,如果我们确定输入来自条形码扫描仪,我们要删除现有文本以覆盖它。如果它来自软键盘,我们希望保留文本,因为用户仍在键入。

现在我们得到字符之间的时间长度来决定它是来自键盘还是条形码扫描仪,但是我试图弄清楚是否有办法从android识别输入源。

也许很多这将取决于硬件细节,但希望我能从这里获得一些好的线索,谢谢!

1 个答案:

答案 0 :(得分:0)

免责声明:我为Zebra Technologies工作,生产带有集成条码扫描器的Android设备。

您的方法(测量角色之间的延迟)应该有效,但可能非常依赖于您所定位的设备,并且您可以预期不同的时间会移动到其他设备。

通常这些Android设备都包含一个可用于读取条形码的SDK。在大多数情况下,这些SDK仅适用于Java,您应该构建自己的绑定以在Xamarin中使用它们(作为注释,Zebra Technologies支持JavaXamarin)。

更好的方法,如果您不需要完全控制条形码扫描器(从初始方法看来),就是使用“Wedge”应用程序,这些应用程序可以将条形码数据作为通常的键码事件注入在这些设备上提供。

注意1:其中一些“Wedge”应用程序允许为条形码数据插入预先修复和后期修复,您可以配置。然后,您可以使用这些数据识别条形码数据的开始和结束。例如,在Zebra的Android设备上,我们DataWedge允许这类Basic Data Formatting

注意2:更好的方法(如果您的设备的“Wedge”应用程序支持它)是使用Intents将数据发送到应用程序。同样,Zebra的DataWedge允许为前景活动和deliver the data as an Intent分配不同的配置文件。

正如您所看到的,这些解决方案对于单个供应商而言是紧迫的,但从这个角度来看,处理时间可能并不是更好,而且更容易出错。另一种支持多种HW品牌的方法是为您的特定设备构建自定义“Wedge”应用程序。最后Zebra's Developer Event in Prague - AppForum我们提供了一些如何做到这一点的例子。您可以在我的一位同事的博文中找到一些信息:Writing Enterprise Android applications that capture barcode data and run on multiple devices