Определить новое устройство в Java - PullRequest
2 голосов
/ 01 мая 2011

Я хочу знать, когда подключено новое устройство.

Я узнал, что можно получить все текущие устройства в C #, используя:

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

, а затем searcher.get() возвращает коллекцию устройств.

Есть ли что-то параллельное ManagementObjectSearcher, которое я могу использовать в Java? Если нет, есть ли другой способ получить список подключенных устройств? или другой способ узнать, когда подключается новое устройство?

Спасибо.

1 Ответ

0 голосов
/ 15 мая 2012

Я не знаю ни одного реального кроссплатформенного способа сделать это на Java. Если вас устраивает решение только для Windows, самое простое решение - создать исполняемый файл C # / VBScript, который можно вызвать из вашей программы Java с помощью Runtime.exec().

Если вы хотите «более приятное» решение, которое требует немного больше работы (но все еще только для Windows), вы можете использовать iKVM для взаимодействия между вашими C # и Java-программами.

Единственное, о чем я могу подумать с точки зрения кроссплатформенности (и при этом все еще используются нативные библиотеки, - это использовать RXTX для опроса перечисления на COM-портах и ​​проверки, когда что-то изменится. Это не даст вам список все устройства, и это будет работать только для устройств, которые используют COM-порт, но в зависимости от ваших потребностей этого может быть достаточно. Плюсом этого подхода является то, что двоичные файлы RXTX свободно существуют для каждой распространенной платформы.

...