Windows 上基于 Android 配件的软件

2024-01-13

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

我找到了一个示例代码 http://android.serverbox.ch/?p=262(加上一些 Java Android 应用程序)在 Linux 上使用 libusb 执行此操作。它的工作原理是使用标准 VID 和 PID“打开”手机。然后它发送一个打开配件模式的命令 http://developer.android.com/guide/topics/usb/adk.html#start,以及模型、版本等元数据。

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

不过,我正在尝试让它在 Windows 上运行。我找到了一些 USB 库,例如LibUsbDotNet http://libusbdotnet.sourceforge.net/V2/Index.html,但它们似乎都需要使用 WinUSB/libusb 驱动程序的设备。我使用 LibUsbDotNet 中的一个工具为我的手机生成 libusb 驱动程序,并将其安装在旧的通用可移动驱动器上。但这意味着我现在无法在需要时将手机作为可移动驱动器访问,因此这不是解决方案。

有没有一种方法(最好是一个库)可以根据 VID 和 PID 打开任何连接的 USB 设备,然后向其发送一些原始命令?

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

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


我也在寻找类似的解决方案。我尝试了Linux版本,带有libusb,有一点小问题,能够与设备通信。 在 Windows 上寻找解决方案时,我尝试了很多技巧。 如果需要在 ADK 模式下与设备通信,我需要发送几个供应商命令,现在我需要在大容量存储模式下连接时执行此操作。使用大容量存储驱动程序这是不可能的。我尝试获取连接的 USB 设备的节点句柄,看看是否可以发送供应商命令,但我只能提交“获取描述符”请求。所以我采用了丑陋的方法,用 libusb-win32 替换了大容量存储驱动程序,看看它是否可以做同样的事情,是的,它有效,但根本不是一个好的解决方案。

仍在搜索中..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 上基于 Android 配件的软件 的相关文章

随机推荐