[go: up one dir, main page]

CN104572564B - 一种实现android移动设备与USB OTG主机通讯的方法 - Google Patents

一种实现android移动设备与USB OTG主机通讯的方法 Download PDF

Info

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
Application number
CN201510016220.8A
Other languages
English (en)
Other versions
CN104572564A (zh
Inventor
胡永刚
沈勇坚
王翔平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dynamicode Co Ltd
Original Assignee
Dynamicode Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dynamicode Co Ltd filed Critical Dynamicode Co Ltd
Priority to CN201510016220.8A priority Critical patent/CN104572564B/zh
Publication of CN104572564A publication Critical patent/CN104572564A/zh
Application granted granted Critical
Publication of CN104572564B publication Critical patent/CN104572564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4286Bus 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主机通讯的方法
技术领域
本发明涉及移动设备通讯技术,具体涉及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连接。
CN201510016220.8A 2015-01-13 2015-01-13 一种实现android移动设备与USB OTG主机通讯的方法 Active CN104572564B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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连接下的数据传输方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
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