一种实现android移动设备与USBOTG主机通讯的方法

文档序号:8258439阅读:1543来源:国知局
一种实现android移动设备与USB OTG主机通讯的方法
【技术领域】
[0001]本发明涉及移动设备通讯技术,具体涉及android移动设备与USB OTG主机通讯的技术。
【背景技术】
[0002]由于移动市场的兴起,现在人们对手机的使用性和安全性需求正在变得越来越多样,一些专业的外部设备不仅可以利用手机的便携性提升其使用空间,更可以满足用户的安全性需要,其手机外设的市场前景十分广阔。随着手机的不断升级进步,外设与手机已经可以不需要通过PC来进行连接,而是可以直接进行有线和无线的连接,来实现通讯的目的。
[0003]android手机目前已经有支持作为OTG主设备的手机出现,但是从演化来看,以前的大部分手机受到电源的限制,还是只能支持手机作为OTG从设备,
[0004]在确定USB方案后,不难发现安卓的USB方案现存两种:
[0005]一,通过 android 系统的 Android Debug Bridge 调试接口,使用其 ADB daemon 的tcp forward功能,可以实现基于tcp socket的主从设备通信。
[0006]ADB方案的好处有:
[0007]1,ADB damon程序原生与安卓系统中,因此从理论上说。只要是安卓系统,均存在ADB程序,只要用户打开了调试接口,即可启动ADB daemon进程,此时外设即可通过tcpsocket与之建立通讯。
[0008]2,ADB于上层app之间也是通过tcp通讯,通讯相对比较简单。
[0009]但是ADB方案对于比较老版本(4.0以下)的支持比较好,对于4.2.2以上版本,无法稳定可靠的支持。为此安卓推出了 secure adb来对主设备进行RSA签名,由于生成RSA秘钥对及进行RSA加密对硬件的性能要求显著,因此对于外设不易实现。
[0010]二、通过 android 3.1 版本提供的 Android Open Accessory Protocol 协议进行连接。AOA协议是android在3.1版本上引入的新的外设协议,3.1以上版本内置jar包支持此协议,对于2.3.6-3.0版本,可以提供add-on lib进行支持。
[0011]使用AOA方案的好处有:
[0012]1,AOA原生支持android3.1以上版本;
[0013]2,applicat1n API层提供usb.accessory API套件,编写app来管理标准外设变得非常容易;
[0014]3,可以对app进行xml-filter设置,当android系统检测到有AOA外设接入后,会自动搜索已经安装的app,如果匹配成功,可自动启动app ;如果没有找到匹配,可以打开外设设置的URL,引导用户去网站下载相应的app。
[0015]由上可知,现有的ADB方案和AOA方案都只能够兼容相应版本的android系统移动设备,无法实现对所有android移动设备的支持。

【发明内容】

[0016]针对现有android移动设备与USB OTG主机之间通讯所存在的问题,本发明的目的在于提供一种能够兼容所有android移动设备的USB OTG主机通讯方案。
[0017]为了达到上述目的,本发明采用如下的技术方案:
[0018]—种实现android移动设备与USB OTG主机通讯的方法,所述方法在固件程序中合并 Android Open Accessory Protocol 协议和 Android Debug Bridge 接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。
[0019]在本方案的优选方案中,所述方法中在应用程序根据Android Open AccessoryProtocol协议和Android Debug Bridge接口协议内置形成支持两种连接协议的连接方式。
[0020]进一步的,所述固件程序连接USB OTG主机的过程如下:
[0021](I)设备接入后,固件程序发起USB连接,枚举USB描述符;
[0022](2)完成USB枚举后,发起AOA协议连接,尝试打开accessory mode模式,如果打开失败,延长reset时间,并重复尝试;
[0023](3)在所有尝试失败以后,reset设备,然后通过ADB协议发起ADB连接,指导连接成功。
[0024]进一步的,所述应用程序连接USB OTG主机的过程如下:
[0025](11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表,即accessory类列表,中包含有效的设备ID,可以直接通过ID进行通信;
[0026](12)若List表为空,贝丨」建立socket server并监听端口,等待adbd的socket连接。
[0027]本方案通过固件对设备的判断,可以智能选择两种连接方式进行OTG连接并进行通讯,最大限度的兼容了 android设备的多样性,并且由于android4.2设备需要进行RSA鉴权,需要极大的运算要求,故采用AOA协议可以规避鉴权操作,减少了对外界设备的要求。
【具体实施方式】
[0028]为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面进一步阐述本发明。
[0029]本发明为了实现对安卓的支持最大化以及连接可靠性,本发明将AOA协议和ADB接口协议在固件程序中合并,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。
[0030]由此,该固件程序实现手机连接USB OTG设备的过程如下:
[0031](a)设备插入后,开始进行USB设备枚举过程;
[0032](b)枚举完成后,首先进行AOA协议连接;
[0033](c)如果连接失败,设置reset时间,重启设备,进行最多3次尝试;
[0034](d)若连接成功,开始以AOA协议进行通信;若不成功,则继续;
[0035](e)开始ADB连接,发送host请求;
[0036](f)若连接成功,以ADB协议开始通信;若不成功,则连接失败。
[0037]针对一般的手机应用程序(APP),基于上述的AOA协议和ADB接口协议合并的方案,在应用程序中内置形成支持两种连接协议的连接方式。
[0038]据此,应用程序连接USB OTG设备的过程如下:
[0039](a)当满足AOA协议的设备插入手机,运行于手机上的android系统将自动识别并启动对应的应用,在APP中初始化部分,首先通过新建UsbAccessory对象与外设进行连接,如果连接成功,则通过Usb Accessory对象进行通信;
[0040](b)如果连接不成功,则尝试ADB连接,通过ADB的转发功能,建立socket client端、端口 4567,对server发起socket连接;若连接成功,则ADB通道建立,使用socket通Is ;
[0041](c)若socket建立超时(如超过20秒),则协议不支持,返回连接失败。
[0042]基于上述两种方案,可以覆盖市面上所有的安卓手机设备,并且也降低了对外设的电气化要求。
[0043]在具体实现时,为了实现对安卓系列手机的全兼容,可选取MCU外接设备作为OTGmaster,手机作为从设备的方案。在连接时,包括固件程序连接和应用程序连接两种。
[0044]其中,固件程序连接USB
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1