安卓:USB通讯 安卓 <-> 外接设备

5
我发现有几篇关于这个主题的帖子,但是阅读后我对我的问题没有一个清晰的想法。
我们有一个外部设备(类似于tomtom设备,不是附件),我们想将此设备连接到Android设备。我们希望通过USB连接在外部设备和Android设备之间进行串行通信。(目前,我们已经使用RS232接口在外部设备和其他非Android设备之间进行通信,但是外部设备可以使用USB电缆处理通信)
据我所知,自3.1以来,我们就拥有了USB API支持。
我们能否开发一个Android应用程序,使用USB电缆与我们的外部设备进行通信?我的意思是,双向发送数据到设备并从设备接收数据,我们想使用Android设备作为“显示器”。
非常感谢您的提前帮助。

我也有同样的需求。我们需要将数据发送到USB端口和电缆,然后外部设备将接收到数据。从这一点开始,外部设备将自行处理。是否有可能在不使用应用程序的驱动程序和库的情况下向外部设备发送数据?请帮忙。 - Krishna Prasad
3个回答

12

我基本上正在做你所描述的事情。虽然我还处于早期阶段,但我已经在某些限制下实现了这种通信:

  1. 您需要支持USB主机API的设备。该API自Android 3.2左右就存在,但似乎并非每个设备都支持它。看起来大多数运行4.0以上的设备应该可以工作,但仍需要进行每个设备的检查。我目前使用的是Acer Iconia Tab A510,到目前为止似乎可以工作,但存在一些问题:例如,在使用USB端口时无法充电,因为它与充电器共享,但不与USB兼容。
  2. 正如Neil所说,USB API是低级别的,因此我认为您需要一个驱动程序来支持您设备中的USB芯片组。我在这里非常幸运,因为有一个开源项目正在处理我选择的FTDI芯片组。如果你也是这种情况,你应该检查一下这些项目:

希望这能帮到你。正如我所说,我正在开始在这个生态系统中工作,我还需要找到许多“地方”的方法。

祝愉快, Asier.


这似乎是一个非常好的起点。非常感谢你(还有Royston和Neil) - Kosmo
不用客气。如果这个回答对你有帮助,能否标记一下已解决呢?这样其他人也可以找到答案。;-) - Asier
我想制作一个可以通过安卓手机的USB端口控制某些连接设备的应用程序,但是如果按照你的起点,可能无法实现,因为需要在几乎所有安卓设备上运行的应用程序,所以我们需要它们的所有驱动程序,对吗? 所以,我有另一个想法,我们将通过3.5英寸的手机插孔进行控制,并且我们有一些电路来接收这个信号。当我们向设备安卓发送命令时,这个手机将播放与该命令相对应的短快速音乐。 有人认为这是可能的吗?(对我的英语表示抱歉)。 - nobjta_9x_tq

1

目前adb接口是单向的。流程由主机PC使用adb控制。根据您的要求,看起来您可能需要打开源代码,重新调整USB驱动程序以允许双向通信。之后,您将需要设计自己的API,以允许应用程序通过USB发送消息。这将需要大量工作,因为当前的Android模型不支持它。


0

如果您连接设备的 Android 设备支持主机模式,则 USB API 可以提供帮助。但是,它是一种低级别的 API,使用 USB 请求缓冲区(URB)进行通信。我目前正在使用此 API 编写串行抽象层,但目前尚未准备好发布。

如果您的非 Android 设备能够充当主机,则如 Royston 所建议的那样,adb 路线可能最适合您,并且在 API 版本 12 之后的 API 捆绑包中有如何执行此操作的示例。


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