以编程方式通过 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.exe
和AdbWinApi.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 连接的 Iphone 的电池健康状况