2017-08-30 65 views
0

我想以编程方式检查确定用户提供的输入是来自软键盘还是连接到android平板电脑的条码扫描器。如何检查输入是由条形码扫描仪还是通过软键盘输入?

在我想应用此的活动中没有编辑文本,因此请避免提供可通过EditText应用的解决方案。

+0

检查此链接https://stackoverflow.com/questions/29769204覆盖/检测输入从软件或硬件键盘 –

+0

好的谢谢,但我想知道是否在一个活动中没有编辑文本,但仍然用户从硬件键输入。 –

+1

如果没有'EditText',那么通常没有输入法编辑器(软键盘)显示,因此任何输入都来自设备按钮,蓝牙键盘,USB键盘等。 – CommonsWare

回答

0

使用dispatchKeyEvent,您可以侦听条形码扫描器中的任何KeyEvent。

@Override 
public boolean dispatchKeyEvent(KeyEvent e) { 
// do something on input 
    return false; // prevent default behaviour 
} 
0

使用下面的代码来读取条码扫描仪输入/值,这样的onkeydown您需要在活动/对话

String barcode=""; 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    log("Key Down keyCode " + keyCode); 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     return super.onKeyDown(keyCode, event); 
    } else if (keyCode == KeyEvent.KEYCODE_ENTER) {//if scanner doesn't return enter key code then make sure that any view must not have focus in window 
     //write your code to process the scanned barcode input 
     barcode = ""; 
    } else { 
     Character input = (char) event.getUnicodeChar(); 
     log("Scanner Input " + input); 
     if (Character.isDigit(input) || Character.isLetter(input)) { 
      barcode += input;//concat the characters 
     } 
    } 
    return true; 
}