java实现监听USB(监听器无法生效,估计还是需要通过jna实现)

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);
			}
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值