我有一个拍照Android应用程序(使用React Native编写,但如果需要,我可以添加本地模块),它与用户电脑上的画廊类型应用程序(使用Electron和React编写)配对。照片数量可能很大(我们一次有超过一千张照片),并且需要将它们传输到电脑应用程序中,未压缩且未裁剪。我需要一种可靠的方法在不通过互联网的情况下完成这一点。
我尝试过的事情
Node USB:看起来是一个不错的库,但是需要在用户电脑上安装驱动程序才能使用。然后,该驱动程序似乎会替换默认的Windows USB驱动程序,并且无法通过常规方式(在Windows中打开文件浏览器)访问手机。也许有某种方法可以“即时”切换驱动程序,在传输照片时仅使用驱动程序,然后在完成后切换回系统驱动程序?
ADB:这是我尝试的最初解决方案,它完全符合我的需求,但有两个致命问题:首先,手机需要启用开发人员模式;其次,ADB似乎不能识别所有设备(例如,我们在使用LG V20时遇到了很多麻烦)。对于这个问题的理想答案将是像ADB一样,但没有这两个问题。
WiFi路由:我们将手机连接到与主机计算机相同的WiFi网络,使用WebSockets通过互联网进行IP握手,然后通过WiFi网络启动直接连接。如果找不到其他解决方案,这可能会成为我采用的方法。此选项的最大问题是需要相对大量的手动设置。我们的用户往往不太精通技术,而且我不知道假设他们在家里有WiFi是否合理。无论如何,这不能是传输的唯一选择。此外,通过无线网络传输几GB的照片会导致同一网络上的所有人都变慢。
手机共享网络: 我们将手机与电脑通过数据线连接,以类似于上一步骤的方式建立直接连接。这种方法的缺点是只有带有SIM卡的手机可以激活网络共享功能(并非我们所需的所有手机都带有SIM卡,因为它们的主要用途不是连接性),此外所有其他流量都会通过手机路由,对于有SIM卡的客户的数据限制会产生负面影响。此外,没有编程方式可以打开网络共享,只能通过菜单手动操作;虽然这不是太大的问题,但前两个缺点是非常明显的。
蓝牙: 通常符合我的需求,但是数据传输速率远低于WiFi,比WiFi低一级。
WiFi Direct: 我实际上没有尝试过这个方法,因为我找不到一种可行的方法让电脑接受WiFi Direct连接。它承诺了出色的速度,但我没有找到任何模块或库来帮助我启用它。
SD卡: 最低端的技术方法,只需将所有内容保存到SD卡中,然后让客户将卡插入其计算机。除了需要一个SD卡插槽(客户的计算机或手机都不能保证有),否则它是最好的选择。
显而易见的方法: 手动拖放需要从手机到电脑的文件。这是我们现在所做的,但它存在很多问题。在传输过程中,文本文件会被截断最后15-20个字符,原因未知;由于MTP不会强制在手机上重新扫描媒体,因此设备上的许多照片最初不会显示出来;有时用户会将文件放错位置,导致不必要的技术支持电话。这种方法肯定需要被替换。我已经寻找了两个月的解决方案,这个问题很难相信没有人像我一样使用Android。我们可以开发一些程序实现Android与PC之间的USB通信,Windows就是一个开始。然而,尽管我尝试了很多,却没有找到可以直接使用的解决方案。有人遇到过类似的问题吗?你们的解决方案是什么?你们如何解决这个问题?