我有一个适用于Windows的RFID usb读卡器,可用作外接键盘。当插入我的笔记本电脑时,读取器会在扫描RFID物体时发送一个号码(0014671609)(就像您在真实键盘上输入数字一样)。
我的目标是创建一个Android应用程序,该应用程序还会在扫描RFID对象时打印该数字。
目前,我可以连接到设备,当我扫描某些内容时,我得到了回复,但是我无法阅读回复。这是我的代码:
public void run() {
try {
int packetSize = deviceEndpoint.getMaxPacketSize();
ByteBuffer buffer = ByteBuffer.allocate(packetSize);
UsbRequest outRequest = new UsbRequest();
outRequest.initialize(deviceConnection, deviceEndpoint);
outRequest.queue(buffer, 1);
if (deviceConnection.requestWait() == outRequest) {
UsbRequest inRequest = new UsbRequest();
inRequest.initialize(deviceConnection, deviceEndpoint);
if(inRequest.queue(buffer, packetSize) == true){
deviceConnection.requestWait();
// get response data
byte[] data = buffer.array();
System.out.println("Response: " + new String(data, "UTF-8"));
}
}
} catch (Exception ex) {
System.out.println("ERROR: " + ex.getMessage().toString());
}
}
响应:
Response: ����'����������
答案 0 :(得分:2)
在android中你可以在主活动中使用dispatchKeyEvent。 我有一个类似的设置,除了条形码扫描仪传输条形码,好像我会用外部键盘输入。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
return true;
}
如果您想获取信息,这应该会对您有所帮助。你应该只知道RFID序列何时完成。它会传输一个你可以注意的后缀吗?
请记住,此方法会捕获所有关键事件:键入和按键。你应该过滤这个。