【问题标题】:Android USB Host Mode and Accessory ModeAndroid USB 主机模式和配件模式
【发布时间】:2013-06-10 07:46:07
【问题描述】:

我正在尝试学习 Android USB 主机/附件连接。我读过 android 设备可以充当 USB 主机或 USB 配件。因此,我创建了两个项目,其中一个是 USB 主机项目,另一个是 USB 附件项目。我将这些项目安装到两个不同的安卓设备上。其中一个有 USB 主机(设备 A)项目,另一个有 USB 附件(设备 B)项目。

我的问题是,我可以将 USB 主机项目连接到设备 B。我可以看到有关设备的所有信息。但在附件项目(设备 B)中,我看不到设备 A 的任何内容。

manager.getAccessoryList() 总是返回 null。我的usb配件项目代码在这里。

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

for (UsbAccessory accessory : manager.getAccessoryList()) {
    String list = " DESCRIPTION : " + accessory.getDescription() + " MODEL : " + accessory.getModel() + " MANUFACTURER : " + accessory.getManufacturer() + " SERIAL : " + accessory.getSerial();
    Toast.makeText(this, list, Toast.LENGTH_LONG).show();
}

【问题讨论】:

  • 我也有同样的问题...

标签: android usb host accessory


【解决方案1】:

试试这个https://github.com/quandoo/android2android-accessory

即使我将附件列表设为 0。 但是在 github 项目中,他们首先将一些控制消息从一个充当主机的 android 设备发送到另一个附件设备。 发送控制消息后,我得到的附件列表非零。

【讨论】:

【解决方案2】:

这是因为当您将配件连接到设备 B 时,充当 USB 主机的配件必须实现 Android 开放配件协议 (AOAP)。请参阅Connecting over USB. 由于设备 A(主机)没有实现 AOAP,设备 B 将拒绝与设备 A 进行握手尝试之外的通信。

【讨论】:

  • 你的意思是可以通过 AOAP 在两个 android 设备之间进行通信吗?我的理解是支持 AOAP 的 android 设备和支持 AOAP 的 arduino 等 USB 配件之间可以进行 AOAP 通信。你能澄清一下吗?
  • @Kozlov 我的意思是在 USB 附件模式下运行的 Android 设备只会与实现 AOAP 的 USB 主机通信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多