Windows上基于软件的Android附件

时间:2012-01-26 16:43:01

标签: android usb driver libusb winusb

我想使用我的应用程序将计算机变成Android附件。因此,不是专用硬件,而只是将手机切换到配件模式的PC,从而在与主机硬件相关的手机上启动一些Java应用程序并创建通信渠道。

我在Linux上使用libusb找到了sample code(加上一些Java Android应用程序)。它通过使用标准VID和PID“打开”手机来工作。然后它发送command to turn on the accessory mode,以及模型,版本等元数据。

如果手机支持配件模式,它将断开并重新枚举不同的PID。然后,示例代码检查它是否存在并打开新设备。

但是,我正试图在Windows上运行它。我找到了一些USB库,比如LibUsbDotNet,但它们似乎都要求设备使用WinUSB / libusb驱动程序。我在LibUsbDotNet中使用了一个工具来为我的手机生成一个libusb驱动程序,并将其安装在旧的通用可移动驱动器上。但这意味着我现在无法将手机作为可移动驱动器访问,因此这不是解决方案。

有没有办法(最好是图书馆)可以根据VID和PID打开任何连接的USB设备,然后向它发送一些原始命令?

之后,设备将使用不同的PID重新枚举,我可以使用它来创建自己的WinUSB驱动程序,因此这不是问题。我只需要通过/围绕默认驱动程序注入一些命令来打开附件模式。

(我更喜欢.NET解决方案,但任何Windows都可以,我可以编写自己的互操作包装器)

1 个答案:

答案 0 :(得分:0)

我也在寻找类似的解决方案。我尝试了Linux版本,带有libusb,只有很少的hickup,能够与设备通信。 在Windows上搜索解决方案时,我尝试了许多黑客攻击。 如果需要在ADK模式下与设备通信,我需要发送几个Vendor Commands,现在我需要在Mass Storage模式下连接它。使用Mass Storage驱动程序是不可能的。我试图获取连接USB设备的Node句柄以查看是否可以发送供应商命令,但在那里我只能提交Get Descriptor请求。所以我采用丑陋的方法,用libusb-win32替换大容量存储驱动程序,看它可以做同样的事情,是的,它有效,但根本不是一个好的解决方案。

仍在搜索..

相关问题