【问题标题】:Android, incomplete input from barcode scanner when virtual keyboard is enabledAndroid,启用虚拟键盘时条码扫描仪的输入不完整
【发布时间】:2018-09-06 15:30:14
【问题描述】:

我正在尝试在我的 android 应用程序中使用 KDC200 Bluetooth barcode scanner,但是当我启用虚拟键盘时遇到了问题(我认为虚拟键盘与“软键”相同?Android 设备是三星注 5)。扫描仪输入被切断似乎存在某种干扰。例如,我可能只收到1234567123456789 而不是完整接收1234567890。当我通过设置禁用虚拟键盘时,我得到了完整的输入。这不仅仅是在我的应用程序中,它发生在我使用扫描仪的所有应用程序中。

我看到很多关于扫描仪连接时虚拟键盘未显示的问题,但到目前为止还没有关于输入不完整的问题。

有没有办法同时启用蓝牙扫描仪和虚拟键盘?

否则,如果必须禁用虚拟键盘才能从蓝牙扫描仪接收完整的输入,那么当关注EditText 输入时,有没有办法以编程方式启用和禁用它?

如果必须禁用虚拟键盘并且我无法以编程方式启用和禁用它,那么我唯一的选择是创建自己的带按钮键盘吗?我认为这似乎是最后的手段。它不需要是全键盘,只需 A-Z、0-9、退格、回车和句点。有没有更好的方法?也许图书馆已经存在?

我目前使用的应用程序与我正在尝试构建的应用程序类似,但他们似乎要么进行了自己的键盘输入,要么正在使用外部库,我不确定是哪个。此应用程序上的键盘在虚拟键盘被禁用时显示,并且在启用时似乎覆盖它。

【问题讨论】:

  • 达斯汀,你找到解决办法了吗?我们有完全相同的问题,应用程序只接收扫描的部分条码 - 而扫描仪在应用程序之外工作正常。还没有测试有没有键盘,但是我们还需要手动输入...

标签: java android keyboard barcode-scanner


【解决方案1】:

因此,如果连接了扫描仪,虚拟键盘可能不会出现的原因是运行扫描仪的最常见模式(以及在 iOS 上使用 IIRC 的唯一方法)是在 HID 模式下——它假装它的硬件键盘并将键代码发送到操作系统。如果连接了硬件,操作系统通常不会显示虚拟键盘。

可以通过覆盖 onEvaluateInputViewShown 将此设置覆盖为键盘。从应用程序中,我能想到的就是使用 inputMethodManager.showSoftInput 强制键盘显示。

我从未见过扫描仪因为键盘启动而无法发送数据。我见过扫描仪发送数据非常缓慢,需要几秒钟才能发送少量字符。我会确保你看到的不仅仅是延迟。

【讨论】:

  • 嗯,很可能是延迟。扫描仪显示刚刚读取的代码,而应用程序中收到的代码通常缺少扫描仪显示屏上显示的最后 1-3 个字符。即使启用了虚拟键盘,我偶尔也会得到完整的代码。也许设备会乱序读取数据?扫描仪总是发送数据,但并不总是完整接收数据。我认为这不是扫描仪本身的问题,而是接收数据的问题。
猜你喜欢
  • 2019-01-08
  • 1970-01-01
  • 2022-01-16
  • 2011-07-12
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多