使用Android手机作为USB主机将外部驱动器挂载到手机上,并通过手机访问外部驱动器的存储空间

8
我一直在尝试将外部驱动器(如硬盘、闪存卡和相机)挂载到Android手机上,即如果我将外部驱动器插入Android设备,则Android手机应能够访问存储文件系统。
市场上有一些应用程序可以通过手机控制外部设备。
我可以使用USB主机模式{ http://developer.android.com/guide/topics/connectivity/usb/index.html }与USB设备通信。但是,USB主机和附件模式直接支持Android 3.1(API级别12)或更高版本的平台。
而名为DSLR Controller { https://play.google.com/store/apps/details?id=eu.chainfire.dslrcontroller&hl=en } 的应用程序需要Android 2.1或更高版本。由于该应用程序是基于通过Android手机访问相机的操作。如果该应用程序显示正确信息,则似乎可以访问相机(或任何其他驱动器)的存储。
但我想在低版本中也使用该应用程序。任何形式的帮助都将不胜感激。
如需更多问题描述,请评论。
谢谢。

1
你好,我不完全理解你的问题...你想知道如何在2.1设备上不使用USB主机模式访问存储设备,是吗?关于你提到的应用程序,我认为他们使用的是:http://gphoto.org/proj/libgphoto2/,这是专门针对数码相机的。 - Acacio Martins
不,我不是,但可能性很高。你可以问开发者。 - Acacio Martins
可能是 Android detect usb storage for kitkat (4.4) 的重复问题。我在那里发布了针对6.0以上和6.0之前的解决方案。 - Peter Tran
4个回答

4
你可以在 Github 上的 FileManager 开源项目上创建一个应用程序。你可以在那里指定识别你的设备,也可以根据你的需要更改这些代码。 这是链接:Adroid-File-Manager

1
请注意,这是一个文件管理器的链接,而不是用于管理连接的USB设备及其文件的程序。 - Dwight Holman
4
我认为这个答案与问题不相关。 - Shail Adi

3
如果您只想访问 USB 存储设备(如闪存驱动器),可以像普通的 Java 方式一样打开文件 (java.io.File 等)。Android ICS 会自动将闪存驱动器挂载在 /sdcard/usbStorage/ 下,但我不确定之前的版本或其他类型的硬件是否也是这样。不过它可能仍然有效,建议您进行测试并查看结果。

但是安卓设备无法检测到USB设备。您是否尝试过您所推荐的概念?! - Shail Adi
这是我的手机上的情况。你用的是什么设备? - Techwolf
LG Optimus...你能给我一些代码实现的提示来检测USB吗? - Shail Adi
它运行的是哪个版本的Android?这只适用于更新的手机。如果不起作用,您可能需要使用USB主机API自己实现它。可以在此处找到更多关于此的信息:http://developer.android.com/guide/topics/connectivity/usb/index.html - Techwolf
但是USB主机API从Android 3.1开始就已经包含了。而且它还取决于设备的硬件是否能够充当USB主机,只有最新的手机才具备这个功能。我以为你在为之前的设备提供建议... - Shail Adi
1
它是否被实施在Android 4.0之前的手机上,我觉得这取决于制造商。有些有,有些没有。 - Techwolf

2
唯一确保实现此目标的方法是使用 API 级别高于 12,否则一些手机可能支持 USB 主机,但大多数手机不支持。原因是首先需要硬件支持 USB 主机,即使有该支持,所需的驱动程序也可能未编译到内核中。我曾经尝试在 Nook Color 上实现 USB 主机,尽管它具有硬件支持,但让 USB 主机工作几乎花费了两个月和一个专用应用程序。因此,这不是您可以为每个设备完成的任务。一些设备可能会直接支持它,但即使这些设备也需要 root 和更多的工作来挂载驱动器等等... 单反相机也是以同样的方式进行操作,请查看要求。
- Android device with ARMv7-A or newer CPU architecture (most 1ghz+ devices)
- Not rooted: Android 3.1 or higher with USB host kernel+API support
- Rooted: Android 2.3.1 or higher with USB host kernel support

这些是唯一支持USB主机的设备。


2

从应用程序描述中可以看出,Android 2.x设备需要进行root操作。这表明它们具有一些USB主机代码的本地实现(可能是它们加载的预编译内核模块)。

因此,解决方案因其运行的特定硬件和软件(内核、供应商修改、皮肤)而异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接