CN104572564B - 一种实现android移动设备与USB OTG主机通讯的方法 - Google Patents
一种实现android移动设备与USB OTG主机通讯的方法 Download PDFInfo
- Publication number
- CN104572564B CN104572564B CN201510016220.8A CN201510016220A CN104572564B CN 104572564 B CN104572564 B CN 104572564B CN 201510016220 A CN201510016220 A CN 201510016220A CN 104572564 B CN104572564 B CN 104572564B
- Authority
- CN
- China
- Prior art keywords
- android
- connection
- equipment
- mobile phone
- agreements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000004891 communication Methods 0.000 title claims abstract description 16
- 230000008569 process Effects 0.000 claims description 12
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 239000007787 solid Substances 0.000 claims 1
- 230000002093 peripheral effect Effects 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 241001315286 Damon Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4286—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种实现android移动设备与USB OTG主机通讯的方法,其通过合并Android Open Accessory Protocol协议和Android Debug Bridge接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。本方案能够覆盖市面上所有的安卓手机设备,并且也降低了对外设的电气化要求。
Description
技术领域
本发明涉及移动设备通讯技术,具体涉及android移动设备与USB OTG主机通讯的技术。
背景技术
由于移动市场的兴起,现在人们对手机的使用性和安全性需求正在变得越来越多样,一些专业的外部设备不仅可以利用手机的便携性提升其使用空间,更可以满足用户的安全性需要,其手机外设的市场前景十分广阔。随着手机的不断升级进步,外设与手机已经可以不需要通过pc来进行连接,而是可以直接进行有线和无线的连接,来实现通讯的目的。
android手机目前已经有支持作为OTG主设备的手机出现,但是从演化来看,以前的大部分手机受到电源的限制,还是只能支持手机作为OTG从设备,
在确定USB方案后,不难发现安卓的USB方案现存两种:
一,通过android系统的Android Debug Bridge调试接口,使用其ADB daemon的tcp forward功能,可以实现基于tcp socket的主从设备通信。
ADB方案的好处有:
1,ADB damon程序原生与安卓系统中,因此从理论上说。只要是安卓系统,均存在ADB程序,只要用户打开了调试接口,即可启动ADB daemon进程,此时外设即可通过tcpsocket与之建立通讯。
2,ADB于上层app之间也是通过tcp通讯,通讯相对比较简单。
但是ADB方案对于比较老版本(4.0以下)的支持比较好,对于4.2.2以上版本,无法稳定可靠的支持。为此安卓推出了secure adb来对主设备进行RSA签名,由于生成RSA秘钥对及进行RSA加密对硬件的性能要求显著,因此对于外设不易实现。
二、通过android 3.1版本提供的Android Open Accessory Protocol协议进行连接。AOA协议是android在3.1版本上引入的新的外设协议,3.1以上版本内置jar包支持此协议,对于2.3.6-3.0版本,可以提供add-on lib进行支持。
使用AOA方案的好处有:
1,AOA原生支持android3.1以上版本;
2,application API层提供usb.accessory API套件,编写app来管理标准外设变得非常容易;
3,可以对app进行xml-filter设置,当android系统检测到有AOA外设接入后,会自动搜索已经安装的app,如果匹配成功,可自动启动app;如果没有找到匹配,可以打开外设设置的URL,引导用户去网站下载相应的app。
由上可知,现有的ADB方案和AOA方案都只能够兼容相应版本的android系统移动设备,无法实现对所有android移动设备的支持。
发明内容
针对现有android移动设备与USB OTG主机之间通讯所存在的问题,本发明的目的在于提供一种能够兼容所有android移动设备的USB OTG主机通讯方案。
为了达到上述目的,本发明采用如下的技术方案:
一种实现android移动设备与USB OTG主机通讯的方法,所述方法在固件程序中合并Android Open Accessory Protocol协议和Android Debug Bridge接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。
在本方案的优选方案中,所述方法中在应用程序根据Android Open AccessoryProtocol协议和Android Debug Bridge接口协议内置形成支持两种连接协议的连接方式。
进一步的,所述固件程序连接USB OTG主机的过程如下:
(1)设备接入后,固件程序发起USB连接,枚举USB描述符;
(2)完成USB枚举后,发起AOA协议连接,尝试打开accessory mode模式,如果打开失败,延长reset时间,并重复尝试;
(3)在所有尝试失败以后,reset设备,然后通过ADB协议发起ADB连接,指导连接成功。
进一步的,所述应用程序连接USB OTG主机的过程如下:
(11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表,即accessory类列表,中包含有效的设备ID,可以直接通过ID进行通信;
(12)若List表为空,则建立socket server并监听端口,等待adbd的socket连接。
本方案通过固件对设备的判断,可以智能选择两种连接方式进行OTG连接并进行通讯,最大限度的兼容了android设备的多样性,并且由于android4.2设备需要进行RSA鉴权,需要极大的运算要求,故采用AOA协议可以规避鉴权操作,减少了对外界设备的要求。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面进一步阐述本发明。
本发明为了实现对安卓的支持最大化以及连接可靠性,本发明将AOA协议和ADB接口协议在固件程序中合并,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。
由此,该固件程序实现手机连接USB OTG设备的过程如下:
(a)设备插入后,开始进行USB设备枚举过程;
(b)枚举完成后,首先进行AOA协议连接;
(c)如果连接失败,设置reset时间,重启设备,进行最多3次尝试;
(d)若连接成功,开始以AOA协议进行通信;若不成功,则继续;
(e)开始ADB连接,发送host请求;
(f)若连接成功,以ADB协议开始通信;若不成功,则连接失败。
针对一般的手机应用程序(APP),基于上述的AOA协议和ADB接口协议合并的方案,在应用程序中内置形成支持两种连接协议的连接方式。
据此,应用程序连接USB OTG设备的过程如下:
(a)当满足AOA协议的设备插入手机,运行于手机上的android系统将自动识别并启动对应的应用,在APP中初始化部分,首先通过新建UsbAccessory对象与外设进行连接,如果连接成功,则通过Usb Accessory对象进行通信;
(b)如果连接不成功,则尝试ADB连接,通过ADB的转发功能,建立socket client端、端口4567,对server发起socket连接;若连接成功,则ADB通道建立,使用socket通信;
(c)若socket建立超时(如超过20秒),则协议不支持,返回连接失败。
基于上述两种方案,可以覆盖市面上所有的安卓手机设备,并且也降低了对外设的电气化要求。
在具体实现时,为了实现对安卓系列手机的全兼容,可选取MCU外接设备作为OTGmaster,手机作为从设备的方案。在连接时,包括固件程序连接和应用程序连接两种。
其中,固件程序连接USB OTG主机的过程如下:
(1)设备接入后,固件程序检测到设备插入信号之后立即发起USB连接,枚举USB描述符,具体包括设备描述符、配置描述符、接口描述符和端点描述符,这里的描述符指设备的信息特征。
(2)完成USB枚举后,发起AOA协议连接,尝试打开accessory mode模式,如果打开失败,延长reset时间,并重复尝试。
该步骤进行AOA协议连接的具体过程如下:
(21)首先判断手机是否处于accessory模式:如果是,则可以直接通信;如果不是,继续;
(22)发送getProtocol指令,获取硬件支持的版本信息;
(23)发送getInfo指令,获取硬件设备信息,如:manufacturer name、model name、description、version、URI、serial number等;
(24)发送startup指令,激活手机的accessory模式;
(25)激活完成以后,检查手机是否处于accessory模式,具体方式可以为:查看手机PID是否为0x2D00或者0x2D01,VID是否为googleID:0x18D1;
(26)尝试打开accessory mode模式,如果打开失败,延长reset时间,该reset时间是指USB总线复位时间,并重复尝试,转到步骤a。
(3)在所有尝试失败以后,reset设备,然后通过ADB协议发起ADB连接,指导连接成功。
该步骤在实现ADB连接时,由固件程序建立一个端口为4567的socket server来接受APP中client的连接请求,具体步骤如下:
(a)MCU先向手机发送host connect请求,手机如果回了connect device信号,则建立了ADB连接;
(b)然后主机打开一个4567的端口,手机端会回一个OK的信号;
(c)连接成功,等待client端connect请求。
基于上述方案,完成固件程序连接USB OTG主机后,运行于手机中的应用程序连接USB OTG主机的过程如下:
(11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表中包含有效的设备ID,可以直接通过ID进行通信。
该步骤中,获取accessory类列表时,由于com.android.usb.usbmanager包里有接口获取到的连接到手机的AOA协议的外设列表,此列表包含了当前连接到手机的所有AOA设备,获取到此列表,可以通过UsbAccessory对象对设备进行操作。
该步骤中,手机固件程序通过发送getProtocol命令,根据getProtocol命令的格式来获取到当前连接设备支持的AOA版本。
这里需要说明的,List表为前述通过usbmanager获取到的accessory类列表,其在app中表示为一个List列表。这里的设备ID为ProductID,一般为0x2D00或者0x2D01,即表示该设备已进入accessory模式;若进入accessory模式的设备可以通过usbAccessory对象中的instream和outstream成员对象进行流数据的输入输出。
(12)若List表为空,则建立socket server并监听端口,等待adbd的socket连接。
该步骤中,通过调用List.size()函数来确定List表是否为空,如果为0则表示空,此时说明没有AOA设备,下一步将通过ADB的socker方式来尝试连接。
其中,建立监听端口由APP代码完成,通过socket标准API建立一个4567的server,并监听是否有连接到端口4567的client请求,该请求由adbd发出。
这里的adbd为android debug bridge deamon,是安卓手机内置的调试驻守程序,其开机即启动并常驻内存中,负责对手机进行操作。
可见,本方案通过固件对设备的判断,可以智能选择两种连接方式进行OTG连接并进行通讯,最大限度的兼容了android设备的多样性;同时采用AOA协议可以规避鉴权操作,减少了对外界设备的要求。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (3)
1.一种实现android移动设备与USB OTG主机通讯的方法,其特征在于,所述方法在固件程序中合并Android Open Accessory Protocol协议和Android Debug Bridge接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接;基于该固件程序实现手机连接USB OTG设备的过程如下:
(a)设备插入后,开始进行USB设备枚举过程;
(b)枚举完成后,首先进行AOA协议连接;
(c)如果连接失败,设置reset时间,重启设备;
(d)若连接成功,开始以AOA协议进行通信;若不成功,则继续;
(e)开始ADB连接,发送host请求;
(f)若连接成功,以ADB协议开始通信;若不成功,则连接失败。
2.根据权利要求1所述的一种实现android移动设备与USB OTG主机通讯的方法,其特征在于,所述方法中在应用程序根据Android Open Accessory Protocol协议和AndroidDebug Bridge接口协议内置形成支持两种连接协议的连接方式。
3.根据权利要求2所述的一种实现android移动设备与USB OTG主机通讯的方法,其特征在于,所述应用程序连接USB OTG主机的过程如下:
(11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表,即accessory类列表,中包含有效的设备ID,可以直接通过ID进行通信;
(12)若List表为空,则建立socket server并监听端口,等待adbd的socket连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510016220.8A CN104572564B (zh) | 2015-01-13 | 2015-01-13 | 一种实现android移动设备与USB OTG主机通讯的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510016220.8A CN104572564B (zh) | 2015-01-13 | 2015-01-13 | 一种实现android移动设备与USB OTG主机通讯的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572564A CN104572564A (zh) | 2015-04-29 |
CN104572564B true CN104572564B (zh) | 2018-04-20 |
Family
ID=53088674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510016220.8A Active CN104572564B (zh) | 2015-01-13 | 2015-01-13 | 一种实现android移动设备与USB OTG主机通讯的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572564B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105182111B (zh) * | 2015-08-17 | 2018-09-28 | 上海斐讯数据通信技术有限公司 | 一种移动终端的性能测试方法及系统 |
CN105955666A (zh) * | 2016-04-29 | 2016-09-21 | 乐视控股(北京)有限公司 | 电子设备、向直连的另一电子设备提供数据的方法 |
CN106357607A (zh) * | 2016-07-20 | 2017-01-25 | 北京海誉动想科技股份有限公司 | 电子设备连接与安全验证、通信、通信监测方法及装置 |
KR101856930B1 (ko) * | 2016-08-29 | 2018-05-11 | 현대자동차주식회사 | 유에스비 액세서리의 유에스비 통신 제어 방법 |
CN108259652A (zh) * | 2016-12-28 | 2018-07-06 | 上海大唐移动通信设备有限公司 | 一种终端拨打语音视频测试的方法及装置 |
CN108733607B (zh) * | 2017-04-25 | 2022-04-01 | 中国移动通信集团公司 | 一种连接通信方法及设备 |
CN107483696B (zh) * | 2017-07-12 | 2019-11-22 | 武汉卡比特信息有限公司 | 一种手机与计算机类设备的通信方法及系统 |
CN107450947A (zh) * | 2017-07-26 | 2017-12-08 | 北京疯景科技有限公司 | 启动应用的方法及装置 |
CN110688161A (zh) * | 2018-07-06 | 2020-01-14 | 英研智能移动股份有限公司 | 周边硬件的操作方法与操作系统 |
TWI677789B (zh) * | 2018-07-06 | 2019-11-21 | 英研智能移動股份有限公司 | 周邊硬體的操作方法與操作系統 |
CN109150926A (zh) * | 2018-11-19 | 2019-01-04 | 炬星科技(深圳)有限公司 | 一种数据通信方法及人机交互系统 |
CN114936175B (zh) * | 2022-07-21 | 2022-10-04 | 飞天诚信科技股份有限公司 | 免插拔实现otg通讯的方法、装置、终端设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049403A (zh) * | 2013-01-11 | 2013-04-17 | 福建鑫诺通讯技术有限公司 | 嵌入式终端设备与手机进行通讯的方法 |
CN103970582A (zh) * | 2013-01-28 | 2014-08-06 | 联想(北京)有限公司 | Usb设备模拟方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1347623A1 (en) * | 2002-03-22 | 2003-09-24 | Nokia Corporation | Downloading of application software for an accessory device to a mobile terminal |
US20140351446A1 (en) * | 2013-05-21 | 2014-11-27 | Samsung Electronics Co., Ltd. | Electronic device using logical channels for communication |
CN103401997B (zh) * | 2013-07-15 | 2015-05-13 | 东软集团股份有限公司 | 车载终端与智能手机在usb连接下的数据传输方法及系统 |
-
2015
- 2015-01-13 CN CN201510016220.8A patent/CN104572564B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049403A (zh) * | 2013-01-11 | 2013-04-17 | 福建鑫诺通讯技术有限公司 | 嵌入式终端设备与手机进行通讯的方法 |
CN103970582A (zh) * | 2013-01-28 | 2014-08-06 | 联想(北京)有限公司 | Usb设备模拟方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104572564A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572564B (zh) | 一种实现android移动设备与USB OTG主机通讯的方法 | |
EP2840455B1 (en) | Method, apparatus and system for intelligently controlling device, and plug-and-play device | |
US8838073B2 (en) | Systems and methods for pairing bluetooth devices | |
CN103399761B (zh) | 固件烧录方法及其装置 | |
CN102915113B (zh) | 一种数据输入支持方法及装置 | |
CN107926075B (zh) | 支持异构环境下的数据通信的系统和方法 | |
CN103294464B (zh) | 便携终端中验证主机设备的操作系统的设备和方法 | |
CN102857915B (zh) | 电子设备、智能终端及与无线路由器的认证方法 | |
WO2018076969A1 (zh) | 软件升级方法、计算设备及通道控制设备 | |
CN111338673B (zh) | 设备调试方法、装置、电子设备及存储介质 | |
CN104283878A (zh) | 基于云服务的安全型移动终端及其访问云服务器的方法 | |
TWI463364B (zh) | 觸控裝置之外部操作系統與方法 | |
CN103618710A (zh) | 移动设备与计算设备之间的文件个性化处理方法及装置 | |
CN108733403B (zh) | 一种bios设置方法和装置 | |
CN107608700A (zh) | 一种fpga固件的更新方法、装置及介质 | |
CN103699481A (zh) | 一种代码调试方法及调试系统 | |
US20180206276A1 (en) | Bluetooth pairing system and operating method thereof | |
CN105141450A (zh) | 物联设备wifi模块配置方法及装置 | |
AU2013388030A1 (en) | Method, apparatus, and system for intelligently controlling device, and plug-and-play device | |
CN111680336B (zh) | 固件安全防护方法和装置、系统及设备 | |
CN101998691B (zh) | 一种数据传输的方法、系统和装置 | |
CN109189629B (zh) | 基于usb设备实现终端远程控制的方法、存储介质 | |
CN104182366A (zh) | 一种信息处理方法及电子设备 | |
US20140118121A1 (en) | Electronic device for controlling another electronic device | |
CN104536789A (zh) | 数据烧录方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |