java - 在java中识别一个新设备

标签 java windows device

我想知道何时连接了新设备。

我了解到可以使用 C# 获取所有当前设备:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select VolumeName, DeviceID from Win32_LogicalDisk Where Not (VolumeName is null)");

然后 searcher.get() 返回设备的集合。

我可以在 Java 中使用与 ManagementObjectSearcher 类似的东西吗? 如果没有,是否有另一种方法来获取已连接设备的列表?还是通过其他方式了解新设备何时连接?

谢谢。

最佳答案

我知道在 Java 中没有真正的跨平台方法可以做到这一点。如果您对仅限 Windows 的解决方案感到满意,最简单的解决方案是生成一个 C#/VBScript 可执行文件,您可以使用 Runtime.exec() 从您的 Java 程序中调用。

如果您想要一个需要更多工作的“更好”解决方案(但仍然仅限于 Windows),您可以使用 iKVM连接您的 C# 和 Java 程序。

从跨平台的角度来看,我唯一能想到的(这仍然使用 native 库是使用 RXTX 轮询 COM 端口上的枚举,并检查何时发生变化。这不会让你得到列表所有设备,它只适用于使用 COM 端口的设备,但根据您的需要,它可能就足够了。这种方法的优点是 RXTX 二进制文件可以自由存在于每个通用平台上。

关于java - 在java中识别一个新设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847376/

相关文章:

c++ - 有什么方法可以确定 Windows 中可移动驱动器的速度?

ios - 无法在 iPhone 设备 Xcode 7.1 错误上启动调试服务器

Android Studio 看不到设备

html - 如何将 1 个域连接到 2 个不同的网站

java - Android 显示实例列表中的字段

java - 是否可以用 javassist 代理或替换静态方法

java - 如何从 FirebaseDatabase 读取 servlet 中的数据

c++ - 即使未包装在 extern "C"中,也会调用 DllMain() 吗?

java - addCountry 空指针错误

c++ boost asio 异步函数不能在 dll 中工作