在Android上与USB设备通信

时间:2015-07-27 16:20:03

标签: java android usb

我有一个适用于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: ����'����������

1 个答案:

答案 0 :(得分:2)

在android中你可以在主活动中使用dispatchKeyEvent。 我有一个类似的设置,除了条形码扫描仪传输条形码,好像我会用外部键盘输入。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

    System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());

    return true;
}

如果您想获取信息,这应该会对您有所帮助。你应该只知道RFID序列何时完成。它会传输一个你可以注意的后缀吗?

请记住,此方法会捕获所有关键事件:键入和按键。你应该过滤这个。