【发布时间】:2016-07-22 16:17:01
【问题描述】:
我有一个物理条码扫描仪,我想在应用程序中获取它的输入,即条码,而无需关注EditText。
我尝试在我的Activity 中添加KeyListener。但是,没有调用其实现的方法(onKeyUp、onKeyDown 等)。
然后我添加了dispatchKeyEvent,它有效,但从未像条形码长度那样被调用多次。相反,在读取条形码之前,我认为一些随机的button 会从条形码扫描仪获得焦点。
String barcode = "";
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
char pressedKey = (char) e.getUnicodeChar();
barcode += pressedKey;
if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
Toast.makeText(getApplicationContext(), "barcode--->>>" + barcode, Toast.LENGTH_LONG)
.show();
}
return super.dispatchKeyEvent(e);
}
我在 SO 中看到了一些问题,但没有一个真正给出具体答案。
【问题讨论】:
-
我认为要真正解决这个问题,您需要来自条形码扫描仪的一些文档 - 它到底应该发送到您的应用程序什么?它是模拟键盘(通常要做的事情)还是其他什么?设备文档中还有其他提示吗?
-
搜索了文档但没有找到任何东西。我确实用
EditText对其进行了测试,我唯一的结论是,在一个接一个发送条形码编号后,它会发出一个ENTER -
@XeniaSis hai....你是怎么解决这个问题的。我尝试了以下解决方案。但是当我调用一个以条形码为参数的 api 时,只发送第一个字符,因此会出错。
-
@Android_id 抱歉,多年未从事安卓开发工作