Я пытаюсь подключить устройство Android к машине под управлением Windows 10 для доступа к файлам через приложение Java. Я знаю, что консенсус заключается в том, что следует использовать WebDav или FTP-сервер, но я хотел бы избежать этого, если это возможно. Я провел много недель, исследуя это, и наконец решил обратиться к блестящим умам переполнения стека.
Для монтирования MTP-устройства нам понадобится библиотека файловой системы, похожая на fuse для Unix. Для окон два очевидных варианта:
- доканы
- winfsp
Насколько я понимаю, есть два основных API/библиотеки для доступа к устройствам MTP:
- libmtp
- WPD
Мне удалось скомпилировать libmtp для Windows, используя msys2/Mingw64.
На мой взгляд, я должен использовать приложение типа mtpmount или попытаться портировать приложение Linux, например simple-mtpfs с использованием библиотеки файловой системы, такой как dokany, вместо fuse.
Однако, когда я пытаюсь использовать mtp-mount (который использует API WPD), он не перечисляет никаких устройств, и когда я тестирую libMTP с использованием предоставленных примеров, я получаю такие ошибки:
libusb_open() failed!: No error
libmtp version: 1.1.18
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 1, dev 10
Attempting to connect device(s)
OK.
LIBMTP PANIC: Unable to initialize device
Unable to open raw device 0
Я не знаю, как поступить. Любая помощь будет принята с благодарностью.
Обновлять
Я заставил libmtp работать, используя libusbk-dev-kit. В частности, я использовал libusbK-inf-wizard для создания драйверов для своего устройства. Я протестировал драйвер libusbk и драйвер WinUSB и обнаружил, что они оба решают мою проблему. Кроме того, я собрал mtpmount из исходников и обнаружил, что он тоже работает.