Android,启用虚拟键盘时条形码扫描器输入不完整

时间:2018-03-28 04:34:44

标签: java android keyboard barcode-scanner

我试图在我的Android应用程序中使用KDC200 Bluetooth barcode scanner,但是当我启用虚拟键盘时遇到问题(我认为虚拟键盘和"软键和#34;?Android设备是三星Note 5)。扫描仪输入被切断时似乎存在某种干扰。例如,我可能只会收到12345678901234567,而不是完全接收123456789。当我通过设置禁用虚拟键盘时,我得到完整的输入。这不仅仅是在我的应用程序中,它发生在我使用扫描仪的所有应用程序中。

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

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

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

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

我目前正在使用类似于我正在尝试构建的应用程序,看起来他们已经制作了自己的键盘输入或正在使用外部库,我不知道哪个。此应用程序上的键盘在虚拟键盘被禁用时显示,并且在启用时似乎会覆盖它。

1 个答案:

答案 0 :(得分:0)

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

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

由于键盘正在运行,我还没有看到扫描仪无法发送数据。我看到扫描仪发送数据非常缓慢,需要几秒钟才能发送少量字符。我确定你没有看到延迟。