安卓USB主机模式和附件模式

6
我正在尝试学习Android USB主机/附件连接。我了解到Android设备可以充当USB主机或USB附件,因此我创建了两个项目,一个是USB主机项目,另一个是USB附件项目。我将这些项目安装在两个不同的Android设备上。其中一个设备有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();
}

我有同样的问题... - Sudipta Som
2个回答

1
尝试这个 https://github.com/quandoo/android2android-accessory 即使我得到的配件列表为0,但在github项目中,他们首先从一个充当主机的Android设备向其他作为配件的设备发送了一些控制消息。发送控制消息后,我得到的配件列表就不为零了。

1
不确定是否相同或者更新,但是在这里找到了类似的项目:https://github.com/manishsharma004/android2android-accessory - epic

0
这是因为当您将附件连接到设备B时,充当US B主机的附件必须实现Android开放式附件协议(AOAP)。请参见通过USB连接。由于设备A(主机)没有实现AOAP,因此设备B将拒绝与设备A进行超过握手尝试的通信。

1
你的意思是说可以通过AOAP在两个Android设备之间进行通信吗?我的理解是,AOAP通信只能在支持AOAP的Android设备和支持AOAP的USB附件(如Arduino)之间进行。你能否请澄清一下? - Kozlov
1
@Kozlov 我的意思是,运行在 USB 附件模式下的 Android 设备只会与实现 AOAP 的 USB 主机通信。 - Luis

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