Программный аксессуар для Android на Windows - PullRequest
6 голосов
/ 26 января 2012

Я бы хотел превратить свой компьютер в аксессуар для Android с помощью моего приложения. Таким образом, вместо специализированного оборудования это будет просто ПК, который переключит телефон в режим аксессуаров, запустив, таким образом, какое-нибудь приложение Java на телефоне, связанное с оборудованием хоста, и создаст канал связи.

Я нашел пример кода (плюс некоторое приложение Java Android), чтобы сделать это в Linux с помощью libusb. Он работает, «открывая» телефон, используя стандартные VID и PID. Затем он отправляет команду для включения дополнительного режима вместе с метаданными, такими как модель, версия и т. Д.

Если телефон поддерживает режим аксессуаров, он будет отключен и повторно проведет подсчет с другим PID. Затем образец кода проверяет его наличие и открывает новое устройство.

Однако я пытаюсь запустить это в Windows. Я нашел несколько USB-библиотек, таких как LibUsbDotNet , но все они, кажется, требуют устройства, использующего драйвер WinUSB / libusb. Я использовал инструмент в LibUsbDotNet для генерации драйвера libusb для моего телефона, установив его поверх старого универсального съемного диска. Но это означает, что теперь я не могу получить доступ к телефону как к съемному диску, когда захочу, так что это не решение.

Есть ли способ (предпочтительно библиотека), который может открыть любое подключенное USB-устройство на основе VID и PID, а затем отправить ему несколько необработанных команд?

После этого устройство будет повторно перечислено с другим PID, который я могу использовать для создания своего собственного драйвера WinUSB, так что это не проблема. Мне просто нужно ввести некоторые команды через / вокруг драйвера по умолчанию, чтобы включить вспомогательный режим.

(Я бы предпочел решение .NET, но с Windows все в порядке, и я могу написать свою собственную оболочку взаимодействия)

1 Ответ

0 голосов
/ 02 июня 2013

Я также ищу подобное решение. Я попробовал версию для Linux, с libusb, с небольшими хитростями, смог общаться с устройством. При поиске решений для окон я пробовал много хаков. Если мне нужно связаться с устройством в режиме ADK, мне нужно отправить несколько команд Vendor, теперь мне нужно это сделать, когда оно подключено в режиме Mass Storage. Это невозможно при использовании драйвера Mass Storage. Я попытался получить дескриптор узла подключенного USB-устройства, чтобы узнать, может ли он отправить команду поставщика, но там я мог только подавать запросы Get Descriptor. Поэтому я выбрал уродливый метод, заменил драйвер запоминающего устройства на libusb-win32, чтобы убедиться, что он может делать то же самое, ДА, он работал, но совсем не хорошее решение.

Все еще в поиске ..

...