Android开放附件协议和MTP

时间:2017-04-28 18:12:03

标签: android usb mtp android-open-accessory

我正在开发一个项目,我们的嵌入式系统支持Android开放附件协议和USB MTP。我们遇到了一个问题,当使用Android设备建立AOAP会话时,USB MTP无法正常工作。我基本上迷失了,我不知道是否有可能同时工作。 任何人都可以告诉我,如果USB MTP和AOA会话都可以激活吗? 另外,我正在寻找AOA 2.0规范?我们目前有来自第三方的AOA堆栈。 我在哪里可以获得AOA规范? 谢谢。

1 个答案:

答案 0 :(得分:1)

由于内部USB协议结构,不可能同时有两个USB会话。像Android手机这样的USB设备可以实现多个设备类,如大容量存储类,RNDIS主机(CDC类),....通常这些设备类是在接口级上定义的。如果你使用linux检查lsusb -v的输出,看看哪些接口可用,哪些接口是活动的。

在USB协议中,只有一个接口可以处于活动状态(afaik!)。这就是为什么你不能访问手机内存(海量存储类)或使用ADB(ADB接口)进行网络共享(CDC类,在接口级别定义),你必须先切换接口。你可以做的是通过代码切换接口然后主机必须卸载内核模块/驱动程序并加载新的内核模块/驱动程序,即如果你从MTP USB接口切换到AOAP USB接口。

一般来说,USB协议中的任何通信都是由主机设备(在这种情况下为附件)启动的,如果你在主机必须做出反应的设备上切换USB接口并加载适合的内核模块/驱动程序,请参阅{{3 }}。也许检查附件上加载了哪些内核模块/驱动程序