我正在扫描条形码,将String放入编辑文本中并使用它进行搜索。没问题。
我的问题是,当条形码被扫描时,动作执行约3次而不是jsut一次。我猜它是因为它需要几毫秒来进行搜索并开始动作,但此时扫描程序会发送更多的扫描(相同的条形码)。
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Logger.i(TAG, "KeyCode: " + keyCode);
switch(keyCode) {
case KeyEvent.ACTION_DOWN:
someAction();
break;
case KeyEvent.KEYCODE_ENTER:
someAction()
break;
}
return false;
}
扫描工作正常,我只是在扫描实际成功后再获得2个关键事件,因此整个过程将再执行2次......
编辑:我正在使用2个不同的扫描仪,第一个发送keyCode 0另一个keyCode 66,这就是我处理这两个扫描器的原因。 keyCode 0出现问题,我还没有用其他扫描仪测试过。
答案 0 :(得分:0)
创建状态(布尔值)以了解何时需要处理扫描的条形码。
示例:boolean mustHandleScan = true。当扫描确实识别条形码时,将该布尔值更改为false。并且只有在布尔值为真时才进行搜索。您可以使用计时器(可能是倒计时器)在x秒后将布尔值更改为true。这是一个易于实现的解决方案,我也使用它。