以编程方式通过 USB 将文件从 android 传输到计算机

Posted

技术标签:

【中文标题】以编程方式通过 USB 将文件从 android 传输到计算机【英文标题】:transfer files from android to computer via usb programmatically 【发布时间】:2013-03-25 13:57:36 【问题描述】:

我正在寻找一种解决方案,它使用 android API 通过 USB 电缆将文本文件从 Android 设备传输到计算机。我找到了USB host,但我无法使用它,因为计算机无法充当 Android 主机的设备。

您对我如何实现这一点有什么建议吗?

【问题讨论】:

您想以编程方式执行此操作吗?还是您只需插入设备并拖放文件? 我想以编程方式进行,正如我在“使用 Android API”的问题中提到的那样。 我明白了,我不确定客户端机器上没有应用程序是否可以这样做,否则可能会带来很大的安全风险。 @323go 这也是一个选项,但是如果我在PC上实现一个应用程序,我不能使用adb,因为计算机没有安装Android SDK。除了adb还有其他选择吗? @323go 那么如果我在 PC 上使用 Java 作为应用程序,我会将adb.exe 打包到 jar 中,并在第一次运行 jar 时将其解压缩以便能够使用它? 【参考方案1】:

我已经解决了这个问题,使用adb status-window不断检查设备状态,当连接新设备时,使用adb pull命令将所需文件传输到计算机。

为了实现可移植的解决方案(即独立于 Android 平台运行),我只是将文件“adb.exe”和“AdbWinApi.dll”复制到我的应用程序中并从那里使用 adb。

【讨论】:

复制adb.exeAdbWinApi.dll文件后我该怎么办?运行这个Runtime.getRuntime().exec("adb -s pull /sdcard/juned.jpg /root/juned/android_usb/"); 就可以了,还是我需要做其他事情?【参考方案2】:

有类似的问题,安装在 PC 中的软件需要能够通过 USB 访问 android 手机内的文件。经过长时间的研究,这对我有用(不确定这是否是最好的解决方案,但它有效)。 Windows 具有 Windows Portable Device(WPD) API,可用于通过 USB 枚举设备的内容(以及在客户端和设备之间复制文件)。

java中的实现很少 http://code.google.com/p/jmtp/(效果很好,但不支持从设备到电脑的复制功能,尽管有一些支持可以使用源代码执行此操作) 另一个是 jusbpmp(可在 google 存储库中找到) (如果有人发现有据可查且维护良好的实现,请分享)

但是由于 jmtp 对我不起作用(复制函数源编译(对于 64 位操作系统)失败),所以从头开始编写 C# 程序将文件从设备复制到 PC。这是一个很好的教程 https://github.com/geersch/WPD/blob/master/src/part-3/README.md

【讨论】:

【参考方案3】:

您可以编写一个应用程序,该应用程序将使用 http 联系您的电脑并将 (POST) 数据发送到已知端点。

请记住,该应用只能访问属于该应用的数据。您将无法从文件系统访问任意文件

【讨论】:

问题是我不能依赖无线网络连接。我唯一可以依靠的是 USB 数据线。 这里一样...我需要通过 USB 连接到 Windows PC 上的数据库。

以上是关于以编程方式通过 USB 将文件从 android 传输到计算机的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式通过 USB 模拟 iPhone(真实设备,而非模拟器)位置

Android 设备如何以编程方式推断它所连接的 Linux 设备的 IP 地址?

使用时以编程方式弹出 USB 设备

如何以编程方式确定通过 USB 连接的 Iphone 的电池健康状况

将图像组合成音频文件并以编程方式在android中制作视频文件

如何以编程方式从 Android 中删除 SQLite 数据库