我尝试设置 UsbDeviceListener,但当我断开设备连接或在设备上创建新文件时,没有任何反应。
有人可以告诉我我的代码问题出在哪里吗?
public static void listPeripherique(UsbHub hub) {
List perepheriques = hub.getAttachedUsbDevices();
Iterator iterator = perepheriques.iterator();
while (iterator.hasNext()) {
UsbDevice perepherique = (UsbDevice) iterator.next();
perepherique.addUsbDeviceListener(new UsbDeviceListener() {
@Override
public void usbDeviceDetached(UsbDeviceEvent arg0) {
System.out.println("connect " + arg0);
}
@Override
public void errorEventOccurred(UsbDeviceErrorEvent arg0) {
System.out.println("disconect " + arg0);
}
@Override
public void dataEventOccurred(UsbDeviceDataEvent arg0) {
System.out.println("new data on " + arg0);
}
});
}
if (perepherique.isUsbHub()) {
listPeripherique((UsbHub) perepherique);
}
}
编辑:它仅适用于 USB 分离。
最佳答案
您介意向用户提供有关您的环境(Linux、Win、OSX)以及 USB 设备类型(Stick、游戏 handle 、DVD 刻录机、加密狗、iP(a|o)d、iPhone、智能手机)的更多详细信息吗?但是,如果您使用 Windows,则驱动程序似乎已过时:JSR80 :这是一个已废弃的 Windows 实现。它不起作用,它需要内核驱动程序。
让我们随时了解您的项目和进度。
编辑
我用 Logitech Wingman Controller 进行了尝试,可以确认仅引发 usbDeviceDetached
事件。我认为驱动程序确实过时了:(
关于java - 设置 UsbDeviceListener javax.usb/usb4java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21235194/