【发布时间】:2019-08-11 04:10:25
【问题描述】:
我正在使用内置条形码扫描仪和键盘的 Android 设备。 (设备是:品牌U8000S Android条码扫描仪)我正在尝试制作一个扫描条码并在扫描后在Toast中打印出条码的应用程序。我的问题是,可以在键盘上输入随机键和数字,它还会打印该字符序列。我需要帮助才能做到这一点,只能扫描条形码并退出应用程序。我的代码如下所示:
String barcode = "";
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getAction()==KeyEvent.ACTION_DOWN
&& e.getKeyCode() != KeyEvent.KEYCODE_ENTER){
lastDown = System.currentTimeMillis();
char pressedKey = (char) e.getUnicodeChar();
barcode += pressedKey;
}
if (e.getAction()==KeyEvent.ACTION_UP && e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
// izvještaj.add(barcode);
Toast.makeText(getApplicationContext(),
"barcode--->>>" + barcode , Toast.LENGTH_LONG)
.show();
barcode ="";
}
return false;
}
【问题讨论】:
-
与设备制造商交谈,看看是否有办法禁用设备的键盘部分,或者是否有其他 API 可用于与设备交互。如果条形码扫描仪部分只是发出击键,那么您不太可能找到一种可靠的方法来区分这些击键和键盘上的实际击键。
-
@CommonsWare 你实际上可以通过检查输入速度
-
@SteelToe:我不认为这是一种“可靠的方式”,尽管对于某些用例来说它可能已经足够了。
-
@SteelToe 您建议如何检查速度输入并根据速度获得可靠的输入值?你有例子吗?
-
确定条码扫描器输入字符的速度,如果一个字符到另一个字符的输入速度比那个长,那么这意味着它是从键盘手写并擦除它
标签: java android barcode barcode-scanner