import javax.usb.*;
import javax.usb.event.UsbServicesEvent;
import javax.usb.event.UsbServicesListener;
public static void main(String[] args) throws Exception {
UsbServices services = UsbHostManager.getUsbServices();
UsbHub root = services.getRootUsbHub();
listDevices(root);
services.addUsbServicesListener(new UsbServicesListener() {
@Override
public void usbDeviceAttached(UsbServicesEvent event) {
try {
UsbDevice device = event.getUsbDevice();
// 获取设备信息
String deviceName = device.getManufacturerString() + " " + device.getProductString();
String deviceId = device.getUsbDeviceDescriptor().idVendor() + ":" + device.getUsbDeviceDescriptor().idProduct();
// 打印设备信息
System.out.println("USB device attached: " + deviceName + " (ID: " + deviceId + ")");
} catch (UsbException e) {
throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
@Override
public void usbDeviceDetached(UsbServicesEvent event) {
try {
UsbDevice device = event.getUsbDevice();
// 获取设备信息
String deviceName = device.getManufacturerString() + " " + device.getProductString();
String deviceId = device.getUsbDeviceDescriptor().idVendor() + ":" + device.getUsbDeviceDescriptor().idProduct();
// 打印设备信息
System.out.println("USB device detached: " + deviceName + " (ID: " + deviceId + ")");
} catch (UsbException e) {
throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
});
}
private static void listDevices(UsbHub hub) {
@SuppressWarnings("unchecked")
List<UsbDevice> devices = (List<UsbDevice>) hub.getAttachedUsbDevices();
for (UsbDevice device : devices) {
if (device.isUsbHub()) {
listDevices((UsbHub) device);
} else {
System.out.println(device);
}
}
}
java实现监听USB(监听器无法生效,估计还是需要通过jna实现)
最新推荐文章于 2024-07-26 03:14:17 发布