【发布时间】:2018-07-19 14:44:15
【问题描述】:
我有一个拍照 Android 应用程序(用 React Native 编写,但如果需要,我可以添加原生模块)与用户计算机上的画廊类型应用程序配对(用 Electron 和 React 编写)。照片的数量可能很大(我们一次有超过一千张照片),并且需要将它们传输、未压缩和未裁剪到计算机应用程序。我需要一种可靠的方法来做到这一点,而无需先通过 Internet 路由数据。
我尝试过的事情
Node USB:看起来像一个不错的库,但是如果不在用户的计算机上安装驱动程序就无法使用。然后驱动程序似乎替换了默认的 Windows USB 驱动程序,并且手机变得无法通过正常方式访问(在 Windows 中打开文件资源管理器)。也许有一些方法可以“即时”切换驱动程序,仅在传输照片时使用驱动程序,然后在完成后将其切换回系统驱动程序?
ADB: 这是我尝试过的原始解决方案,它完全符合我的需要,但存在两个破坏性问题:第一,手机需要启用开发模式,以及对于两个,ADB 似乎无法识别所有设备(例如,我们在让它与 LG V20 一起工作时遇到了很多麻烦)。这个问题的理想答案是没有这两个问题的亚行。
WiFi路由:我们将手机连接到与主机相同的WiFi网络,使用WebSockets通过互联网握手IP,然后通过WiFi网络发起直接连接。如果我找不到任何其他解决方案,这很可能是我会选择的解决方案。此选项的最大问题是需要相对大量的手动设置。我们的用户往往不太精通技术,我不知道假设他们家中有 WiFi 有多么合理。无论如何,这不是转移的唯一选择。此外,通过无线网络传输千兆字节的照片将导致同一网络上的每个人的速度变慢。
绑定路由:我们将手机绑定到计算机,并以与上述步骤大致相同的方式启动直接连接。这种方法的缺点是只有带有 SIM 卡的手机才能激活网络共享(并非我们所有的手机都有 SIM 卡,因为连接不是我们需要的主要目的),而且计算机上的所有其他流量现在都将通过电话路由,这对拥有 SIM 卡的客户的数据上限不利。此外,无法以编程方式打开网络共享,只能调出网络共享菜单;这不是一个太大的交易破坏者,但其他两个非常重要。
蓝牙:基本满足我的要求,但是数据传输率太低了,比WiFi低一个数量级。
WiFi Direct:我实际上并没有尝试过,因为我找不到让 PC 接受 WiFi Direct 连接的有效方法。它保证了卓越的速度,但我发现没有任何模块或库可以帮助我启用它。
SD 卡:最低技术含量的方法,只需将所有内容保存到 SD 卡中,然后让客户将卡取出并将其插入计算机。除了需要 SD 卡端口(保证既不用于客户的计算机也不用于他们的手机),这将与此相关。
显而易见的:手动将所需文件从手机拖放到 PC。这就是我们现在做事的方式,它充满了问题。由于某种原因,在传输过程中,文本文件的最后 15-20 个字符被截断;由于 MTP 不强制在手机上重新扫描媒体的已知问题,设备上的许多照片最初并未显示;用户有时会将文件放在错误的位置,从而导致不必要的支持电话。这种方法肯定需要更换。
我已经为这个问题寻找解决方案已经两个月了,很难相信没有人有这样的 Android 用例。很明显,Android 和 PC 之间的 USB 通信并非微不足道,我敢肯定有一些程序可以做到这一点,Windows 可以开始使用。然而,尽我所能,没有开箱即用的解决方案。以前有没有人处理过这样的问题?你的解决方案是什么?您将如何解决这个问题?
【问题讨论】:
标签: android node.js react-native usb