【问题标题】:Java - list devices and know when one gets connectedJava - 列出设备并知道何时连接
【发布时间】:2015-03-24 18:56:51
【问题描述】:

我最近正在编写一些代码,使用 Java 中的File.listRoots() 在程序启动时获取连接的设备。这在 Windows 中工作得非常好,但是我读到它在 Linux 中不起作用,而且我不是 Linux 用户,所以我只能通过我目前无法访问的大学计算机访问 Linux。所以我想问两件事:

首先如何让它成为一个跨平台的驱动检测解决方案。

第二如何“监听”插入的设备,例如程序运行时插入计算机的 USB 必须被程序“监听”并运行事件。

我不能提供任何代码,因为它真的无关紧要,而且我还没有真正实现过这个功能,所以请询问任何可能需要回答的关于我的代码的问题。我敢打赌,“监听”设备连接也会“监听”设备断开连接,但如果不是这种情况,我也想知道解决方案。

如果有帮助的话,我会在 JFrame 中工作,我宁愿使用原生 Java 包来实现它,而不是使用其他包(如果可能),即使原生实现可能需要更多代码和努力!

请注意,我在引号中使用监听,因为我知道这可能不会像我怀疑的那样。

【问题讨论】:

  • Detect USB Drive in Java的可能重复
  • 一般来说这是一个解决方案,但对我来说不是最佳的,因为我不是 100% 确定这不能在 Java 中完成。即使这解决了 USB 问题,可移植性问题也远未得到解决……谁能帮帮我?

标签: java usb


【解决方案1】:

看看JavaHIDAPI

这是一个跨平台的人机接口设备 (HID) 库,适用于 Windows、Mac 和 Linux。它为每个库提供了所有本地库,并在 Java 中具有易于使用的界面。文档有点少,但它应该能让您快速上手。

在您的情况下,您可以维护一个后台线程来监控已连接设备的列表。当列表在一个快照和下一个快照之间发生变化时,您可以向您的应用程序发送一个事件。

【讨论】:

    【解决方案2】:

    使用 javax.usb 库,我们可以获取有关 UsbHostManager 的信息,但不容易获取正在连接的设备。

      import java.util.*;
        import javax.usb.*;
    
        public class USBLister {
    
          public static void main(String[] args) throws UsbException {
            //Get UsbHub
            UsbServices services = UsbHostManager.getUsbServices();
            UsbHub root = services.getRootUsbHub();
    
            listPeripherique(root);
          }
    
         public static void listPeripherique(UsbHub hub) {
            //List all the USBs attached
            List perepheriques = hub.getAttachedUsbDevices();
            Iterator iterator = perepheriques.iterator();
    
            while (iterator.hasNext()) {
    
              UsbDevice perepherique = (UsbDevice) iterator.next();
              System.out.println(perepherique);
    
              if (perepherique.isUsbHub())
                listPeripherique((UsbHub) perepherique);
    
            }
          }
        }
    

    【讨论】:

    • 如何初始化 javax.usb.properties 文件?我已在此文件中添加了“javax.usb.services = javax.usb.UsbServices”行,但代码不起作用。
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多