在 Android 上与 USB 设备通信

Communicate with USB device on Android

我有一个用于 Windows 的 RFID usb reader,可用作外部键盘。当插入我的笔记本电脑时,reader 在扫描 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: ����'����������

在 android 中,您可以在主 activity 中使用 dispatchKeyEvent。 我有一个类似的设置,除了条形码扫描仪,它传输条形码就像我用外部键盘输入它一样。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

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

    return true;
}

如果您想获取信息,这应该对您有所帮助。您应该只知道 RFID 序列何时完成。它是否传输了您可以留意的后缀?

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