在Android和Node.js之间传输大文件

sg.*_*.cc 7 usb android node.js react-native

我有一个拍照的Android应用程序(用React Native编写,但我可以添加本机模块,如果需要的话)与用户计算机上的库类型应用程序配对(使用React编写电子版).照片的数量可能很大(我们一次有超过一千张照片),并且需要将它们转移到未计算和未剪切的计算机应用程序中.我需要一种可靠的方法来实现这一点,而无需首先通过Internet路由数据.

我尝试过的事情

节点USB:看起来像一个好的库,但无法在用户的计算机上安装驱动程序.然后驱动程序似乎替换默认的Windows USB驱动程序,并且通过正常方式(在Windows中打开文件浏览器)无法访问手机.也许有一些方法可以"动态"切换驱动程序,仅在传输照片时使用驱动程序,然后在完成后将其切换回系统驱动程序?

亚行:这是我尝试的原始解决方案,它完全符合我的需要,有两个突破性的问题:首先,手机需要启用开发模式,而对于两个,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也是如此.然而,尽我所能,没有任何解决方案可以开箱即用.以前有人处理过这样的问题吗?你的解决方案是什么?你会如何解决这个问题?

小智 0

您实际上并不需要通过互联网路由数据。您可以通过互联网交换元数据:使用文件夹导入功能扩展您的桌面应用程序(通常通过 USB 插入手机,浏览到文件夹,导入)。当您执行此过程时,让它通知某种 Web 服务(推送通知?我不是手机应用程序开发人员)桌面应用程序已从哪个设备(ID、文件名等)和手机导入了哪些文件获取此元数据并可以继续其正在执行的操作!

显然,最好的解决方案是通过 USB 进行通信通道。在你弄清楚这一点之前,你可以通过这种方式暂时实现它!