Windows 上基于软件的 Android 配件
Posted
技术标签:
【中文标题】Windows 上基于软件的 Android 配件【英文标题】:Software based Android accessory on Windows 【发布时间】:2012-02-19 18:14:01 【问题描述】:我想使用我的应用程序将我的电脑变成一个 android 配件。因此,这将不是专门的硬件,而是将手机切换到附件模式的 PC,从而在手机上启动与主机硬件相关联的一些 Java 应用程序并创建通信通道。
我找到了一个 sample code(加上一些 Java Android 应用程序),可以在 Linux 上使用 libusb 执行此操作。它通过使用标准 VID 和 PID “打开”手机来工作。然后它发送一个command to turn on the accessory mode,以及模型、版本等元数据。
如果手机支持配件模式,它将断开连接并使用不同的 PID 重新枚举。示例代码然后检查它是否这样做并打开新设备。
但是,我正试图让它在 Windows 上运行。我找到了一些 USB 库,例如 LibUsbDotNet,但它们似乎都需要使用 WinUSB/libusb 驱动程序的设备。我使用 LibUsbDotNet 中的工具为我的手机生成 libusb 驱动程序,将其安装在旧的通用可移动驱动器上。但这意味着我现在无法将手机作为可移动驱动器访问,因此这不是解决方案。
有没有办法(最好是库)可以根据 VID 和 PID 打开任何连接的 USB 设备,然后向它发送一些原始命令?
之后,设备将使用不同的 PID 重新枚举,我可以使用它来创建自己的 WinUSB 驱动程序,所以这不是问题。我只需要通过/围绕默认驱动程序注入一些命令来打开附件模式。
(我更喜欢 .NET 解决方案,但任何 Windows 都可以,我可以编写自己的互操作包装器)
【问题讨论】:
wifi怎么样?你不能用它来交流吗? 不幸的是,不,在这种情况下不是。此外,即使我可以,USB 会好得多 - 为手机充电,触发在手机上启动后端应用程序,汽车根据提供的序列号识别各种计算机,在每种情况下触发不同的反应。 问题是它是否值得你也可以使用蓝牙。从理论上讲,您可以使用 adb 它可以启动您需要的应用程序并通过 usb 工作。 pull 和 push 命令可用于传输数据 感谢您的帮助,但我在上面发布的内容正是我想要和需要的。我想用 BT、WiFi 或 adb 以简单的方式做到这一点,但我做不到。我真的需要将设备置于 USB 附件模式,通过强制一些数据通过 USB 使其重新枚举。忽略问题的 Android 部分,这实际上是关于在 Windows 上使用非 WinUSB 驱动程序做 USB 的东西。 嗨@lacop,你有没有为安卓手机和windoes PC之间的usb通信找到任何可行的解决方案 【参考方案1】:我也在寻找类似的解决方案。我尝试了带有 libusb 的 Linux 版本,几乎没有任何问题,能够与设备通信。 在 Windows 上搜索解决方案时,我尝试了许多 hack。 如果需要在 ADK 模式下与设备通信,我需要发送几个供应商命令,现在我需要在大容量存储模式下连接时执行此操作。使用大容量存储驱动程序是不可能的。我试图获取已连接 USB 设备的节点句柄以查看是否可以发送供应商命令,但我只能提交 Get Descriptor 请求。所以我采用了丑陋的方法,用 libusb-win32 替换了大容量存储驱动程序,看看它可以做同样的事情,是的,它有效,但根本不是一个好的解决方案。
仍在寻找中..
【讨论】:
嗨,sachin,您有任何 USB 通信解决方案吗?以上是关于Windows 上基于软件的 Android 配件的主要内容,如果未能解决你的问题,请参考以下文章
仿macos风格的windows11桌面(适用win10,win11,齐全模板与配件,及相关问题解决方案)