1.AOA协议概述
基于AOA协议实现Android终端USB通信方式称为配件模式。此模式下,与Android终端通信的另一端设备称为Android配件,两者都必须支持AOA协议。在USB通信过程中,Android终端充当USB从机,Android配件充当USB主机并为总线供电。Android配件需具有USBreset是什么意思主控制器功能并移植有AOA协议。配件内置USBEmbeddedHost端,可以为Android手机供电,并且识别Android手机,建立数据通道。使得配件成为一个简化版的PCHost端。?配件还必须提供500毫安在5V供电电源。
图什么叫民营企业1-1USB配件模式框图
2.AOA协议工作过程
图2-1AOA协议整体交互图
1.配件端等待手机连接。
2.手机接入配件。
3.配件通过USB驱动的控制通道(0通道,端点0)获取手机的vendorID与productID。
4.配件分析获取的vendorID是否为营业执照遗失0x18D1,以及productID是否为0x2D01,0x2D02,0x2D03或0x2D04。如果均符合,则说件现在手机已经是配件模式,可以按照配件模式的要求直接重新配置USB端点和接口。否则启动尝试进入配件模式流程。
5.确定手机已经进入配件模式,重新枚举USB设备,手机重新进行USB协商。
6.按照配件模式重新配置USB端点和接口,建立配件模式的数据通道。
图2-1启动配件模式交互流程
尝试启动配件模式交互流程:
1.配件发送序号51的USB请求报文,手机收到后查询自己的AOA协议版本,发送响应报文给配件。
2.配件校验协议版本号,目前为1或2,其他的均为不支持。
3.配件发送序号52的USB请求报文,通过Index字段携带配件自身信息,包括制造商,型号,版本,设备描述,序列号,URI等。手机根据这些信息启动响应的APP。
4.配件发送序号53的USB请求报文,切换USB模式,主要是根据切换vendorID和productID。
5.重新枚举USB设备,准备建立AOA数据通道。
参考:AndroidOpenAccessory协议分析与开发
3.AOA的设备握手过程
绝大多数Android设备,在缺省情况下都不挂载Accessory驱动;在Accessory与Android设备建立USB连接时;Accessory会通过握手协议查询该设备是否为Android设备且具有AOA支持,如果获得正确应答,Accessory会向Android设备发出切换到AOA模式的请求,Android设备会执行请求,将USB切换到AOA模式;在这个过程中,USB连接会出现一次逻辑插拔,USBHost一端会重新枚举设备。
在握手过程中,Accessory会向Android提供AOA约定的描述信息,其中有三个信息是Android系统用于绑定Accessory设备与App的;分别是:manufacturer、model、version。Android系统根据这三个字符串匹配相应的App。
如果系统内无任何App可以匹配Accessory设备发来的握手信息;则Android设备会弹出一个对话框,向用户提供Accessory设备发送过来的描述信息和URL信息,用户可以点击URL访问它指向的Web页面。
如果系统内有App可以匹配Accessory设备发来的握手信息;则Android会弹出一个对话框询问用户是否立刻启动该App;如果用户选择OK国产奶粉有哪些则启动该App;同时该对话框提供一个勾选框,勾选之后每次Accessory设备连接后会自动启动该App;应该要求用户勾选该对话框,否则App启动后向USBManager获取Accessory设备后可能因为Permission问题无法打开文件描述符建立通讯连接。
参考:
4.注意
1.PID是0x2D00保留给支持附件模式的Android设备。0x2D01保留用于支持附件模式以及Android调试桥(ADB)协议的设备,第二个接口为ADB并且具有两个批量端点。如果要在计算机上模拟附件,可以使用这些端点来调试附件应用程序。一般来说,不要使用此接口,除非附件在设备上实现传输到ADB。
0x2D00具有一个拥有两个批量端点的接口,用于输入和输出通信的。
0x2D01具有两个接口,每个接口具有两个批量端点,用于输入和输出通信。第一个接口处理标准通信,第二个接口处理ADB通信。要使用接口,请到第一个批量输入和输出端点,使用SET_CONFIGURATION(运动鞋商标大全0x09)设备请求将设备配置设置为1,然后使用端点进行通信。
2.AOA目前不支持同时进行的AOA和MTP(MediaTransferProtocol,媒体传输协议)连接。要从AOA切换到MTP,附件必须首先断开USB设备(物理上或电气上等效的方式),然后使用MTP重新连接。
AOAPID说明:
版本 | ProductID | 通信模式 | 说明 |
AOAv1 | 0x2D00 | accessory | 提供与Android应用程序通信的两个批量端点。 |
0x2D01 | accessory+adb | 用于附件开发时的调试。仅当用户在Android设备设置中启用了USB调试功能时才可用。 | |
AOAv2 | 0x2D02 | audio | 用于将音频从Android设备传输到附件。 |
0x2D03 | audio+adb | ||
0x2D04 | accessory+audio | ||
0x2D05 有功功率和无功功率 | accessory+audio+adb | ||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论